書き出しで質感が崩れる原因は主に3つ:ノーマルマップ規格(DirectX/OpenGL)の不一致、sRGB設定の漏れ、16-bit深度の未設定。UE5・Unity・Maya別の正しい設定を解説する。
Substance Painterのビューポートで完璧に仕上げたテクスチャが、インポート後に「金属が白飛びする」「凹凸が逆転する」「バンディングが出る」——これらはすべて書き出し設定の規格不一致が原因だ。本記事ではエンジン・レンダラー別の正しい書き出し設定を一挙にまとめた。
テクスチャ解像度とテクセル密度はどう決める?
作業解像度と書き出し解像度は独立している。ペイントは低解像度で進めて、書き出しだけ高解像度に切り替えられる。
Substance Painterは非破壊ワークフローを採用しており、1024×1024で作業しながら書き出しだけ4096×4096に切り替えることが可能だ。品質とパフォーマンスを両立するにはテクセル密度の管理が重要になる。
| アセット種別 | 推奨テクセル密度 |
|---|---|
| 背景プロップ | 5.12 px/cm(512 px/m) |
| ヒーローアセット | 10.24 px/cm(1024 px/m) |
ノーマルマップは16-bit出力が必須な理由は?
8-bitで出力すると滑らかな曲面に「バンディング(等高線のような段差)」が発生する。NormalとHeightマップは16-bit RGBAで出力すること。
BaseColor・Roughness・Metallicは8-bitで十分だが、NormalマップとHeightマップの8-bit出力は緩やかなグラデーション部分に段差を生む。Substance Painterの内部ベイクは標準で16-bit RGBAで処理されており、Export Texturesの「Bit Depth」を16 bits RGBAに変更するだけで品質を維持できる。
DirectXとOpenGL——ノーマルマップ規格の見分け方は?
唯一の違いはY軸(緑チャンネル)の向き。間違えると凸凹が逆転して見える。書き出し前にエンジン別の規格を確認しよう。
| ソフト / レンダラー | 規格 | Y軸の向き |
|---|---|---|
| Unreal Engine 5 | DirectX | -Y(下向き) |
| Unity(URP/HDRP) | OpenGL | +Y(上向き) |
| Maya / Arnold | OpenGL | +Y(上向き) |
| Blender / Godot | OpenGL | +Y(上向き) |
間違えた場合はエンジン側で「Invert Green Channel(緑チャンネルを反転)」するだけで修正できる。再エクスポートは不要だ。
UE5向け書き出し:ARMパッキングとsRGB設定の落とし穴
プリセット「Unreal Engine 4 (Packed)」を使うとARMテクスチャが自動生成される。インポート後にsRGBを必ずオフにすること。
File > Export TexturesでOutput Templateを「Unreal Engine 4 (Packed)」に設定(UE5でも完全互換)。ARMテクスチャは1枚にAO(R)・Roughness(G)・Metallic(B)を格納したチャンネルパッキングテクスチャだ。
最重要:Content BrowserでARMテクスチャのインポート後、Texture EditorのsRGBチェックを必ず無効化すること。忘れると金属が白飛びしてプラスチックのような質感になる。マテリアルエディタでは個別のR/G/B出力ピンからAO・Roughness・Metallic入力へ接続すること。
Unity向け書き出し:HDRPとURPで仕様が異なる
HDRPはMask Map(4チャンネルパッキング)、URPはMetallicのアルファにSmoothnessを格納する仕様。プリセットを確認してから書き出そう。
| チャンネル | HDRP Mask Map |
|---|---|
| R(赤) | Metallic |
| G(緑) | Ambient Occlusion |
| B(青) | Detail mask |
| A(アルファ) | Smoothness(ラフネスの逆数) |
HDRP向けはプリセット「Unity HD Render Pipeline (Metallic Standard)」、URP向けは「Unity Universal Render Pipeline (Metallic Standard)」を使用する。どちらもインポート後にsRGB(Color Texture)を無効化すること。
Maya (Arnold) 向け書き出し:カラースペース設定が命
Arnoldへの接続で一番陥りやすい罠はカラースペースの不一致。数値マップは必ずColor Space=「Raw」に設定する。
| テクスチャマップ | Color Space設定 |
|---|---|
| Base Color | sRGB |
| Metalness / Roughness | Raw(リニア) |
| Normal(bump2d経由) | Raw(リニア) |
NormalマップはArnoldにbump2dノードを経由させ「Use As」を「Tangent Space Normals」に変更してから接続する。ArnoldはOpenGL(+Y軸)を採用しているのでPainterの出力テンプレートでOpenGLを選択することも忘れずに。
まとめ:書き出し設定5大チェックポイント
- Normal/Heightは16-bit出力:8-bitはバンディングの原因
- ノーマルマップ規格の確認:UE5はDirectX、Unity・Maya・BlenderはOpenGL
- UE5のARMテクスチャ:インポート後にsRGBをオフ、R/G/B個別ピンで接続
- Unity HDRPのMask Map:SmoothnessはAlpha格納、sRGB無効化必須
- Maya ArnoldのRaw設定:数値マップはColor Space=Raw、Normalはbump2d経由
なお、Substance Painter 9.1以降の「Send to(Substance Connector)」機能を使えばUE5・Unity・Maya向けのチャンネルパッキング・ノード接続がワンクリックで全自動化される。まずは手動の設定を理解したうえで、自動化への移行を検討しよう。
テクスチャを書き出す前にベイク設定も確認しておこう。Substance Painterのベイクエラー解決策では黒いノイズ・UV割れ・ズレの原因と対策を詳しく解説している。

コメント