mcpField
S
scenario-blender-texturing-shading

scenario-blender-texturing-shading

github.com/scenario-labsクリエイティブ・メディア1.2k476 回インストール1 日前に更新
リポジトリ

scenario-blender-texturing-shading について

写実的またはスタイライズドなマテリアルを作るアーティスト向けのBlender 5.2テクスチャリング・シェーディングスキルです。ノードツールでマスクを重ねた効果を作り、ベイク前にEEVEEとCyclesで確認できます。

主な機能

  1. 01テクスチャセットからPBRマテリアルを作成
  2. 02レイヤーマスクによる摩耗や汚れ
  3. 03プロシージャルおよび手描きマテリアル
  4. 04キャラクターの肌、目、髪のシェーディング
  5. 05マテリアル監査とレンダープレビュー

活用シーン

  1. 01小道具にエッジ摩耗や汚れを加える
  2. 02スタイライズドな肌や目のマテリアルを作る
  3. 03異なる照明で粗さと凹凸を確認する
  4. 04書き出し向けにプロシージャル素材をベイクする

インストール

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

$npx skills add https://github.com/scenario-labs/skills --skill scenario-blender-texturing-shading

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
critique.md
expert-notes.md
procedures.md
sources.md
scripts/
bx_materials.py

詳細

テクスチャリングとシェーディング(Blender 5.2)

エキスパートによるシェーディングでは、レイヤー化したマスクで物理的に妥当な値を設定します。クリーンなベース(スキャンした素材またはフラットカラー)に、コントラストの強い白黒マスクを重ねて、カラー、ラフネス、高さ、サブサーフェスを配置します。これらはすべてノードで編集できます。両方のエンジンで適切な照明の下で値を評価し、最後に移植性のためのベイクを行います。ここに記載された関連スキルが利用可能なスキルにない場合は、ユーザーにインストールを依頼してください(npx skills add scenario-labs/skills --skill <name>)。無人で作業する場合は、ツールのスキーマに基づいて進め、不足している点を明記してください。

必須の背景知識: scenario-blender-expert(実行チャンネル、レビューの反復、5.2 API の変更点)。 マップのベイク:scenario-blender-uv-baking。ライティングと最終レンダー: scenario-blender-lighting-rendering。

ツールキット:scripts/bx_materials.py(ビルダー、ヘッドレスペイント、チェック機能。 tests/code/blender-texturing-shading/ でテスト済み)。 sys.path.append("<this skill>/scripts"); import bx_materials as M。

基本方針(エキスパートならではの違い)

  • データマップは Non-Color、「見栄えではなく、正しい値を使う」(Price)。ベースカラーとエミッションだけが sRGB です。
  • 法線マップとディスプレイスメントを併用せず、どちらか一方にする(Price、Cycles リードの Brecht も確認済み):どちらも同じ凹凸を表現します。高さを組み合わせる場合や、実際に変位させる場合はディスプレイスメントを使います。エクスポートや 8-bit での安全性を重視する場合は法線マップを使います。
  • ペイントするのはカラーではなくマスク。 Kaspar と Price は、各エフェクトをグレースケールマスクとして作成し、Mix または HSV の Factor に入力します。カラーは A/B 入力側に設定します。マスクがほとんど見えない場合は、コントラストを付ける必要があります(Color Ramp のストップを内側に寄せます)。同じマスクでラフネス、高さ、SSS を制御します。
  • リアリズムにはスキャン素材とマスク、スタイライズにはプロシージャル(Price 対 Kaspar、Ryan King)。Kaspar は写真をパターンだけになるよう加工(ぼかしとグレイン抽出)し、グランジを自分で加えます。また、Cycles の速度向上ではなく、移植性(エクスポート、EEVEE の読み込み時間)のために最後にベイクします。
  • 肌と髪のマイクロディテールはバンプではなくラフネスに加える(Kaspar)。ラフネスはマップの接続を外すのではなく、HSV Value で調整します(Price)。Specular は 0.5 のままにします。Bump Distance はマップの 0..1 の実際の高さです。Strength ではなく Distance を小さくします(Kaspar)。
  • 正直に評価する: Standard ビュー、ニュートラルなミドルグレーの背景、ラフネスを確認するための黒い Base Color、強いバックライト、下からのライトを使います(Kaspar)。凹凸には斜めからのライトを使います(Price)。手描きのアルベドにはライティングなしの表示を使います(Abbitt)。反復作業には EEVEE、正確な評価には Cycles を使い、両者の見え方を一致させます(Kaspar)。
  • SSS は解剖学的な形状に合わせる(Kaspar):耳、鼻、まぶた、唇、指先では強く、骨の上では弱くします。白黒マスクを使い、Map Range で値を設定します。
  • Bevel、AO、Pointiness、Random Per Island は Cycles 専用で、Bevel/AO は確率的です[追加、計測済み]:EEVEE では Bevel のエッジが表示されません。しきい値を適用したライブマスクでは、サンプル数にかかわらず 17~18% の部分的な金属値になります。しきい値を適用する前にベイクするか、頂点の曲率を使用してください。

