Substance 3D Painterのメッシュマップとベイク入門

Substance 3D Painterのメッシュマップとベイク入門

Adobe Substance 3D Painter(以下 Painter)のスマートマテリアルやジェネレーターが、エッジだけを削ったり、くぼみに汚れをためたりできるのは、モデルの形から作ったメッシュマップを材料にしているからです。本記事では、10種類のメッシュマップの役割、Baking モードでの基本的な焼き方、解像度とアンチエイリアスの決め方、ジェネレーターとの関係を、操作の順番で整理します。

ハイポリ・ローポリ・ケージの関係や DCC 側の準備といったベイクの全体像は「ベイク全体論|MayaとPainterの責任分界とエラー対処」で扱っています。本記事はその Painter 実機編の入口です。

夕宮たいだ

ふぁ……みんな〜、今日はメッシュマップのお話だよぉ。スマートマテリアルがうまく効かないときの原因、だいたいここにあるんだぁ。一緒に見ていこ〜。

目次

この記事の前提

ひとことで:Painter 12.1 の英語UIで、メッシュマップの役割とベイクの基本設定までを扱います。

  • 対象バージョン:Adobe Substance 3D Painter 12.1(2026年9月時点の最新は 12.1.5)。項目名は英語UIの表記で、バージョンによって表記が異なります
  • ベイクの画面:8.3 以降、ベイクは専用の Baking モードで行います。古い解説に出てくる、Texture Set Settings の Bake Mesh Maps ボタンで開くダイアログは、このモードに置き換わりました。12.1 ではマップ一覧の操作ボタンや自動再ベイクが加わっています
  • 扱わない範囲:ケージの詰め方や名前の対応、アーティファクトの直し方は「Substance 3D PainterのHigh to Lowベイク実務」で扱います

手順は Adobe の公式ドキュメント(How to bake mesh maps、Mesh map settings)と、ベイカー共通の資料である Substance Bakers のドキュメントに基づいています。

メッシュマップとは

ひとことで:モデルの形から計算して作る参照用のテクスチャで、色を塗るチャンネルとは別物です。

メッシュマップは、メッシュの形から焼いた「位置」や「遮蔽(光のさえぎられ方)」などの情報を持つテクスチャです。Base Color や Roughness のように塗る対象ではなく、ほかの機能が参照する材料です。

  • 焼いたマップは、Texture Set ごとに Texture Set Settings の Mesh maps の欄へ割り当てられます
  • ジェネレーター、スマートマテリアル、スマートマスク、フィルターがこれを読んで、マスクや質感を作ります
  • Normal と Ambient Occlusion は、ビューポートの陰影にも使われます
  • ベイカーの出力は 16bit の RGBA で、最終的なビット深度は書き出す形式で決まります

10種類のメッシュマップと役割

ひとことで:10種類それぞれに「何を記録しているか」と「何に使われるか」があります。

メッシュマップ記録している情報主な使い道
Normalハイポリの凹凸を面の向きとして記録(タンジェント空間。形式は Normal Map Format に従う)陰影、Normal チャンネルとの合成
World Space Normal各面がワールド空間でどちらを向いているか上向きの面にほこりや雪を乗せるマスク
ID頂点カラー、マテリアルの色、メッシュごとの色分け色で範囲を選ぶマスク(Add mask with color selection)
Ambient Occlusion環境光が周囲の形にさえぎられる度合い陰影、汚れがたまる場所の判断
Curvature出っ張り(白)、くぼみ(黒)、平らな面(灰色)エッジの摩耗、くぼみの汚れ
Position各点の位置を、軸ごとに 0〜1 の色で記録上下・左右のグラデーション
Thickness内側に向けて測った厚み(薄い=黒、厚い=白)サブサーフェス、薄い部分のマスク
Heightハイポリの表面がローポリからどれだけ離れているか凹凸の補助
Bent normals環境光が平均してどの方向から届くか陰影の補助
Opacityレイがハイポリに当たらなかった部分を黒にした白黒のマップ切り抜き用の不透明度
Substance 3D Painter の10種類のメッシュマップの見た目
図1:10種類のメッシュマップ。同じモデルでも記録する情報がまったく違う

10種類すべてを毎回焼く必要はありません。ただし、次に説明するジェネレーターが使うマップは、最初にそろえておくと後の作業が楽になります。

夕宮たいだ

ほえ〜、10種類もあるんだぁ。でも、全部をいきなり覚えなくて大丈夫。「どのジェネレーターが、どのマップを使うか」から逆算すればいいんだよぉ。

ジェネレーターとの関係

ひとことで:ジェネレーターはメッシュマップを材料にマスクを作るので、必要なマップが無いと正しく動きません。

ジェネレーターは、焼いたマップをもとにモデルの形に沿ったマスクを作る機能です。マスクを右クリックして Add generator を選び、Properties の Generator ボタンから種類を選びます。公式ドキュメントで、主なジェネレーターが入力に使うメッシュマップは次のとおりです。

