blender-texturing について
テクニカルアーティスト向けのBlenderテクスチャリングスキルです。摩耗、汚れ、ほこり、さびを重ねた表現やデカールを作成でき、編集可能なレイヤーと、ゲームエンジン向けのベイクに対応します。
主な機能
- 01摩耗、さび、汚れ、ほこりのプロシージャルレイヤー
- 02CyclesとEEVEE対応のライブ曲率マスク
- 03レイヤー削除時の元状態の正確な復元
- 04表面に沿ったデカール配置
- 05書き出し用PBRテクスチャセットのベイク
活用シーン
- 01プロップのマテリアルに経年表現を追加
- 02壁面に警告デカールを配置
- 03ゲームアセット用にマテリアルをベイク
- 04曲率マップとAOマップでマスクを調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ el4cteo/ blender-skills --skill blender-texturingインストール後、Claude Code で/blender-texturingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/trims-tiling-painting.mdscripts/_bpyx.pydecal.pysmart_material.py詳細
テクスチャリング
実行モデルは blender-core にあります。マテリアルの接続と計測値は blender-pbr-materials に、ベイクは blender-texture-baking にあります。このスキルが作成するのは、表面のストーリーです。塗装が剥がれる場所、汚れがたまる場所、何が印刷されているかを定めます。
それぞれを1回呼び出す
scripts/smart_material.py -- --objects Crate --wear 0.5 --grime 0.4 --dust 0.3
scripts/smart_material.py -- --objects Crate --rust 0.6 --under-color 0.3 0.29 0.28 # rusty iron
scripts/smart_material.py -- --objects SM_Crate --wear 0.5 --curvature-map //tex/T_Crate_CURV.png --ao-map //tex/T_Crate_AO.png
scripts/decal.py -- --target Wall --at 0 -0.1 1.5 --image //decals/hazard.png --size 0.4
scripts/smart_material.py -- --objects Crate --remove # exact restore
プロがマテリアルを重ねる方法
まずクリーンなベース(正しいアルベド/ラフネス、blender-pbr-materials)を用意し、内側から外側へ重ねます。ベース → エッジの摩耗 → 錆 → 汚れ → ほこり。各レイヤーには物理的な原因があります。
| レイヤー | マスク(原因) | 見た目 |
|---|---|---|
| エッジの摩耗 | 凸状の曲率(エッジはぶつかりやすい)+チップノイズ | 下地のマテリアルが露出します。地金、プライマー、無垢材など |
| 錆 | キャビティと摩耗したエッジ+斑点ノイズ | オレンジブラウン、メタリック 0、ラフネス ~0.85 |
| 汚れ | 凹状の曲率+(1 − AO)(拭き取れない場所に汚れがたまります) | 暗く、ラフネスは高め、非メタリック |
| ほこり | 上向きのワールド法線 × パッチノイズ(上から降り積もります) | 明るく、ラフネス ~0.9 |
| ばらつき | ラフネスに細かいノイズ(±25%) | 最も手軽にリアリティを高める方法です。ラフネスを一定値のまま出荷しないでください |
| 曲率だけだと、プロシージャルで均一な見た目になります。摩耗が強い場所とない場所を作るため、必ずノイズを掛け合わせてください。控えめが効果的です。摩耗 0.2~0.4 は「使い込まれた」印象になり、0.7 以上は「放置された」印象になります。 |
smart_material.py
- すべての Principled BSDF の前に
TX_Layersグループを1つ挿入し(Base Color、Roughness、Metallic)、元の設定を記録するため、--removeでリンクと値を正確に復元できます。再実行すると値がその場で更新されます。レイヤーの量はすべてグループノードの入力として設定されるため、そこで調整できます。 - 曲率はライブでポータブルです(Cycles + EEVEE、ベイク不要)。
TX_Curvatureポイント属性は、--edge-width(m、デフォルト 0.02)以内にある近傍点の平均高さです。密度に依存せず、帯の幅はおよそエッジ幅です。幅はベベル幅に近い値に設定します(プロップは 1~3 cm、建物は 5~10 cm)。コストは 3 万頂点あたり約 1.5 秒です。 - 中程度のポリゴン密度(ベベル/サポート)が必要です。中央値のエッジ長がエッジ幅の 4 倍を超える場合、結果に
noteが付与され、摩耗が面全体に広がる可能性が示されます。低ポリゴンのゲームメッシュでは、ハイポリメッシュからベイクして(bake_maps.py --high ... --maps normal ao curvature)、--curvature-map/--ao-mapを渡します(Non-Color として読み込み、--uv経由で読み取ります)。 - ノイズはオブジェクト空間にあります(
--scale= 特徴のサイズ、m)。そのため、アセットを動かしてもマスクは貼り付いたままです。ミラー/リンクされた複製ではパターンが共有されるため、問題になる場合は--scaleかオブジェクトを変えてください。 - 色は sRGB 0~1 です。デフォルトは塗装の下地がスチールです(0.56, 0.57, 0.58, metallic 1, roughness 0.35)。塗装の下地に木材を使う場合は、
--under-color 0.45 0.32 0.2 --under-metallic 0 --under-roughness 0.7を使用してください。
ゲームエンジン向け
エンジンでは Blender のノードツリーを実行できません。結果をテクスチャセットにベイクします。bake_maps.py -- --low SM_Crate --maps basecolor roughness metallic normal --pack-orm(セルフベイク、--high なし)。次に build_pbr_material.py --textures を実行して、エクスポートします。blender-asset-qa とライティングした look で結果を確認してください。
デカール(decal.py)
--atに最も近いサーフェスポイントに細分化した平面を配置し、法線に合わせて向きを設定し、--rotationで回転させます。Shrinkwrap(投影、サーフェスより上)によって、サーフェスから--offset(2 mm)離れた位置に保ちます。親が設定され、影はなく、Dithered アルファを使用し、高さは画像のアスペクト比に従います。blender-asset-qaと同様に三角形ごとの隙間を測定し、凸状の折れ目をまたぐ平坦な三角形がめり込まなくなるまで--subdivを2倍にします(最大 128)。結果にはgap_min_m/gap_max_mが報告されます。オフセット 0 でデカールを配置しないでください。必ず Z ファイティングが発生します。- ゲームでは、メッシュデカール1つにつきドローコールが1回かかり、アルファソートも必要です。同じアトラスを共有するデカールは1つのメッシュに統合してください。動的なデカールにはエンジンのプロジェクター(UE Decal Actor、Unity URP Decal Projector、Godot
Decal)を使うか、ベーステクスチャにベイクしてください。
トリムシート、タイリング、ペイント
頂点カラーのブレンドを使ったトリムシートとタイリング、手作業によるペイント/テクスチャペイント(5.2 のブラシアセット)、ヘッドレスでのピクセル書き込みについては、references/trims-tiling-painting.md を参照してください。
注意点
- マスクテクスチャ(曲率、AO、ラフネス、ID)は Non-Color にする必要があります。スクリプトで設定されますが、手作業で作成したノードでは設定されていないことがよくあります。
- 曲率の計算や
--scaleの設定の前に、スケールを適用してください。どちらもワールドサイズに基づきます。 TX_Curvatureはメッシュデータです。その後にモディファイアーを適用したり、リメッシュしたりすると無効になるため、トポロジーの変更後に再実行してください。- ビューポートの EEVEE と Cycles:マスクは同一です(Bevel/Pointiness/AO のシェーダーノードは使用しません。これらは Cycles 専用またはスクリーンスペースであるためです)。