まず決めること

入力変更点指定がない場合のデフォルト
ターゲット:Cycles 静止画、EEVEE、ゲームエンジンCycles 専用ノードをライブで使うかベイクするか、AO をアルベド(レンダー)に含めるか ORM(ゲーム)にするかCycles の最終出力、EEVEE との比較を並べて表示
スタイル:リアルまたは様式化スキャンしたセットと汚れを使うか、プロシージャルまたは手描きのライティングを使うか控えめな様式化(Kaspar)
UV と変形UV 画像、ボックス投影、Object プロシージャルのいずれを使うか剛体で UV なし:ボックス投影、変形するもの:UV のみ
スケールタイルサイズ、バンプ/ディスプレイスメントのメートル単位実寸メートル、スケール適用(すべての専門家)
テクセル予算、エクスポート目立つペイント用に 2K~4K、大きなタイリング面用に 4K~8K目立つプロップは 2K、glTF ORM、OpenGL 法線

ワークフロー

  1. パーツごとのベース。 接頭辞付きの素材を用意し、プレースホルダーを削除して、diffuse_colorを設定します。値はディフューズカラーのパスで選びます(マットキャップではKasparの肌が白くなりすぎたため)。スケールを適用します。GATE: M.value_report(objs)で問題がないことを確認します。
  2. ベースマテリアル。 次のように設定します:M.pbr_from_textures(mat, M.find_texture_set(dir), uv_map=...):色空間は役割に応じて指定し、AOは係数1で乗算します(Price:キャビティシャドウを復元します。これはフラッシュ撮影で消えてしまう影です。ゲームではao_mode="gltf"を指定します)。バンプはノーマルマップがない場合にのみ使用します。height_as="displacement"を指定すると、ノーマルマップが削除され、補間がCubicに設定され、DisplacementとBumpが追加されます。PoliigonではScaleを0.2に設定します(範囲は20 cm固定です)。Simpleサブディビジョンを追加して、スムーズシェーディングを適用します。UVタイルのサイズはセットの実寸に合わせます。剛体でUVがない場合は、projection="BOX"を指定します。プロシージャルでは、オブジェクト座標を使用します(変形するメッシュではUVを使用)。NoiseのDetailは最大でも5にします(レベルごとにコストが2倍になります。Price)。GATE:M.audit_material(mat, obj)でエラーがないことを確認します。
  3. マスク。 Kasparのルールは、マスクの周波数を頂点密度に合わせることです。広く柔らかいマスクには頂点カラーを使用します(Priceの環境も同様です。タイリングUVでは画像のストロークが繰り返され、レイアウトが変化します)。細部や書き出し用のディテールには画像を、裾にはUVバンドを使用します。ヘッドレスでは、M.mask_from_points、M.write_vertex_values、M.smooth_attribute、M.curvature_attribute、M.TexelMapとM.projectを使用します。Priceのカラー焼き込み:コントラストを調整した高さマップ(B)で柔らかいマスク(A)を焼き込むと、レンガに沿って、または目地に入り込むようにマスクが分割されます(手順P18)。GATE:各マスクをエミッションとしてレンダリングします。
  4. レイヤー。 M.add_wear(mat, edge_color=..., edge_roughness=..., edge_metallic=1)を追加すると、変化、キャビティや汚れ、欠けたエッジが加わります。ブレンドモード:Multiplyは暗くします(汚れ、カビ)。Screenは明るくします(白華、ハイライト。Addでは1を超えます)。剥離には高さチェーンでSubtractを使用します(Price)。チェーンの順序で経年が決まります(汚れより前にデカールを置くと、古く見えます)。デカール:AlphaをFactorに接続し、ExtensionをClipに設定します(M.add_decal)。GATE: M.preview(objs, out, rigs=("studio", "roughness")):効果が形状や水の流れに沿い、均一にならず、繰り返しパターンが目立たないことを確認します。
  5. キャラクター固有の設定。 M.stylized_skin(mat, obj=body)(マスクはcol_brighter/col_darker/col_lips/col_sss/col_rough)。各眼球オブジェクトにM.stylized_eyeを適用します(原点は眼球の中心)。さらにM.cornea_materialを設定し、cornea.visible_shadow = Falseとします。髪の光沢:ストランドに沿ったUVマップにタンジェントを設定し、異方性を使用します(Cyclesのみ)。GATE:rigs=("backlit",)で確認し、耳、鼻孔、唇、指に赤い光が見え、正面から見たときに蝋のようにならず、強膜がオフホワイトであることを確認します。
  6. スタイライズされた手描きのライティング(Abbitt):上部を明るく、下部を暗くし、くぼみにMultiply、手足の先端にScreenを適用します。ヘッドレスでは、曲率属性からM.painted_light(mat, obj)を使ってEmitをベイクし、rigs=("unlit",)で確認します。
  7. マスクでは配置できない箇所のペイント。 GUI:ブラシはアセットです(Paint Hard/Soft、Airbrush、Blur、Smear、Fill、Mask)。ファクトリーの5.2セッションでは、ブラシと統一カラーを設定するまで黒くペイントされます。ストロークは画面から投影されるため、表面に向けます(Abbitt)。消しゴムにはアルファチャンネルが必要です。にじみは8~12 pxに設定します(Kaspar、Abbitt)。M.gui_texture_stroke()を使用します。これにより再描画が強制されます(投影ペイントでは、前回の描画のデプスバッファが遮蔽物として使われます。ある実行ではセットアップ呼び出しで発行したストロークが162テクセルしか塗られず、別の実行では約14,000テクセルが塗られ、全面をカバーしました)。さらに、ダブを再サンプリングします。ヘッドレスでは、M.TexelMapとM.paint_strokeを使い、シームも含めてワールド距離に基づいてペイントします。その後、M.dilateを実行し、M.save_imageで保存します(スクリプトでは画像は.blendに保存されません)。GATE:シームをまたぐ視点からレンダリングします。
  8. ルック開発の確認とベイク。 M.preview(EEVEEとCycles、studio、backlit、roughness)、M.value_report、ラベル付きフレームとノードグループを使用します(Kaspar、Price)。プロシージャルなチャンネルはEmissionでベイクし、30サンプル以上を使用します。マップから再構築して検証します(scenario-blender-uv-baking)。