ジェネレーター使うメッシュマップ
Ambient OcclusionAmbient Occlusion・Position・World Space Normal
CurvatureCurvature・Position・World Space Normal
DirtCurvature・Ambient Occlusion・Position・World Space Normal
Metal Edge WearCurvature・Ambient Occlusion・Position・World Space Normal
Mask EditorThickness・Curvature・Ambient Occlusion・Position・World Space Normal
PositionPosition・World Space Normal
3D Linear GradientPosition

多くのジェネレーターが Ambient Occlusion・Curvature・Position・World Space Normal を使います。これに Thickness と Normal を加えた6種類を、最初に焼く基本セットにすると迷いません。スマートマテリアルやスマートマスクも、焼いた Curvature や Normal などを前提にしています。

メッシュマップとジェネレーターの対応関係
図2:多くのジェネレーターが AO・Curvature・Position・World Space Normal を使う
夕宮たいだ

メッシュマップを焼かずにスマートマテリアルを置いて「効かない〜」って悩むの、絶対ダメだよ! 先にベイク、それからスマートマテリアル。この順番なんだぁ。

Baking モードでの基本手順

ひとことで:Baking モードに切り替え、焼く対象・マップ・共通設定を選んで、Bake ボタンで焼きます。

  • 手順1 Baking モードに切り替える:ビューポート右上のクロワッサン形のボタン、Mode > Bake Mesh Maps、F8 キーのいずれかで切り替えます(Painting モードへは F9 キー)
  • 手順2 Texture Set を選ぶ:Texture Set list のチェックボックスで、焼く Texture Set(UV タイルを使う場合はタイル番号も)を選びます
  • 手順3 マップを選ぶ:Mesh map bakers パネルのチェックボックスで、焼くメッシュマップを選びます
  • 手順4 共通設定を決める:Common settings パネルで Output size や Dilation width、ハイポリを指定します。ハイポリが無い場合は Use Low Poly Mesh as High Poly Mesh を有効にします
  • 手順5 焼く:ビューポート下部の Bake ボタンで開始します。12.1 では、ボタンに焼く枚数(Texture Set 数 × UV タイル数 × マップ数)が表示されます
  • 手順6 Baking Log を確認する:エラーがあれば、メッセージ横の矢印から該当する設定へ移動できます

12.1 の Mesh map bakers パネルには、マップごとに表示・クイックベイク・Auto-rebake(設定の変更で自動的に焼き直す)・Texture Set 間の同期のボタンがあります。Common settings は Texture Set ごとの設定なので、Texture Set が複数あるときは Synchronize settings で同期します。

解像度・Dilation・アンチエイリアスの決め方

ひとことで:Output size は Texture Set と同じか1段上にし、アンチエイリアスは必要な場面だけ上げます。

Output size(出力解像度)

  • 焼くメッシュマップの解像度です。鍵のボタンを外すと、縦と横で異なる解像度にできます
  • 目安は Texture Set Settings の Size と同じか1段上です(最終が 2048 なら 2048 か 4096)。低い解像度で焼いてから上げると、エッジが甘くなります
  • 値は選んだすべてのマップに共通です。Normal だけを高解像度にしたい場合は、ほかのマップを焼いたあと Normal だけにチェックを入れ、Output size を上げて焼き直します

Dilation width と Apply diffusion

Dilation width は、焼いた情報を UV アイランドの外側へ何ピクセル広げるか(パディング)を決めます。Apply diffusion は、その外側をなだらかなグラデーションで埋めます。どちらもミップマップで縮小されたときに UV の境目が線として浮くのを防ぐ後処理で、UV の外側に色が引き伸ばされた模様が出ても問題ありません。

Antialiasing(アンチエイリアス)

UV の境界付近に出る黒い点やギザギザを減らす設定です。高い解像度で計算してから縮小するため、2048 に 2×2 を使うと内部では 4096 相当を計算し、時間が大きく伸びます。ベイカーの資料では既定値は None で、Painter では Supersampling と倍率で表記されます(バージョンによって表記が異なります)。

公式ドキュメントでは、境界のギザギザへの対処として、出力解像度を上げる、Antialiasing を上げる、DCC 側で UV の境界をピクセルのグリッドに合わせる、UV のテクセル比を改善する、の4つが挙げられています。AO のノイズが気になるときは、そのマップの Secondary rays(レイの本数)を先に増やすほうが短時間で済むこともあります。

アンチエイリアスは高い解像度で計算してから縮小する
図3:アンチエイリアスは細かく計算してから縮小するため、時間がかかる
夕宮たいだ

解像度もアンチエイリアスも、上げれば上げるほどきれい……だけど、待ち時間もどんどん伸びるんだぁ。むずかしいねぇ。最初は Texture Set と同じ解像度、アンチエイリアスなしで1回焼いてみよ〜。

