mcpField
B
blender-pbr-materials

blender-pbr-materials

github.com/el4cteoクリエイティブ・メディア569112 回インストール2 週間前に更新
リポジトリ

blender-pbr-materials について

blender-pbr-materialsは、アーティストやアセット制作者向けに、物理ベースのマテリアル作成と確認を支援するBlenderスキルです。実用的な設定指針、テクスチャセット用スクリプト、エンジンへの書き出し方法を扱います。

主な機能

  1. 01テクスチャセットからマテリアルを作成
  2. 02物理的に妥当なプリセットを使用
  3. 03色空間とテクスチャマップを設定
  4. 04エンジン書き出し用のマップを準備
  5. 05透明度とディスプレイスメントを設定

活用シーン

  1. 01入手したテクスチャセットからマテリアルを作成
  2. 02金属、ガラス、木材の表面を設定
  3. 03glTFやUnreal向けにマップを準備
  4. 04葉やガラスのアルファを設定

インストール

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

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

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

同梱ファイル

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

references/
pbr-values.md
scripts/
_bpyx.py
build_pbr_material.py

詳細

PBR マテリアル

実行モデルは blender-core にあります。測定値は references/pbr-values.md を参照してください。

すばやく作成する方法

  • テクスチャセット → マテリアル:scripts/build_pbr_material.py -- --name M_Crate --textures //tex/crate --objects SM_Crate。ファイル名からマップを検出し(Poly Haven、ambientCG、Substance、UE のサフィックスに対応)、カラー スペースを設定し、ORM を分割して、DirectX 法線マップを反転し、AO を glTF 用に接続します。
  • 物理的に妥当な単色マテリアル:--preset gold|iron|plastic|rubber|wood|glass|skin|... に、任意で --color R G B(sRGB)を指定します。

ルール(違反するとレンダリングが「CG」っぽく見えます)

  1. メタリックは二値です:0(誘電体)または 1(純金属)です。中間値は、金属上のほこりや錆の境界など、遷移ピクセルにのみ使用します。塗装された金属は誘電体として扱います。
  2. ベースカラー = ライティングのないアルベド:焼き込まれた影、AO、ハイライトは含めません。誘電体の範囲は sRGB で約 30~240(リニアで 0.012~0.87)です。木炭は約 50、新雪は約 240 です。金属の場合、ベースカラーは F0 反射率で、sRGB 180~255 とし、暗くしてはいけません。
  3. リアリティはラフネスで表現します。グランジ、汚れ、摩耗で変化を付けます。一定のラフネス値では不自然に見えるため、表面全体で ±0.1~0.2 の範囲で変化させます。
  4. カラー スペース:Base Color と Emission には sRGB を使用します。Roughness、Metallic、Normal、AO、Height、Opacity、ORM には Non-Color を使用します。カラー スペースの誤りが最もよくある不具合です(法線が白っぽくなる、ラフネスが正しくないなど)。
  5. スペキュラー:ほとんどすべての誘電体では、IOR を 1.5、Specular IOR Level を 0.5 のままにします。IOR を変更するのは、材質が明確に分かっている場合のみです(水は 1.33、ガラスは 1.5、ダイヤモンドは 2.42)。
  6. 法線マップ:Blender、glTF、Unity、Roblox は OpenGL(Y+)を使用します。Unreal と Substance の DirectX プリセットは DirectX(Y-)を使用するため、変換時に G を反転します。ベイク時とターゲットでは、同じ接線基底(MikkTSpace)と同じ三角形分割を使用する必要があります。
  7. AO:Principled BSDF に AO 入力はありません。エンジン向けには、ORM の赤チャンネルに AO を格納します。Cycles のレンダリングでは、レンダラーが遮蔽を計算するため、AO をベースカラーに乗算しないでください。

Principled BSDF(5.2)早見表

Base Color、Metallic、Roughness、IOR、Alpha、Normal、Thin Wall(5.2:体積のない葉、紙、布のシート)、Subsurface Weight/Radius/Scale(肌、ワックス。肌の場合、Scale はメートル単位で約 0.005~0.02)、Specular IOR Level、Specular Tint、Anisotropic、Transmission Weight(ガラス/液体)、Coat Weight/Roughness/Normal(自動車の塗装、ニス)、Sheen Weight(布、ベルベット)、Emission Color/Strength(Strength はおおむね W/m² 単位。画面は 1~10、電球は 50 以上)、Thin Film Thickness/IOR(せっけん、油、コーティングされたレンズ)、Diffuse Roughness。

