mcpField
B
blender-hair-grooming

blender-hair-grooming

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

blender-hair-grooming について

アーティスト向けのBlenderヘアグルーミングスキルです。ストランドのヘア、ファー、ゲーム向けヘアカードを作成できます。モディファイアで設定を編集でき、カーブ数や長さ、根元の接地ギャップを報告します。

主な機能

  1. 01ガイドと補間ヘアの生成
  2. 02束化、カール、垂れ、ノイズのモディファイア
  3. 03ゲーム用ヘアカードとテクスチャアトラスの作成
  4. 04評価済みカーブをAlembicまたはUSDで書き出し

活用シーン

  1. 01頂点グループマスクで頭髪をグルーミング
  2. 02ひげや体毛のグルームを作成
  3. 03ゲームアセット用のヘアカードアトラスを作成
  4. 04UE GroomまたはHoudini向けにストランドを出力

インストール

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

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

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

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

詳細

ヘアグルーミング

実行モデルについては blender-core を参照してください。ヘアの物理シミュレーションの詳細は blender-simulation、ルックデブについては blender-lighting-lookdev を参照してください。

それぞれを1回ずつ呼び出す

scripts/groom.py -- --surface Head --mask Scalp --length 0.15 --children 150000 --clump 0.5
scripts/groom.py -- --surface Head --mask Beard --length 0.02 --droop 0.2 --curl 0.004 --melanin 0.9 --name Beard
scripts/groom.py -- --surface Body --length 0.025 --droop 0.3 --clump 0.3 --name Fur
scripts/groom.py -- --cards Hair --card-count 150 --atlas-res 2048 --out //textures      # game hair cards

プロのグルーミング方法

  1. まずサーフェスを整える:頭皮は、UV(ヘアはUVに沿って付着します)を持つメッシュ(または頭部そのもの)で、ヘアが生える場所にペイントした頂点グループを備えています。このグループが密度マスクになるため、エッジをソフトにすると自然な生え際になります。
  2. ガイドから子ヘアへ:数百から数千本のガイドで形を作り、補間した数千本の子ヘアでボリュームを出します。スタイリングするのはガイドで、子ヘアは編集しません。
  3. 層ごとに形を作る:長さ、次に束化(毛束がまとまって房になります)、次にカール/ウェーブ、次に縮れ/ノイズ、最後にプロファイル(細い毛先)の順に設定します。それぞれを個別のモディファイアにして、切り替えられるようにします。
  4. ヒーローアセットには手作業でコーミングします:Curves Sculpt モードのブラシ(Comb、Add、Puff、Pinch、Grow/Shrink、Smooth、Slide、Density、Delete、Pull Tips)を使います。プロシージャルな垂れ下がりは、説得力のあるベースにはなりますが、ヘアスタイルにはなりません。
  5. 最終的なライトの下でルックデブを行います。ヘアの見た目を決めるのは主にスペキュラーと奥行きです(束がハイライトを捉えます)。アルベドではありません。

groom.py

  • 5.2 の Add Empty Hair(object.curves_empty_hair_add)を実行します。サーフェスを親に設定し、surface/surface_uv_map を設定して、サーフェスにCapture Rest Geometryを追加し、ノードHair Dynamicsモディファイアを追加します(最後に固定、実験的機能)。その後、同梱アセットを次の順で積み重ねます:Generate(--density ガイド/m²)→ Interpolate(--children/m²、--viewport ビューポート内の割合)→ Clump → Curl → Displace + Shrinkwrap(--droop × 長さ分だけ下げ、サーフェスから 2 mm 上に維持)→ Noise → Set Hair Curve Profile(--radius、毛先のテーパー)。
  • **Clump/Curl のガイド間距離 = --length の 10% です。**アセットのデフォルト値である 0.1 m では、頭全体が数個の房に潰れてしまいます。
  • 各アセットはライブ入力を持つモディファイアとして残るため、そこで調整できます。名前による入力指定:getattr(md.properties.inputs, identifier).value。頂点グループマスクには .type = "ATTRIBUTE"、.attribute_name を使います。
  • カーブ数、平均長さ、サーフェスからの最大ルート間隔(約 0 である必要があります)、モディファイアスタックを報告します。バックグラウンドモードで評価される数には、ビューポートの量を使います。

数値

値
人間の頭皮約 100–150k 本のヘア、約 200/cm²。CG:レンダリングする毛束 30k–150k 本、ガイド 300–3000 本
毛束の半径実際は 0.03–0.05 mm。0.05 mm(--radius 0.00005)を使い、毛束の本数が少ない場合は太くします
メラニン(Principled Hair、Chiang)黒 1.0 · ダークブラウン 0.8 · ブラウン 0.65 · ライトブラウン 0.45 · ブロンド 0.25 · プラチナ 0.1。赤毛:0.5 + 赤み 0.9。白髪:0 + 色味
粗さ0.25–0.35(光沢あり)… 0.5(乾燥)。半径方向の粗さ 0.3
ファー長さ 1–5 cm、密度 200k–2M/m²、束化は弱め
HUANG(4.0 以降)は楕円形の断面をモデル化するため、クローズアップに適しています。CHIANG がリファレンスのデフォルトです。

ゲーム用ヘアカード(--cards HAIR)

  • 評価済みグルームから、よく分散した --card-count 本の毛束を選びます(最遠点サンプリング)。それぞれに沿ってリボンを作成します:--card-width m、毛先に向けて幅を 30% まで絞り、サーフェス上に平らに配置します(側面 = 接線 × サーフェス法線)。UV の v は根元 0 → 毛先 1 で、カードごとにアトラスの列を1つ使います(--atlas-columns)。
  • 平坦な毛束から Cycles でアトラスをレンダリングします:T_<name>_BC(根元を暗くし、アルファにカバレッジを格納、Standard ビュー)、および T_<name>_RootTip と T_<name>_ID(Raw、リニアデータ)。カードのマテリアルでは Dithered アルファを使い、バックフェースカリングは無効にします。
  • プロは頭皮から外側へカードを重ねます:頭皮を隠すための、密度が高く幅広で不透明なカード、中間レイヤー、そして最上部の細い浮き毛カードです。予算の目安:ヒーローアセットは 20k–60k トライアングル、NPC は 5k–15k です。カードは平面のままにせず、S 字または C 字に曲げ、あらゆる角度から確認します。エンジンではアルファテスト/ディザリング + 深度プリパスを使用し、暗色化/AO には root-tip、毛束ごとの変化には ID を使います。異方性スペキュラー用に、V に沿ったタンジェント(フロー)マップを追加します。

グルームのエクスポート

UE Groom/Houdini 用のストランドヘア:Alembic(wm.alembic_export)または USD(wm.usd_export(export_curves=True))。どちらも評価済みのカーブを書き出します(実測:246/246 カーブが往復処理されました)。ターゲットがガイドのみを必要とする場合は、最初にモディファイアースタックをベイクしてください。

注意点

  • サーフェスに UV がないと、Generate のアタッチ先がありません。グルーミングの前に UV を追加してください。
  • グルーミング後にサーフェスのトポロジーを変更すると、アタッチメントが壊れます。最後にグルーミングするか、再実行してください。
  • スケール:頭部のスケールを適用してください。長さと密度の単位はワールドメートルです。
  • ビューポート:頭部全体では --viewport を 0.2 以下にしてください。最終的なストランド数はレンダーでのみ表示されます。
  • Hair Dynamics は再生中にシミュレーションを行います。フレーム 1 の静止画では、そのまま通過します。アニメーションをレンダーする前にベイクしてください(blender-simulation)。

コメント