Substance 3D Painterで完璧なテクスチャを作り込んだのに、いざMaya (Arnold) に持ってくると「色が薄い」「ハイライトが強すぎる」「法線がおかしい」といった現象に悩まされていませんか?
これはバグではなく、CG制作における最大の落とし穴である「カラーマネジメント」の設定ミスが原因です。本記事では、近年標準となったACESワークフローに基づき、SubstanceとMayaの間で「完全に一致した色と質感」を再現するための設定と理論を徹底解説します。
原因は「目のための色」と「計算のためのデータ」の混同
「色が合わない」というトラブルの9割は、画像データを読み込む際の解釈ミスが原因です。コンピュータグラフィックスにおいて、画像は大きく分けて2つの役割を持っています。
モニターが見せる嘘(ガンマ補正の正体)
私たちが普段モニターで見ている画像(sRGB)は、実は人間の目の特性に合わせてデータが加工されています。人間は暗い部分の変化に敏感なため、データ容量を節約するために暗い部分の情報を多く記録し、明るく補正(ガンマ補正)して保存しています。
モニターはこれを暗く表示する特性があるため、プラスマイナスゼロで正しく見えますが、データとしては「歪んだ状態」なのです。
人間の目は「0から50の明るさ変化」は敏感に感じますが、「200から250の変化」はあまり感じません。この特性を利用して、データを効率的に保存するための「変換曲線」がガンマ補正です。一般的なsRGB画像には、約2.2のガンマ(指数)がかかっています。
レンダラーは正直者(リニアワークフロー)
一方、Arnoldなどの物理ベースレンダリング(PBR)エンジンは、現実世界の物理法則(光の足し算は 1+1=2)に従って計算を行います。
もし、人間用に明るく加工されたsRGBデータを、そのまま計算式(リニア空間)に放り込むとどうなるでしょうか?「本来の0.22の明るさ」を「0.5の明るさ」として計算してしまい、結果として全体的に白っぽくなったり、影が不自然になったりします。
これを防ぐために、読み込み時にガンマ補正を解除して、リニアな数値に戻す作業が必要になります。これがリニアワークフローの基本です。
例えば、グレー50%のテクスチャ(sRGB値: 0.5)は、実際のリニア値では約0.22です。これをそのまま0.5として計算すると、本来より2倍以上明るい結果になってしまい、質感が完全に崩れます。
決定版!sRGBとRawの使い分けルール
では、具体的にどのテクスチャをどう設定すればよいのでしょうか?答えはシンプルです。「それは人間のための色か?計算のための数値か?」を自問することです。
1. 「色 (Color)」として扱うもの = sRGB
Base Color (Albedo), Emissive (発光)
これらは「赤」「青」「肌色」といった、人間が見たときの色情報です。これらはsRGBのガンマがかかっているため、Maya側でリニアに戻す必要があります。
2. 「数値 (Data)」として扱うもの = Raw
Roughness, Metallic, Normal, Height, Alpha
これらは画像に見えますが、中身は「0.5(50%の粗さ)」や「法線ベクトル」といった物理的な数値データです。
ここにガンマ補正をかけて数値を歪めてしまうと、質感や形状が破綻します。例えばRoughnessにガンマをかけると、0.5(適度なマット)が0.218(ツルツル)に変換され、意図しない強い光沢が出てしまいます。
| テクスチャの種類 | データの意味 | Maya (File Node) 設定 |
|---|---|---|
| Base Color / Emissive | 色 (Color) | Utility – sRGB – Texture ※ACEScg書き出しならACEScg |
| Roughness / Metallic | 物理係数 (Data) | Utility – Raw |
| Normal Map | ベクトル (Data) | Utility – Raw |
| Height / Displacement | 高さ情報 (Data) | Utility – Raw |
| Opacity / Alpha | 透明度 (Data) | Utility – Raw |
「色に名前がつけられるもの(赤、青、緑など)→ sRGB」
「色に名前がつけられないもの(粗さ50%、ベクトル など)→ Raw」
実践設定ガイド:SubstanceからMaya(Arnold)へ
現在、業界標準となっているACES (Academy Color Encoding System) を使用した推奨フローを紹介します。
Step 1: Substance 3D Painter側の設定
Edit > Settings > Color Management を開き、以下を設定:
- Color Management: OpenColorIO
- Configuration: ACES 1.2
これでビューポートがMayaと同じACES基準になります。
File > Export Textures で以下を設定:
- ファイル形式: EXR (.exr) を強く推奨
- ビット深度: 16-bit half または 32-bit float
- Output Templates: PBR MetalRough(Arnold用)
JPEGやPNGなどの8bit画像は情報量が足りず、バンディング(階調割れ)の原因になります。
Color Spaceは、OCIO設定であれば自動的に適切な変換が行われます。以下を確認:
- Base Color: ACEScg または sRGB
- Normal, Roughness, Metallic: Raw(変換なし)
- HDR対応: 0-1の範囲外の明るい値(ハイライト)も記録できる
- 高精度: 16bit/32bitで滑らかなグラデーションを保持
- メタデータ保存: カラースペース情報を埋め込める
- 業界標準: VFX/映画業界で事実上の標準フォーマット
Step 2: Maya (Arnold) 側の設定
Windows > Settings/Preferences > Preferences > Color Management で設定:
- Enable: ON
- Rendering Space: ACEScg
- View Transform: ACES 1.0 SDR-video
これでMayaのビューポートとレンダリングがACES基準で動作します。
各テクスチャを読み込んだFileノードで、Color Space属性を設定:
Base Color(EXR/ACEScgの場合):
Base Color(PNG/JPGの場合):
Roughness / Metallic / Normal:
Hypershadeで以下を確認:
- Base Color → aiStandardSurface の Base Color
- Roughness → aiStandardSurface の Roughness(Out Color Rを推奨)
- Metallic → aiStandardSurface の Metalness(Out Color Rを推奨)
- Normal → aiBump2d → aiStandardSurface の Normal
よくある失敗:Alpha is Luminanceと法線マップ
Alpha is Luminance の罠
Roughnessマップなどを読み込んだ際、「Alpha is Luminance」にチェックを入れると質感が直るという情報がありますが、これはあくまで回避策です。
最も確実なのは、Fileノードの「Out Color R」をシェーダーのRoughnessなどに直接繋ぐことです。これにより、予期せぬガンマ計算の影響を受けずに純粋な数値データを渡すことができます。
- Roughnessファイルノードを選択
- Attribute Editor > Color Balance > Out Color R を右クリック
- 「Break Connections」して独立させる
- Out Color R を aiStandardSurface の Roughness に直接接続
この方法で、グレースケールデータをRチャンネルの生の数値として取得できます。
法線マップのブラックアーティファクト
モデルのエッジに黒い影が出る場合、NormalマップにsRGB補正がかかっている可能性が高いです。
法線ベクトル (0.5, 0.5, 1.0) がガンマ補正で歪むと、光の向きがありえない方向にねじ曲がり、レンダラーが「影」と誤判定して黒く塗りつぶしてしまいます。Normalマップは絶対にRawに設定してください。
- Normal Mapに sRGB を設定する
- Roughness/Metallicに sRGB を設定する
- EXRファイルに対してガンマ値を手動調整する
- 32bitテクスチャをJPEGで保存する
これらは必ず予期しない結果を引き起こします。
トラブルシューティング:症状別解決法
症状1: 全体的に色が薄い・白っぽい
原因: Base Colorが Raw で読み込まれている
解決: File ノードの Color Space を「sRGB – Texture」または「ACEScg」に変更
症状2: ハイライトが強すぎる・テカテカする
原因: Roughness に sRGB 補正がかかっている
解決: Roughness の Color Space を「Raw」に変更し、Out Color R で接続
症状3: エッジに黒い線が出る
原因: Normal Map に sRGB 補正がかかっている
解決: Normal Map の Color Space を「Raw」に変更
症状4: Substanceと色がまったく違う
原因: カラーマネジメントの基準が異なる
解決: 両方のソフトで ACES (OpenColorIO) を有効にして統一
まとめ:プロダクション品質を出す3つの鉄則
1 Rendering Spaceの統一
SubstanceとMayaの両方でACES (OCIO)を使用する。
2 RawとsRGBの厳格な使い分け
Roughness, Metallic, Normalは「データ」なので必ずRaw。Base Colorは「色」なのでsRGBまたはACEScg。
3 確実な接続
Alpha is Luminanceに頼らず、Rチャンネルを明示的に接続する。
これらの理屈を理解すれば、どんなレンダラーを使っても「色が違う」と焦ることはなくなります。正しいデータ管理で、本来のクリエイティビティを発揮しましょう。

コメント