
概要 📖 – 素材から質感マップ生成
Substance TOPは、Substance Designer で作られた .sbsar 素材ファイルを読み込み、PBR 質感マップを生成して出力する TOPです。GPU エンジンを既定とし、Graph で素材内のグラフ、Output で出力する質感マップを切り替えられます。Grid Preview を使うと素材内の全テクスチャマップを一覧で確認できます。
主な用途 🎯
- Substance Designer で作成した
.sbsar素材ファイルの読込と展開 - ベースカラー・法線・粗さ等の PBR 質感マップ (テクスチャ) の生成
- パラメトリック素材のパラメータをリアルタイムに変化させた質感アニメーション
- 生成した質感マップをレンダリング用マテリアルへ供給するソース
- 1 つの素材ファイル内の複数グラフ・出力マップの一括プレビュー (Grid Preview)
データフロー 🔄
入力: なし
↓
素材ファイル (.sbsar) を読込
↓
Graph で使用するグラフを選択
↓
Engine (GPU / CPU) で質感を計算
↓
Output で出力する質感マップを選択
↓
出力: 質感テクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
素材ファイルの読込 📁
Substance Designer File .file 📄Substance Designer File (素材ファイル) — Substance Designer で書き出した .sbsar 素材ファイルのパスを指定します。この TOP の質感はすべてこのファイルから生成されます。
Reload File .reloadconfig 🔄Reload File (ファイル再読込) — 指定した素材ファイルをディスクから読み直します。Substance Designer 側でファイルを更新した後にこれを押すと最新内容が反映されます。
Output .output 📤
Output .output 🗂️Output (出力マップ) — 出力する質感マップ (ベースカラー・法線・粗さ等) を選択します。Grid Preview では素材内の全テクスチャマップを一覧表示でき、素材にどのマップが含まれるかをまとめて把握できます。
Graph .graph 🗺️
Graph .graph 🗺️Graph (使用グラフ) — .sbsar ファイル内に複数グラフがある場合、どのグラフを使用するか指定します。詳細は Substance のグラフ関連ドキュメントを参照してください。
Invert Normal Map .invertnormal 🔃
Invert Normal Map .invertnormal 🔃Invert Normal Map (法線マップ反転) — 素材ファイルの法線マップを反転します。素材の法線が -Y (DirectX 形式) の場合に使います。TouchDesigner は Y+ (OpenGL 形式) の法線マップを前提とするため、DirectX 形式の素材ではこれをオンにします。
Engine .engine ⚙️
Engine (描画エンジン) — 質感生成に使うエンジンを選択します。GPU は描画時間が大幅に短く既定値です。CPU は 2023.10000 より前のバージョンで使われていた旧式モードです。
| 項目 | 内部名 | 説明 |
|---|---|---|
| GPU | .gpu |
GPU で質感を計算 (描画時間が大幅に短く、既定のエンジン) |
| CPU | .cpu |
CPU の Substance Blend エンジンで計算 (旧式モード。2023.10000 より前のバージョンで使われていたエンジン) |
Common Page 🔧
Output Resolution .outputresolution 🖼️
出力解像度の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の解像度をそのまま継承 |
| Eighth | .eighth |
入力解像度の 1/8 |
| Quarter | .quarter |
入力解像度の 1/4 |
| Half | .half |
入力解像度の 1/2 |
| 2X | .2x |
入力解像度の 2 倍 |
| 4X | .4x |
入力解像度の 4 倍 |
| 8X | .8x |
入力解像度の 8 倍 |
Resolution .resolution 📐
カスタム解像度の幅・高さ指定 (Output Resolution = Custom Resolution の時のみ有効):
- Resolution W: 出力幅 (ピクセル単位)。
Output ResolutionがCustom Resolutionの時に有効。Constant や Ramp のように入力を使わない生成系 TOP ではこのフィールドでサイズを決める - Resolution H: 出力高 (ピクセル単位)。同上。右側のドロップダウンからよく使う解像度を選べる
Resolution Menu .resmenu 📋
よく使う解像度プリセットのドロップダウン:
- Resolution Menu: よく使う解像度のプリセットドロップダウン。選択すると
Resolution W/Resolution Hが自動セットされる
Use Global Res Multiplier .resmult 🔢
プロジェクト全体の解像度倍率の適用:
- Use Global Res Multiplier: Edit>Preferences>TOPs にある Global Resolution Multiplier をこの TOP に適用するかどうか。全 TOP の解像度を一括で倍率変更でき、ハードウェア性能の異なる環境間での調整に便利。VRAM の少ないノート PB では Half / Quarter にして動作を軽くできる
Output Aspect .outputaspect 📏
出力アスペクト比の決定方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のアスペクト比を継承 |
| Custom Aspect | .custom |
下の Aspect パラメータで任意のアスペクト比を指定 |
Aspect .aspect 📐
カスタムアスペクト比の指定 (Output Aspect = Custom Aspect の時のみ有効):
- Aspect1: 横方向アスペクト値 (
Output Aspect= Custom Aspect の時のみ有効) - Aspect2: 縦方向アスペクト値 (同上)
Aspect Menu .armenu 📋
よく使うアスペクト比プリセットのドロップダウン:
- Aspect Menu: よく使うアスペクト比のプリセットドロップダウン
Input Smoothness .inputfiltertype 🎚️
入力テクスチャのサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ネイティブ解像度以外ではジャギーが残る) |
| Interpolate Pixels | .linear |
バイリニア補間 (各ズームレベルで滑らかに見える) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (動きや縮小のあるディテール画像でのモアレ・チラつきを抑制) |
Fill Viewer .fillmode 🖥️
ビューア内でのテクスチャの収め方
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP の Fill Viewer 設定を継承 |
| Fill | .fill |
ビューアの端いっぱいに引き伸ばす |
| Fit Horizontal | .width |
横幅に合わせて収める |
| Fit Vertical | .height |
縦幅に合わせて収める |
| Fit Best | .best |
画像が切れないよう全体を収める |
| Fit Outside | .outside |
アスペクト比を保ちつつビューアを覆う (一部がはみ出して切れることあり) |
Viewer Smoothness .filtertype 🎛️
ビューア表示時のサンプリング方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Nearest Pixel | .nearest |
最近傍ピクセルサンプリング (ネイティブ解像度以外ではジャギーが残る) |
| Interpolate Pixels | .linear |
バイリニア補間 (各ズームレベルで滑らかに見える) |
| Mipmap Pixels | .mipmap |
ミップマップ補間 (縮小ビュー時のモアレ抑制。32 ビット浮動小数フォーマットでは最近傍のみ使用) |
Passes .npasses 🔁
オペレータの反復実行回数:
- Passes: TOP の処理を指定回数だけ繰り返す整数値。2 回目以降は前回パスの結果が次回パスの第 1 入力に置き換わる
Channel Mask .chanmask 🎨
処理対象のチャンネルマスク (R/G/B/A 個別トグル):
- Channel Mask:
R/G/B/Aのどのチャンネルを処理対象とするか選べる。既定では全チャンネルが選択されている
Pixel Format .format 🎨
出力テクスチャのピクセルフォーマット (ビット深度・チャンネル構成)
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Input | .useinput |
入力 TOP のピクセルフォーマットを継承 |
| 8-bit fixed (RGBA) | .rgba8fixed |
各チャンネル 8 ビット整数 (標準・軽量) |
| sRGB 8-bit fixed (RGBA) | .srgba8fixed |
8 ビット整数 RGBA を sRGB 色空間で格納 (暗部に多くのデータを割り当て、下流で線形に戻される) |
| 16-bit float (RGBA) | .rgba16float |
各色 16 ビット浮動小数、1 ピクセル 64 ビット (HDR・中間処理向け) |
| 32-bit float (RGBA) | .rgba32float |
各色 32 ビット浮動小数、1 ピクセル 128 ビット (最高精度) |
| 10-bit RGB, 2-bit Alpha, fixed (RGBA) | .rgb10a2fixed |
色 10 ビット・アルファ 2 ビット、1 ピクセル 32 ビット |
| 16-bit fixed (RGBA) | .rgba16fixed |
各色 16 ビット固定小数、1 ピクセル 64 ビット |
| 11-bit float (RGB), Positive Values Only | .rgba11float |
R/G 11 ビット・B 10 ビットの浮動小数 RGB (1 ピクセル 32 ビット)。アルファは常に 1、値は 0 以上のみ |
| 16-bit float (RGB) | .rgb16float |
16 ビット浮動小数 RGB (アルファなし) |
| 32-bit float (RGB) | .rgb32float |
32 ビット浮動小数 RGB (アルファなし) |
| 8-bit fixed (Mono) | .mono8fixed |
単一チャンネル。RGB が同値・アルファ 1.0、1 ピクセル 8 ビット |
| 16-bit fixed (Mono) | .mono16fixed |
単一チャンネルモノクロ、1 ピクセル 16 ビット |
| 16-bit float (Mono) | .mono16float |
単一チャンネル 16 ビット浮動小数モノクロ |
| 32-bit float (Mono) | .mono32float |
単一チャンネル 32 ビット浮動小数モノクロ |
| 8-bit fixed (RG) | .rg8fixed |
R+G の 2 チャンネル。B は常に 0・アルファ 1.0、各 8 ビット |
| 16-bit fixed (RG) | .rg16fixed |
R+G の 2 チャンネル、各 16 ビット固定小数 |
| 16-bit float (RG) | .rg16float |
R+G の 2 チャンネル、各 16 ビット浮動小数 |
| 32-bit float (RG) | .rg32float |
R+G の 2 チャンネル、各 32 ビット浮動小数 |
| 8-bit fixed (A) | .a8fixed |
アルファのみ 8 ビット固定小数 |
| 16-bit fixed (A) | .a16fixed |
アルファのみ 16 ビット固定小数 |
| 16-bit float (A) | .a16float |
アルファのみ 16 ビット浮動小数 |
| 32-bit float (A) | .a32float |
アルファのみ 32 ビット浮動小数 |
| 8-bit fixed (Mono+Alpha) | .monoalpha8fixed |
RGB 共通値 + アルファの 2 チャンネル、各 8 ビット |
| 16-bit fixed (Mono+Alpha) | .monoalpha16fixed |
RGB 共通値 + アルファの 2 チャンネル、各 16 ビット固定小数 |
| 16-bit float (Mono+Alpha) | .monoalpha16float |
RGB 共通値 + アルファの 2 チャンネル、各 16 ビット浮動小数 |
| 32-bit float (Mono+Alpha) | .monoalpha32float |
RGB 共通値 + アルファの 2 チャンネル、各 32 ビット浮動小数 |
実践アイデア 💡
Example 1: 質感マテリアル作成 🧱
Substance TOP (.sbsar 読込) → PBR MAT (各マップに割当) → Geometry COMP → Render TOP
Substance Designer で書き出した .sbsar 素材ファイルを Substance TOP で読み込み、生成された質感マップ群を PBR マテリアルの各スロットに割り当ててジオメトリにリアルな質感を与える基本フロー。
- Substance TOP を作成し
Substance Designer Fileに.sbsarファイルのパスを指定 Outputで必要な質感マップ (ベースカラー・法線・粗さ等) を切り替えて確認- PBR MAT の各マップスロットに Substance TOP の出力を割り当て
- Geometry COMP にマテリアルを適用し Render TOP でレンダリング
Example 2: パラメータで質感変化 🎚️
Math CHOP → (Substance TOP の素材パラメータへ Export) → Substance TOP → Composite TOP
.sbsar 素材に公開されたパラメータを CHOP の Export で時間変化させ、錆びの進行や模様の変化といった質感アニメーションをリアルタイムに生成する用途。
- Substance TOP に
.sbsarファイルを読み込み、素材が公開するパラメータを確認 - Math CHOP 等で 0〜1 の制御値を作りパラメータへ Export
- 値の変化に応じて質感マップが更新されることを確認
- Composite TOP で他レイヤと合成
Example 3: 全マップ一括確認 🔍
Substance TOP (Output=Grid Preview) → Null TOP
素材ファイルにどの質感マップが含まれているかを把握するため、Output を Grid Preview に設定して全テクスチャマップを 1 画面で一覧表示し、必要なマップを確認してから個別出力に切り替える運用。
- Substance TOP に
.sbsarファイルを読み込む Outputを Grid Preview に設定して素材内の全マップを一覧表示- 必要なマップを把握したうえで
Outputを個別マップに切り替えて後段へ供給
関連オペレータ 🔗
類似機能OP 🔍
- Movie File In TOP — 画像・動画ファイルを読み込む入力 TOP (素材ではなくメディアファイル向け)
- Ramp TOP — 入力なしで決定論的グラデーションを生成する生成系 TOP
組み合わせ推奨OP 🔄
- PBR MAT — 生成した質感マップを物理ベースレンダリング用マテリアルに割り当て
- Phong MAT — 質感マップを Phong マテリアルのカラー・法線スロットに供給
- Render TOP — 質感を適用したジオメトリを最終的に描画
- Composite TOP — 生成した質感マップを他レイヤと合成
- GLSL TOP — 質感マップをシェーダ入力としてさらに加工
- Math CHOP — 素材パラメータへ Export して質感をアニメーション化
前処理・後処理TOP 🎯
Info CHOP情報 📊
Substance TOPは Info CHOP による詳細情報取得に対応しています。
TOP固有情報 🖼️
resx: TOP の出力解像度 X (ピクセル単位)resy: TOP の出力解像度 Y (ピクセル単位)aspectx: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 法線マップの凹凸が逆に見える
✅ Solution:
Invert Normal Mapを On にして法線マップの向きを反転 (素材が DirectX 形式 -Y の場合)- TouchDesigner は OpenGL 形式 (Y+) の法線マップを前提とするため、素材の書き出し形式を確認
- 後段の PBR MAT 側の法線設定とも整合しているか確認
❌ Problem: 素材ファイルを更新したのに反映されない
✅ Solution:
Reload Fileを押してディスクから素材ファイルを読み直すSubstance Designer Fileのパスが最新の.sbsarを指しているか確認- Substance Designer 側で
.sbsarの再書き出しが完了しているか確認
❌ Problem: 質感生成が重くフレームレートが落ちる
✅ Solution:
Engineが GPU になっているか確認 (CPU は旧式モードで描画時間が長い)- Common Page の
Output ResolutionをHalf/Quarterに下げて後段で拡大 - 毎フレーム再生成が不要なら後段に Cache TOP を入れて結果を保持
❌ Problem: 目的の質感マップが出力されない
✅ Solution:
Outputで出力したいマップ (ベースカラー・法線・粗さ等) が選択されているか確認Outputを Grid Preview にして素材内に含まれるマップを一覧で確認Graphで正しいグラフが選択されているか確認 (複数グラフを含む素材の場合)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Substance TOP
- TouchDesigner公式ドキュメント – TOP (ファミリー解説)
- TouchDesigner公式ドキュメント – PBR MAT (組み合わせ参照)

