
概要 📖 – 他のマテリアルを参照する
Select MATは、ワイヤー接続を使わず、ネットワーク内の別の場所にある MAT をパス文字列で指定して参照する選択中継 MATです。Select MAT は Null MAT と類似した中継ノードですが、Null MAT が上流ワイヤー接続を必要とするのに対し、Select MAT は selectmat パラメータに指定したパス文字列で MAT を取得する点が異なります。これにより、ネットワーク図上の配線を増やさずに別 COMP 内・親階層・templates 配下の MAT を参照でき、動的なマテリアル切替や集中管理レジストリ的な使い方が可能になります。Deform Page と Common Page も独立に保持しており、Select MAT 自身に固有のスキニング設定や描画設定を持たせることもできます。
主な用途 🎯
- ワイヤー接続なしで遠隔の MAT を参照し、ネットワーク図の配線を増やさずに別 COMP 内の MAT を利用
- 動的なマテリアル切替として、
selectmatパラメータにエクスプレッションを書き状況に応じて参照先 MAT を切替 - マテリアルレジストリ風の集中管理として、共有 MAT 群を 1 箇所にまとめ Select MAT 群から参照
- カスタム COMP の外部 MAT 参照として、サブネット内から親階層・別ブランチ・templates 配下の MAT を取得
- Deform 設定の独立管理として、Select MAT 上で Deform Page をオンにし上流とは独立したスキニング設定を持たせる
データフロー 🔄
参照元: ネットワーク内のいずれかの MAT (Phong / PBR / Constant 等)
↓ (パス参照、ワイヤー無し)
Select MAT がselectmatパスで取得
↓
出力: 下流 MAT または Geometry COMP の Material 参照先
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Select Page 🎯
Select MAT .selectmat 🎯
取得対象 MAT のパスを指定:
- Select MAT:
selectmat取得対象 MAT のパス。相対パス (例:../mats/phong1) でも絶対パス (例:/project1/materials/main_mat) でも指定可能。エクスプレッションを記述すれば動的切替も可
Deform Page 🦴
Deform .dodeform 🦴
ボーンによるジオメトリ変形をこのマテリアル上で有効化:
- Deform トグル:
dodeformこのマテリアル上でスケルトン変形を有効化
Get Bone Data .deformdata 📍
デフォームボーンデータの取得元
| 項目 | 内部名 | 説明 |
|---|---|---|
| From SOP | .fromsop |
SOP の capture 属性から取得 |
| From MAT | .frommat |
別の参照元 MAT (capture 属性を持つ SOP 由来) からデフォームデータを継承 |
Bone Capture 設定 .bonecapture 🦴
Capture 属性とスケルトンルートの指定:
- SOP with Capture Data:
targetsoppCaptPath/pCaptData属性を持つ SOP のパスを指定 - pCaptPath Attrib:
pcaptpath使用する pCaptPath 属性名 (Bone Group SOP 通過後はpCaptPath0/pCaptPath1等に分割される) - pCaptData Attrib:
pcaptdata使用する pCaptData 属性名 (pCaptPath と対になる) - Skeleton Root Path:
skelrootpathスケルトンのルート COMP のパス - MAT:
matGet Bone DataがFrom MAT時に参照する他 MAT または参照元 MAT (capture 属性を持つ SOP 由来) のパス
Common Page 🔧
Blending .blending 🎨
色のブレンディング (透過合成) に関する設定群
| 項目 | 内部名 | 説明 |
|---|---|---|
| Add | .add |
ソースとデスティネーションを加算 |
| Subtract | .subtract |
ソースからデスティネーションを減算 |
| Reverse Subtract | .revsubtract |
デスティネーションからソースを減算 |
| Minimum | .minimum |
両者の最小値を採用 |
| Maximum | .maximum |
両者の最大値を採用 |
| Blending (Transparency) | .blending |
透過効果のためのカラーブレンディングを有効化するトグル |
| Separate Alpha Function | .separatealphafunc |
アルファチャンネルのブレンド設定を RGB と独立させる |
| Blend Constant Color | .blendconstant |
constantcol 系オプション選択時に使用する RGB 定数カラー |
| Blend Constant Alpha | .blendconstanta |
constanta 系オプション選択時に使用する定数アルファ値 |
| Legacy Alpha Behavior | .legacyalphabehavior |
旧バージョンのアルファ処理との後方互換を有効化 |
| Post-Mult Color by Alpha | .postmultalpha |
ブレンド演算完了後に RGB を計算後アルファで乗算 |
Depth Test .depthtest 📏
デプステスト (Z 比較) によるオクルージョン制御
| 項目 | 内部名 | 説明 |
|---|---|---|
| Less Than | .less |
新ピクセルのデプスが既存より小さい (手前) なら描画 |
| Less Than or Equal | .lessorequal |
新ピクセルが既存以下なら描画 |
| Equal | .equal |
デプスが完全一致時のみ描画 |
| Greater Than | .greater |
新ピクセルが既存より大きい (奥) なら描画 |
| Greater Than or Equal | .greaterorequal |
新ピクセルが既存以上なら描画 |
| Not Equal | .notequal |
デプスが一致しない場合のみ描画 |
| Always | .always |
デプス比較を行わず常に描画 |
| Depth Test | .depthtest |
デプスバッファとの比較によるオクルージョンを有効化 |
| Write Depth Values | .depthwriting |
デプステストを通過したピクセルのデプス値をデプスバッファに書き込む |
Alpha Test .alphatest 🔍
アルファ値に基づくピクセル単位の破棄判定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Less Than | .less |
アルファが閾値より小さいピクセルを残す |
| Less Than or Equal | .lessorequal |
アルファが閾値以下のピクセルを残す |
| Greater Than | .greater |
アルファが閾値より大きいピクセルを残す |
| Greater Than or Equal | .greaterorequal |
アルファが閾値以上のピクセルを残す |
| Discard Pixels Based on Alpha | .alphatest |
ピクセル単位でアルファによる破棄判定を有効化 |
| Alpha Threshold | .alphathreshold |
アルファ比較の閾値。条件外のピクセルは破棄される |
Wire Frame .wireframe 🕸️
ジオメトリをワイヤーフレーム表示する設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
通常のソリッド描画 (ワイヤーフレーム無効) |
| OpenGL Tesselated Wire Frame | .tesselated |
OpenGL が三角形分割した状態でワイヤーを描画 |
| Topology Wire Frame | .topology |
元のポリゴントポロジ (四角形等) のままワイヤーを描画 |
| Line Width | .wirewidth |
ワイヤーフレームの線の太さ (ピクセル単位) |
Cull Face .cullface 🔺
ポリゴンの表裏どちらを描画するか (カリング) の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Render Setting | .userender |
Render TOP 側の設定に従う |
| Neither | .neither |
両面とも描画 (カリングなし) |
| Back Faces | .backfaces |
裏面をカリング、表面のみ描画 |
| Front Faces | .frontfaces |
表面をカリング、裏面のみ描画 |
| Both Faces | .bothfaces |
両面をカリング (= 何も描画されない) |
Polygon Depth Offset .polygonoffset ↔️
Z-fighting 対策としてポリゴンのデプス値をオフセット
| 項目 | 内部名 | 説明 |
|---|---|---|
| Polygon Depth Offset | .polygonoffset |
ポリゴンのデプス値オフセット機能を有効化 |
| Offset Factor | .polygonoffsetfactor |
デプス勾配に対するオフセットの乗数 |
| Offset Units | .polygonoffsetunits |
デプス単位の固定オフセット量 |
Color Space .parmcolorspace 🌈
カラーパラメータの色空間 / 基準白色の解釈
| 項目 | 内部名 | 説明 |
|---|---|---|
| sRGB | .srgb |
SDR sRGB トランスファ関数 (一般的なディスプレイ標準) |
| sRGB – Linear | .srglinear |
SDR リニアトランスファ |
| Rec.601 (NTSC) | .rec601ntsc |
SDR NTSC 規格 (旧テレビ放送) |
| Rec.709 | .rec709 |
SDR ビデオ規格 (HD テレビ) |
| Rec.2020 | .rec2020 |
HDR 放送規格 (4K/8K UHD) |
| DCI-P3 | .dcip3 |
HDR シネマ規格 (D65 ホワイトポイント) |
| DCI-P3 (D60) | .dcip3d60 |
HDR シネマ規格 (D60 ホワイトポイント) |
| Display-P3 (D65) | .displayp3d65 |
HDR sRGB ガンマ (Apple ディスプレイ等) |
| ACES2065-1 | .aces2065-1 |
HDR リニアシネマ規格 (アーカイブ用) |
| ACEScg | .acescg |
HDR リニアシネマ作業用色空間 |
| Passthrough | .passthrough |
色空間変換を行わずそのまま渡す |
実践アイデア 💡
Example 1: ワイヤー接続なしで遠隔の MAT を参照する (配線レス構成) 🎯
別 COMP 内の Phong MAT (パス: /project1/materials/main_mat) → Select MAT (selectmat = /project1/materials/main_mat) → Geometry COMP の Material 参照先
ネットワーク図の配線を減らしたい / 別 COMP 内のマテリアルを利用したい場合に Select MAT を使います。Geometry COMP は手元の Select MAT を参照するだけでよく、その Select MAT の selectmat パラメータに参照したい MAT の絶対 / 相対パスを書きます。ワイヤー線が引かれないため、ネットワーク図が整理され、別 COMP 内のマテリアルへのアクセスも自然にできます。
- 別 COMP (例:
/project1/materials) 内に Phong MAT を作成し、共有マテリアルとして使うものをmain_matと命名 - シーン側に Select MAT を作成し、
selectmatパラメータに/project1/materials/main_matと入力 - Geometry COMP の
Materialパラメータに手元の Select MAT のパスを指定 - ネットワーク図上にワイヤー接続が引かれず、別 COMP 内の MAT を利用できる状態が完成
- 参照先 MAT のパラメータを変更すると Select MAT 経由で即座に Geometry COMP の描画にも反映される
Example 2: エクスプレッションでマテリアルを動的に切替える 🔀
複数の MAT 候補 (mat_red / mat_blue / mat_green) → Select MAT (selectmat = エクスプレッション) → Geometry COMP
Select MAT の selectmat パラメータにエクスプレッションを書くことで、外部条件 (Constant CHOP の値・スイッチ・タイマー等) に応じて参照する MAT を実行時に切替できます。Null MAT 方式 (ワイヤーの繋ぎ換え) では実現できない、パス文字列レベルでの動的選択が可能です。
- 用意する色違いマテリアル (例:
mat_red/mat_blue/mat_green) を同階層に配置 - 切替制御用に Constant CHOP を作成し、チャンネル
idxに0/1/2を入れる - Select MAT の
selectmatパラメータに次のエクスプレッションを入力:['mat_red','mat_blue','mat_green'][int(op('constant1')['idx'])] - Geometry COMP の
Materialパラメータに Select MAT のパスを指定 - Constant CHOP の
idx値を変更すると、Select MAT が参照する MAT が切替り、ジオメトリの見た目が動的に変化する
Example 3: マテリアルレジストリとして集中管理する 📚
1 箇所のマテリアル集約 COMP (Phong / PBR / Constant 多数) → 各シーン側の Select MAT 群がパス参照 → それぞれの Geometry COMP の Material 指定先
プロジェクト規模が大きくなると、複数のシーンや COMP で同じマテリアルを使い回したくなります。Select MAT を使えば、マテリアル定義を 1 つの「マテリアルレジストリ COMP」に集約し、各シーン側からはパス参照だけで取得できます。マテリアルの中央管理が可能になり、定義変更も 1 箇所で済みます。
- プロジェクトルート直下に マテリアルレジストリ COMP (例:
/project1/materials) を作成 - そこに使いまわす MAT を全て配置 (Phong MAT / PBR MAT / Constant MAT 等を命名付きで整理)
- 各シーン (Render TOP 配下の COMP 群) に Select MAT を配置し、
selectmatに/project1/materials/<material_name>を指定 - Geometry COMP の
Material指定先はすべて手元の Select MAT に統一 (シーン内で完結) - マテリアル定義を変更したいときは
/project1/materials/内の MAT を 1 箇所更新するだけで全シーンに反映
関連オペレータ 🔗
類似機能OP 🔍
- Null MAT — ワイヤー接続経由でマテリアルを中継するパススルー MAT。Select MAT が「パス文字列で取得」するのに対し Null MAT は「ワイヤー接続で中継」する点が差別化要素
- In MAT — カスタム MAT subnet の入力点。subnet 内部から外部 MAT を受取る用途で、Select MAT のような任意パス参照ではなく subnet I/O に限定される
- Out MAT — カスタム MAT subnet の出力点。In MAT と対になる subnet I/O 専用 MAT
組み合わせ推奨OP 🔄
- Phong MAT — Select MAT が参照する代表的な標準ライティング MAT
- PBR MAT — 物理ベースシェーディング MAT。マテリアルレジストリで集中管理する典型的な参照先
- Constant MAT — ライティング無視の単色 MAT。デバッグや UI 表示用に Select MAT 経由で参照
- Geometry COMP —
Materialパラメータに Select MAT のパスを指定する代表的な下流 COMP - Replicator COMP — 複製した Geometry COMP 群が共通の Select MAT を Material 参照することで、複製先全体の見た目を一括制御
前処理・後処理MAT 🎯
Info情報 📊
MAT は Info CHOP / Info DAT に接続することで、シェーダコンパイル状況やクック情報を取得できます。
汎用オペレータ情報 🔄
total_cooks: プロセス開始からの累計クック回数cook_time: 直近クックに要した時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 現在の警告数 (シェーダコンパイル警告含む)errors: 現在のエラー数 (シェーダコンパイルエラー含む)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Select MAT を指定したのに下流ジオメトリにマテリアルが適用されない (真っ黒 / デフォルト表示になる)
✅ Solution:
selectmatパラメータに指定したパスが正しいか確認。スペルミス / 大文字小文字 / 相対パスの基準位置を見直し、ノードビューで対象 MAT が存在するか目視で確かめる- 参照先の MAT が無効化 / Bypass 状態になっていないか、その MAT 自体が正常にクックしているかを Info CHOP で確認
- Geometry COMP の
Materialパラメータが Select MAT のパスを正しく指しているか、相対パス / 絶対パスのスペルミスを確認
❌ Problem: エクスプレッションでパスを切替えても参照先 MAT が更新されない
✅ Solution:
- エクスプレッションの結果が文字列として有効な MAT パスを返しているか、
selectmatパラメータを右クリック →Show Parameter Valueで実際の評価結果を確認 - エクスプレッション内で参照している CHOP / DAT が正常にクックしているか、依存元のクックタイミングを Info CHOP で確認
- Geometry COMP / Render TOP のクック順序が問題でキャッシュが古い場合は、シーン全体のクックを強制更新 (
Force Cook) する
❌ Problem: Select MAT 上で Deform Page をオンにしてもボーン変形が反映されない
✅ Solution:
- Select MAT の
Deformをオン、Get Bone DataをFrom SOPまたはFrom MATに正しく設定し、対応するSOP with Capture Data/MATパラメータを指定する - 参照先の MAT 側でも Deform 設定が必要な場合は、両方の Deform Page を一致させるか、参照経路を Null MAT 中継に変更する構成を検討
- Skeleton Root Path とジオメトリ側の
pCaptPath/pCaptData属性が整合しているか Bone Group SOP 通過後の属性名 (pCaptPath0等) も含めて確認
❌ Problem: Select MAT の Common Page (Blending / Depth Test 等) を変更したのに下流の描画に反映されない
✅ Solution:
- Geometry COMP が Select MAT を
Material直接参照していれば Select MAT の Common Page が使われるが、別の MAT を参照している場合はそちら側の Common Page が優先される - Select MAT を「論理的な選択点」として使う場合、Common Page は実際に Material 参照される MAT (= 参照先の描画 MAT) 側で設定するのが正しい運用
- Common Page の
Cull FaceがBoth Facesになっていないかも確認 (両面カリング = 何も描画されない)
参考資料 📚
その他 🔗
- TouchDesigner Wiki — MAT 概要
- TouchDesigner Wiki — Category:MATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Select MAT
- Null MAT (ワイヤー接続経由のパススルー MAT、対比対象)
- In MAT (カスタム MAT subnet の入力点)
- Out MAT (カスタム MAT subnet の出力点)