数値

値数値出典
誘電体のアルベド/金属の反射率sRGB で約 30~240/180~255;金属度は 0 または 1範囲[追加];金属度を二値にする設定:Ryan King、Price
肌の粗さ0.68~0.72、粗いゾーンは 0.72~1、唇と口元は約 0.4Kaspar
毛穴Voronoi Smooth F1 のスケールは 100 と 200、ノイズの混合は 0.2~0.25Kaspar、本人の UV 上
肌の SSS スケール(5.2)0.005~0.04 m0.33 m の頭部で測定;Kaspar の v1 の 0.02~0.15 は 5.2 では蝋のような質感になる
バンプ距離は約 0.001、布地の強さは 0.1~0.2Kaspar
ディスプレイスメントスケール 0.2(Poliigon)、中間レベル 0.5、Cubic、16-bit ソースPrice
レンガ壁の粗さ約 0.7Price
色の調整色相は 0.5 を中心にプラスマイナス 0.04 の範囲Price
Noise Detail5 以下Price
エッジ摩耗ベベルの半径1 m の木箱で 0.04測定値
塗料のにじみ/アイランドの余白8~12 px/0.01~0.05Kaspar、Abbitt
塗装した高さ2K、32-bit float、ベース 0.5、Non-ColorKaspar;ベースを 0.5 のグレーにする設定については Ryan King も参照
ベイクサンプル数最低 30Kaspar

品質ゲート

測定可能な項目:

  • M.audit_material(mat, obj):役割ごとの色空間、画像を Normal に直接接続していないこと、明示的な UV マップ、Bump Distance が 0.05 以下であること、Add Shader や法線の直接加算がないこと、Emission Strength が設定されていること、 グレーの定数金属度がないこと、法線マップとディスプレイスメントの併用を警告すること、Cubic 以外のディスプレイスメント画像、 Noise Detail が 6 を超えていないこと、未保存の画像。
  • M.value_report(objs):誘電体のアルベドが 30~243 sRGB の範囲内(範囲外は 2% 未満)、金属は 180 超、金属度の小数値は 5% 未満(ライブの Bevel/AO による摩耗はベイクするまで超過します)、粗さの標準偏差は 0.01 超。
  • スケールを適用すること;カラー属性は col_* という名前にし、すべての Attribute ノードと名前を完全に一致させること(Kaspar、 Price)。