ハイポリなしで焼く・ハイポリから焼く

ひとことで:最初はローポリ自身から焼いて流れをつかみ、ハイポリからのベイクは次の段階で覚えます。

ハイポリが無い場合は、Common settings の Use Low Poly Mesh as High Poly Mesh を有効にして、プロジェクトのメッシュ自身から焼きます。レイの距離の調整が要らず、位置ずれによる取りこぼしも起きません。Ambient Occlusion・Curvature・Position・Thickness・World Space Normal はローポリの形からでも役立ちますが、ハイポリとの差を記録する Normal や Height には細部が入りません。

ハイポリを使う場合は、次の設定が入口になります。

  • High definition meshes:ハイポリのファイルを追加します(複数可)
  • Cage:Distance based(ローポリを一定の距離だけふくらませる)、Automatic (experimental)(自動生成)、Custom file(ケージ用メッシュを読み込む。ローポリと同じ頂点数が必要)から選びます。Distance based では、ケージとモデルの交差を示す赤い部分が消えるように Frontal と Rear の距離を調整します
  • Match:Always ではケージ内のすべてのハイポリを焼きます。隣のパーツの形が焼き込まれる場合は By mesh name にして、名前の末尾(既定は _low と _high。大文字と小文字も区別)で対応させます

詳しい実務は「Substance 3D PainterのHigh to Lowベイク実務」で扱います。

焼いた結果を確認する・差し替える

ひとことで:B キーで1枚ずつ確認し、おかしなマップは焼き直すか、Texture Set Settings から外します。

  • Painting モードで B キーを押すと、メッシュマップが1枚ずつソロ表示されます(Shift+B で逆順)。Curvature はエッジが白くくぼみが黒いか、Ambient Occlusion はくぼみだけが暗いかを見ます
  • 焼いた直後にモデルが真っ黒に見えるときは、AO などが真っ黒に焼けている可能性があります。ハイポリの読み込みエラー、名前の対応のミス、UV が 0〜1 の範囲外にある、などを Baking Log で確かめて焼き直すか、そのマップを Texture Set Settings から外します
  • Normal Map Format や Compute Tangent Space per Fragment を変えたら、メッシュマップを焼き直します
  • 別のツールで焼いたマップは、New project の Import baked maps で読み込めます。自動で割り当てるには「Texture Set 名_メッシュマップ名」の命名が必要です(例:DefaultMaterial_ambient_occlusion.png)
  • 焼いたマップ自体を書き出すときは、File > Export Textures の出力テンプレートで Mesh Maps を選びます
夕宮たいだ

ぁぅ……焼いた直後にモデルが真っ黒になると、ほんと焦るよねぇ。まずは B キーで1枚ずつ見て、どのマップが原因か探してねぇ。

よくある失敗と対処

ひとことで:マップの不足、解像度の不足、レイの当たり方、焼き直し忘れのどれかに切り分けます。

症状主な原因対処
ジェネレーターやスマートマテリアルの結果がおかしい必要なメッシュマップを焼いていない基本セット(Normal・AO・Curvature・Position・World Space Normal・Thickness)を焼く
焼いた後にモデルが真っ黒になるAO などが真っ黒に焼けているBaking Log で原因を確かめて焼き直すか、そのマップを外す
UV の境界に黒い点やギザギザが出る解像度の不足、UV が細くピクセルに乗らないOutput size や Antialiasing を上げ、UV の配置とテクセル比を見直す
隣のパーツの形が焼き込まれるレイが別のパーツのハイポリに当たっているMatch を By mesh name にし、ケージや距離を詰める
Normal が面ごとにカクカクしているローポリのすべてのエッジがハードエッジになっているDCC 側で頂点法線を整えて書き出し直す

頂点法線の整え方は「Mayaのスムージングと頂点法線」、UV とテクセル比の考え方は「UVとテクセル密度の設計|チームで品質を揃える数値基準」を参照してください。

チェックリスト

ひとことで:ベイクの前後に、次の項目を確認してください。

  • 焼く Texture Set(と UV タイル)にチェックが入っている
  • Normal・Ambient Occlusion・Curvature・Position・World Space Normal・Thickness を焼いた
  • Output size が Texture Set の解像度と同じか1段上になっている
  • Texture Set が複数ある場合、Common settings がそろっている
  • ハイポリを使う場合、ケージの交差を示す赤い部分が出ていない
  • Baking Log にエラーが出ていない
  • B キーで各メッシュマップを1枚ずつ確認した
  • Normal Map Format などを変えたあとに焼き直した

次に読む記事

夕宮たいだ

ふぁ……これでメッシュマップの基本はおしまい……かな? 焼いて、B キーで見て、ジェネレーターで使う。この流れができれば十分だよぉ。ハイポリからのベイクは、次の記事でねぇ。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次