mcpField
B
blender-clothing

blender-clothing

github.com/el4cteoクリエイティブ・メディア1.1k281 回インストール今日更新
リポジトリ

blender-clothing について

blender-clothingは、ゲームアセット制作者向けのBlenderスキルで、リグ付き衣服メッシュの生成と検査を行います。スクリプトで体形状から衣服を作り、ウェイト、布シミュレーション、シェイプキー、貫通チェックを扱います。

主な機能

  1. 01身体領域から衣服を生成
  2. 02リグウェイトの転送と整理
  3. 03厚み付けと布シミュレーション
  4. 04身体に対応するシェイプキーのベイク
  5. 05衣服の貫通を検査

活用シーン

  1. 01フィットしたシャツ、パンツ、鎧の作成
  2. 02キャラクター用の垂れ下がる衣服の制作
  3. 03書き出し用の重ね着の準備
  4. 04ポーズ時の衣服の適合確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-clothing

インストール後、Claude Code で/blender-clothingを入力して読み込まれたか確認します。

同梱ファイルscripts/_bpyx.pyscripts/garment.py

詳細

衣類

実行モデルは blender-core にあります。リグとウェイトは blender-character-rigging に、従来型のクロス設定は blender-simulation に、Roblox のレイヤード衣類ケージは blender-export-pipelines にあります(references/roblox.md)。

それぞれを 1 回呼び出す

scripts/garment.py -- --body Body --group Torso --name Shirt --hide-body
scripts/garment.py -- --body Body --zmin 0.45 --zmax 1.05 --name Pants --offset 0.01 --drape 40 --morphs
scripts/garment.py -- --body Body --group Torso --name Armor --offset 0.02 --thickness 0.008
scripts/garment.py -- --check Shirt --body Body          # pose the rig first: checks the current pose

プロがゲーム用衣類を作る方法

  1. 形状:体にフィットする衣類はボディから作成(抽出+オフセット)し、ゆったりした衣類はクロスシミュレーションで縫い合わせた平面パターン(Marvelous Designer または縫合スプリングを使った Blender のクロス)から作成します。ボディの レストポーズ(A/T)でシミュレーションします。
  2. ゲーム用メッシュ:高解像度またはシミュレーション結果を、関節部分にループを設けた整った均一な四角形ポリゴンにリトポロジーします(肘、膝、肩には 3 ループ)。その後、UV 展開します。折り目を法線マップにベイクし(blender-texture-baking)、ローポリメッシュを軽量に保ちます。
  3. スキニング:ボディからウェイトをコピーし(同じボーン、同じインフルエンス)、整理します(4 つに制限し、正規化して、0.001 未満を除去)。その後、ゆったりした部分(スカート、コート)のみ、より滑らかなウェイトにブレンドし、それらの部分に追加ボーンを加えます。
  4. 覆われる部分を隠す:衣類の下のボディ面を削除して(トライアングル数を節約し、突き抜けを防止)、または衣装ごとにマスクします。袖口や襟の下には、皮膚のリングを 1 つ残します。
  5. 動作中に確認する:負荷のかかるポーズ(blender-character-rigging の stress_poses.py)を使い、その後、それぞれで --check を実行します。オフセットを緩める、該当部分のボディを滑らかにする、ウェイトを調整する、または隠すことで修正します。

garment.py

  • 領域:--group(ボディ頂点グループ、ウェイト > 0.5)またはワールド座標の --zmin/--zmax 帯を指定します。面はワールド空間でコピーされ、頂点法線に沿って --offset 分だけ押し出されます(フィットしたコットンは 5~10 mm、ジャケットは 10~20 mm、アーマーは 15~30 mm)。その後、Solidify が --thickness を追加して(布地は 2~4 mm、革/アーマーは 5~10 mm)、外側に広げます。UV はボディから引き継がれます。
  • ウェイト:Data Transfer(POLYINTERP_NEAREST、名前による全グループ)が適用され、--max-influences の数に制限したうえで、正規化および整理されます。ボディの Armature モディファイアが追加され、リグの子として設定されます。
  • --hide-body:Hidden_<name> 頂点グループ(領域を 1 リング分縮小)と、ボディ上の反転した Mask モディファイアを使います。着せ替え可能な衣装ではマスクを切り替えます。エクスポート時は、代わりにボディのコピーから該当する面を削除します。
  • --drape N:従来型クロス(コットン風:質量 0.15、張力 15、曲げ 0.5、品質 8)を使います。上部 8% をピン留めし、ボディとの衝突距離を 3 mm に設定して、N フレーム静置した後、結果を適用します。これにより、ゆったりした部分に重力による折り目ができます。30~60 フレームを使用します。
  • --morphs:ボディの各シェイプキーに対して、同じ名前の衣類シェイプキーを作成します。レストポーズで Surface Deform をバインドし、各モーフのシェイプキーとして適用します。エンジンではボディと衣類のキーを連動させます(太さ/細さ、筋肉、呼吸)。計測結果:ボディを 30% モーフすると 346 頂点が突き抜けますが、対応する衣類キーを使うと 0 になります。
  • 突き抜けチェック(各ビルドの最後にも実行):ボディの各頂点法線に沿ってレイを飛ばします。衣類の内向き方向で外向き方向より先に当たる場合(または 0.5 mm 未満しか離れていない場合)、突き抜けと判定します。0.1 m 以内に衣類が当たらない頂点は覆われていないため、無視されます。covered_verts、poke_verts、poke_max_m を報告し、評価済みポーズを使用して、ボディのマスクを考慮します。

レイヤード衣類

  • 肌から外側へ順に配置します:下着/ベース → シャツ → ベスト → ジャケット → アーマー。各レイヤーはその下のレイヤーからオフセットします(シャツの上にベストを作るには garment.py --body Shirt を実行します)。ウェイトは下のレイヤーではなくボディからコピーします。
  • 動作中のレイヤー間の貫通は、通常、ウェイトの不一致が原因です。すべてのレイヤーを同じボディからコピーすれば、同じように動かせます。
  • Roblox のレイヤード衣類には、Roblox のテンプレートケージから作成した <Name>_InnerCage と <Name>_OuterCage が必要です(頂点順と UV は同じにします)。他のエンジン(UE Mutable/Unity)では、シェイプキーをブレンドするか、ボディを隠すマスクを使います。原則は同じです。

注意事項

  • shape_key_add()は、(計測した)値1.0でキーを作成します。Pythonからモーフを作成する場合は、.value = 0に設定してください。
  • サーフェス変形はモーフ専用です。アーマチュアモディファイアーと併用したままにすると、ポーズが二重に適用されます。--morphsを指定すると、キーのベイク後に削除されます。
  • ビルドする前に、ボディのスケールを適用してください。オフセットと厚さの単位はメートルです。
  • クロスシミュレーションでは、適度な解像度のボディ衝突メッシュが必要です。ボディの頂点数が5万を超える場合は、衝突用プロキシをデシメートしてください。
  • 最終的な衣服に対してblender-asset-qaを実行し(ボディとのZファイティング、浮いているパーツ、法線を確認)、トライアングル数がblender-game-optimizationの予算内であることを確認してください。

コメント