エンジンへのエクスポート規則

ターゲットマップパッキング法線
glTF / web / GodotbaseColor(+alpha), metallicRoughness, normal, occlusion, emissiveglTF:R=AO G=Rough B=Metal(ORM)OpenGL
UnrealBaseColor, Normal, ORMR=AO G=Rough B=MetalDirectX(テクスチャにマークが付いている場合、UE はインポート時に反転します)
Unity URP/HDRPBaseMap, Normal, MetallicSmoothness / HDRP MaskMapURP:R=Metal A=Smoothness(1-rough)。HDRP Mask:R=Metal G=AO B=DetailMask A=SmoothnessOpenGL
Roblox SurfaceAppearanceColorMap(+alpha), NormalMap, MetalnessMap, RoughnessMap, EmissiveMaskContentグレースケールのマップを個別に使用し、パッキングしませんOpenGL、接線空間
  • エクスポートされるのは、画像テクスチャ → BSDF の接続だけです。プロシージャルノード、Mix ノード、数学ノードはエンジンでは何も出力しないため、先にベイクしてください(blender-texture-baking)。
  • テクスチャセットごとにマテリアルを 1 つ使用します。マテリアルが 1 つ増えるごとにドローコールも 1 つ増えます(blender-game-optimization)。
  • テクスチャには 2 の累乗のサイズ(512/1024/2048/4096)を使用します。データマップには PNG/TGA を使い、法線マップには JPEG を絶対に使わないでください。

アルファ

mat.surface_render_method = "DITHERED"(カットアウト/アルファクリップ。正しくソートされ、葉や髪のカードに適しています)または "BLENDED"(ガラス/UI などの真の透明)。Alpha を接続します。glTF はアルファの設定から CLIP/BLEND をエクスポートします。ゲームではディザード/クリップを推奨します。

ディスプレイスメント

ハイトマップ → Displacement ノード → マテリアル出力の Displacement。mat.displacement_method:BUMP(シェーディングのみで、全体に適用)、BOTH/DISPLACEMENT(Cycles 用。高密度または適応的に細分化したジオメトリが必要です。Subdivision モディファイアーの use_adaptive_subdivision を使用します)。スケールの単位はメートルです。8-bit の場合はミッドレベルを 0.5 に、32-bit EXR の場合は 0 に設定します。

ビュートランスフォーム(適切な設定でマテリアルを評価する)

scene.view_settings.view_transform:AgX(デフォルト。写真向け)、Khronos PBR Neutral(見た目がアルベドそのものになる設定。アセット/製品のレビューや glTF との一致に使用)、Standard(ピクセルと一致させる必要がある UI/グラフィックス/テクスチャ向け)、ACES 1.3/2.0(VFX パイプライン向け)。極端な「Look」を設定した Filmic/AgX を通して見ながら、テクスチャをベイクしたり作成したりしないでください。

プロシージャルからテクスチャへ

プロシージャルなセットアップ(ノイズ/ボロノイによる摩耗、Geometry > Pointiness(Cycles)または Ambient Occlusion ノードを使った曲率マスク、Bevel ノードの法線を使ったエッジの摩耗)は、レンダリングには適しています。ゲームエンジン向けには、テクスチャセットにベイクしてください(blender-texture-baking)。同梱の Node Wrangler の Ctrl+Shift+T は build_pbr_material.py と同じ処理を行いますが、UI が必要です。

注意点

  • material.use_nodes は 5.x で非推奨になりました。新しいマテリアルには、すでに Principled と Output が設定されています。
  • mat.diffuse_color が影響するのはビューポート(Solid モード/Workbench)のみで、レンダリングやエクスポートには影響しません。
  • ヘッドレス環境で読み込んだ画像は、ベイクまたはエクスポートの前に image.colorspace_settings.name を設定する必要があります。
  • 複数のマテリアルで共有しているテクスチャ画像の場合、色空間を変更するのは一度だけにしてください。色空間の設定は画像ごとに適用されます。

コメント