blender-clothing について
blender-clothingは、ゲームアセット制作者向けのBlenderスキルで、リグ付き衣服メッシュの生成と検査を行います。スクリプトで体形状から衣服を作り、ウェイト、布シミュレーション、シェイプキー、貫通チェックを扱います。
主な機能
- 01身体領域から衣服を生成
- 02リグウェイトの転送と整理
- 03厚み付けと布シミュレーション
- 04身体に対応するシェイプキーのベイク
- 05衣服の貫通を検査
活用シーン
- 01フィットしたシャツ、パンツ、鎧の作成
- 02キャラクター用の垂れ下がる衣服の制作
- 03書き出し用の重ね着の準備
- 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
プロがゲーム用衣類を作る方法
- 形状:体にフィットする衣類はボディから作成(抽出+オフセット)し、ゆったりした衣類はクロスシミュレーションで縫い合わせた平面パターン(Marvelous Designer または縫合スプリングを使った Blender のクロス)から作成します。ボディの レストポーズ(A/T)でシミュレーションします。
- ゲーム用メッシュ:高解像度またはシミュレーション結果を、関節部分にループを設けた整った均一な四角形ポリゴンにリトポロジーします(肘、膝、肩には 3 ループ)。その後、UV 展開します。折り目を法線マップにベイクし(
blender-texture-baking)、ローポリメッシュを軽量に保ちます。 - スキニング:ボディからウェイトをコピーし(同じボーン、同じインフルエンス)、整理します(4 つに制限し、正規化して、0.001 未満を除去)。その後、ゆったりした部分(スカート、コート)のみ、より滑らかなウェイトにブレンドし、それらの部分に追加ボーンを加えます。
- 覆われる部分を隠す:衣類の下のボディ面を削除して(トライアングル数を節約し、突き抜けを防止)、または衣装ごとにマスクします。袖口や襟の下には、皮膚のリングを 1 つ残します。
- 動作中に確認する:負荷のかかるポーズ(
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の予算内であることを確認してください。
コメント
Markdown 対応