視覚的な項目:M.preview で EEVEE と Cycles の見た目がほぼ一致すること;粗さの列に変化が見られること;逆光のグローは 肉が薄い部分にのみ現れること;斜光で段差なく凹凸が見えること;遠距離では繰り返しパターンが目立たないこと; レイヤーごとにミュートしてレンダリングし、それぞれが何かを加えていること(Price);人間の参照モデルに対してスケールを確認すること。

よくある間違い

間違い見た目修正方法
データマップが sRGB のまま盛り上がりが歪む、光沢がおかしいNon-Color
ノーマルマップとディスプレイスメントを併用(Node Wrangler のデフォルト)起伏が二重になる、または崩れるどちらか一方だけを使う
ジオメトリまたは Catmull-Clark なしでディスプレイスメントを使用何も起きない、または角が丸くなるSimple subdivision、shade smooth
4.5 より前の Bump Distance を 1.0 に設定段差ができる、プラスチックのように見える実際の高さを使い、約 0.001~0.01 にする
Emission Color を設定し、Strength は 0光らないStrength を 0 より大きくする
Blender 5.2 で Kaspar の v1 SSS 値を使用耳が白く、ワックスのように見える0.005~0.04 にし、逆光で確認する
EEVEE またはゲームで Bevel の摩耗や Pointiness を使用摩耗が表示されないベイクするか、curvature_attribute を使う
金属に対してライブの Bevel/AO にしきい値を設定境界がざらついた灰色になるベイクしてからしきい値を設定する
EEVEE でデフォルトの厚さの角膜シェルを使用虹彩が拡大されるThickness を 0 にする(cornea_material)
Noise から直接マスクを作成効果がほとんど見えないランプまたは Map Range でコントラストを付ける
セットアップ直後にストロークを描く一部しか塗れない、または塗れない。実行ごとに異なる先に描き直す(gui_texture_stroke)
塗装色を設定していない/新しいカラー属性ストロークが黒い/マスクが白い色を設定し、先にゼロを書き込む
リグでボックス投影または Generated 座標を使用テクスチャが泳ぐUV 座標を使う

Blender 5.2 に関する注意事項

  • Principled v2:Subsurface Weight/Scale(Subsurface Color なし)、Specular IOR Level、Transmission Weight、Coat、Emission Strength のデフォルトは 0 です。ソケットは名前で指定し、Mix ノードはインデックスで指定します(RGBA:A=6、B=7、 Result=2)。
  • カラースペースは sRGB、Non-Color、Linear Rec.709 です。Displacement ノードの Scale のデフォルトは 0.01 です。 material.displacement_method を使います(material.cycles ではありません)。EEVEE は 4.2 以降、ディスプレイスメントを行います(Displacement and Bump)。
  • use_nodes は非推奨です。surface_render_method が blend_method に置き換わります。屈折には use_raytrace_refraction とシーンのレイトレーシングが必要です。
  • EEVEE は異方性、Bevel、Pointiness、Random Per Island を無視します(確認済み)。Random Walk SSS は Blender 5.2 で再スケーリングされました。Musgrave は Noise の中にあります。
  • ブラシはアセットです。カスタムブラシには「Save Changes to Asset」が必要です(Abbitt)。image_brush_type を使います。Blur は SOFTEN です。色のサンプルには Shift+X を使います。
  • paint.vertex_color_dirt は Object モードでヘッドレス実行できます。バイト画像はエンコードされた値を保存し、float 型の Linear Rec.709 画像は PNG として保存すると sRGB に変換されます。

参考資料

  • references/procedures.md:すべての工程について、テスト済みのコードを掲載しています(テクスチャセット、 ディスプレイスメントのルール、ボックス投影、摩耗、曲率、デカール、肌、目、異方性、GUI およびヘッドレスでの塗装、ハイパス、 チェック、カメラレイのワールド、クレイスイッチ、塗装したライト、Color Burn マスク、物理的な UV スケール)。
  • references/expert-notes.md:専門家ごとの判断理由をタイムスタンプとともに記載し、意見の相違と、それを判断する条件をまとめています。
  • references/critique.md:自分のレンダーとノードツリーを評価するための基準です。
  • references/sources.md:すべての参照動画、クレジット、最適なタイムスタンプを掲載しています。

コメント