Substance PainterからBlenderへテクスチャを渡すとき、最初の分岐は書き出しプリセットの選択にある。同梱プリセットにはBlender専用のものが1つあり、これを選ぶかどうかで法線マップの向きが変わる。汎用の「PBR Metallic Roughness」では凹凸が逆に彫れる。
実機の Substance 3D Painter 12.1.3 に同梱された書き出しプリセット34個の定義ファイルを直接読み、参照している法線チャンネルを全件確認した。あわせて Blender 3.6.11 をバックグラウンドモードで起動し、ソケット名と初期値を実測している。
Blender向けのプリセットはどれを選ぶ?
Export Textures の Output template で「Blender (Principled BSDF)」を選ぶ。Blender専用として同梱されているプリセットで、法線マップの参照先が Normal_OpenGL になっている。BlenderのタンジェントスペースはOpenGL規格(緑チャンネルが上向き)なので、これが正しい組み合わせだ。
問題は汎用プリセットを選んだときだ。34個の定義ファイルで参照先を数えると内訳はこうなる。
| 参照先 | 件数 | 主なプリセット |
|---|---|---|
| Normal_OpenGL | 21 | Blender (Principled BSDF)、Unity URP/HDRP、Arnold、V-Ray Next、Redshift |
| Normal_DirectX | 12 | PBR Metallic Roughness、PBR Specular Glossiness、Unreal Engine (Packed)、CryEngine |
| 法線を含まない | 1 | Mesh Maps |
⚠️ 名前に「PBR」と付く4つのプリセットは、すべてDirectXを参照している。「エンジン名が付いていないから汎用だろう」と選ぶと、Blenderでは凹凸が反転する。しかも反転は気づきにくい。面が潰れるのではなく、ネジ穴が飛び出しリベットがへこむ、という形で出る。
この反転はBlender 3.6.11のCyclesで実測した。左半分を+Y・右半分を−Yに傾けた法線マップで同一シーンを描画し、緑チャンネルだけ反転した版と輝度を比べた結果がこれだ。
| 法線マップ | 左半分の輝度 | 右半分の輝度 |
|---|---|---|
| そのまま | 0.3216 | 0.8591 |
| 緑チャンネル反転 | 0.8594 | 0.3218 |
| 同じマップを再描画(対照) | 0.3216 | 0.8591 |
左右の値がほぼ完全に入れ替わっている(差は0.0003以下)。同じマップを2回描画した対照では値が動かないので、入れ替わりは緑チャンネルの反転だけで起きている。凹凸は「浅くなる」のではなく「鏡像になる」。
規格の見分け方とUE5・Unity・Maya向けの設定は書き出し設定・解像度完全ガイドにまとめてある。
Blender側のノード接続はどうつなぐ?
このプリセットの出力は7枚で、すべてPNG。ファイル名は $textureSet_BaseColor(_$colorSpace)(.$udim) の形式になる。行き先はこうなる。そのまま挿すのは5枚で、NormalとDisplacementは中間ノードを挟む。
| マップ | 中間ノード | 接続先 | Color Space |
|---|---|---|---|
| BaseColor | — | Base Color | sRGB |
| Metallic | — | Metallic | Non-Color |
| Roughness | — | Roughness | Non-Color |
| Emission | — | Emission | sRGB |
| Alpha | — | Alpha | Non-Color |
| Normal | Normal Map | Normal | Non-Color |
| Displacement | Displacement | Material Output の Displacement | Non-Color |
Normal Map ノードは初期値が Tangent Space・Strength 1.0 で変更不要だ。Displacement ノードの Midlevel は初期値 0.5 で、PainterのHeightが中間グレーを基準にする前提と合う。
🔎 AO(アンビエントオクルージョン)は出力に含まれない。設定ミスではなく、プリセットの定義にAO出力が無い。Principled BSDF側にもAOの入力ソケットは存在しない(26入力を実機で列挙して確認)。必要なら Mix Color を Multiply にして Base Color に掛ける。
⚠️ Blender 4.0以降はソケット名が変わる。Principled BSDFが刷新され、Emission は Emission Color、Specular は Specular IOR Level になった。つなぐ位置は同じだ。3.6を使い続けるかの判断はBlender 3.6・4.2は旧LTS入りで整理した。
なぜカラースペースを直さないと破綻する?
Blenderの Image Texture ノードは、読み込んだ画像のカラースペースを初期値でsRGBにする。3.6.11の実機で確認した挙動で、ファイル名に何が書いてあっても自動判別はしない。つまり7枚のうち5枚は、貼った直後は間違った状態にある。
sRGBのままだと数値がガンマ変換されて読まれ、Roughnessはツルツル寄りに、Metallicは中間値が金属に寄りすぎ、Normalは凹凸が弱くなる。エラーは出ない。該当ノードの Color Space を Non-Color に変えれば直る。
書き出したのに効かないマップが3枚ある
接続もカラースペースも正しいのに反映されないものが3つある。いずれもBlender側の初期値が「使わない」側に倒れているためで、テクスチャの問題ではない。
| マップ | 初期値(3.6.11実測) | 変更先 |
|---|---|---|
| Alpha | Blend Mode = OPAQUE |
マテリアルプロパティの Blend Mode を Alpha Clip/Alpha Hashed/Alpha Blend へ |
| Displacement | Displacement = BUMP |
Settings の Displacement を Displacement または Displacement and Bump へ |
| AO | 入力ソケット自体が無い | Mix Color を Multiply にして Base Color へ |
3.6でDisplacementはCycles側のプロパティとして実装されており、EEVEEでは真の変位にならない。EEVEEで凹凸を出すならBumpノードのHeightへ入れる。Cyclesの実変位はAdaptive Subdivisionが要り、4Kテクスチャ7枚に細分化後のジオメトリが積み上がる。VRAMが足りないとGPUレンダリングはCPUへ落ちる。
反映されないときはどこを見る?
| 症状 | 最初に見る場所 |
|---|---|
| 凹凸が逆向き | 書き出しプリセット。PBR系ならDirectX参照 |
| ツルツル/色が浅い | Image Texture の Color Space がsRGBのまま |
| 透明にならない | マテリアルの Blend Mode が OPAQUE |
| 変位しない | Displacement が BUMP、またはEEVEE描画 |
🔎 実測した範囲:プリセット34件の参照チャンネルの全件読み出し、Blender 3.6.11 のソケット構成と各初期値、上の描画比較(対照込み)までが実測値だ。Painterから書き出したファイルをBlenderへ読み込む端から端までは通していないので、「PBR系を選ぶと反転する」は参照先(実測)と反転の効果(実測)をつないだ帰結になる。Alpha・Displacement・AOは初期値までで、変更後の描画は比較していない。4.x系のソケット名は公式リリースノートによるもので実機未確認だ。
まとめ:4か所を押さえれば通る
- プリセットは「Blender (Principled BSDF)」。PBRと名の付く汎用4種はすべてDirectX参照
- sRGBのままにするのはBaseColorとEmissionだけ。残り5枚はNon-Colorへ
- NormalとDisplacementは直結しない。Normal Map/Displacementノードを挟む
- 効かない3枚はBlender側の初期値が原因。Blend Mode・Displacement・AOを見る
すでにPBR Metallic Roughnessで書き出してしまいました。出し直しが必要ですか?
Blender (Principled BSDF) プリセットはUDIMに対応していますか?
(.$udim) が含まれており、UDIMを使うプロジェクトではタイル番号が自動で付きます。Blender側はImage TextureノードのSourceをUDIM Tilesに切り替えて読み込みます。

コメント