
概要 📖 – マテリアルの入力口になる
In MATは、カスタムマテリアル subnet の入力点として、外部 MAT を subnet 内部に公開する中継 MATです。Container COMP や baseCOMP でカスタムマテリアル subnet を構築するときに、外部 MAT を内部へ取り込むために配置するノードです。Out MAT と対になり subnet の I/O 構造を成し、ボーンキャプチャ元 MAT から取得したボーンスケルトンデータを subnet 内へチェーンしていく中継点としても使用されます。
主な用途 🎯
- カスタムマテリアル subnet (baseCOMP / Container COMP) に外部 MAT を公開する入力点
- ボーンキャプチャ元 MAT との連携でボーンスケルトンデータを subnet 内へ中継
- マテリアルパススルーとして subnet 内部からの参照経路を一本化
- 再利用可能なマテリアルロジックをカプセル化したカスタム MAT subnet の構築
- Out MAT と対になる接続点として subnet の I/O 構造を明示化
データフロー 🔄
入力: COMP 外部の MAT (Phong / PBR / Constant 等)
↓
In MAT が subnet 内に公開
↓
subnet 内の他 MAT / Geometry COMP が参照
↓
出力: 通常 Out MAT を経て subnet 外へ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
In Page 📥
Label .label 🏷️
Component 入力ピンに表示されるロールオーバーラベル:
- Label:
labelこの Component 入力にカーソルがロールオーバーした際にポップアップ表示される識別ラベル
Deform Page 🦴
Deform .dodeform 🦴
ボーンによるジオメトリ変形をこのマテリアル上で有効化:
- Deform トグル:
dodeformこのマテリアル上でスケルトン変形を有効化
Get Bone Data .deformdata 📍
デフォームボーンデータの取得元
| 項目 | 内部名 | 説明 |
|---|---|---|
| From SOP | .fromsop |
SOP の capture 属性から取得 |
| From MAT | .frommat |
別の MAT (ボーンキャプチャ元 MAT 等) からデフォームデータを継承 |
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 のパス
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: カスタムマテリアル subnet の入力点として配置 📥
外部 MAT (Phong/PBR/Constant) → baseCOMP の入力ピン → In MAT (subnet 内) → subnet 内の他 MAT / Geometry COMP → Out MAT → subnet 外へ
再利用可能なマテリアル処理をカプセル化したカスタム MAT subnet を構築するとき、subnet 外部から入ってきた MAT を内部に公開するための入口として In MAT を配置します。Out MAT と対になり subnet の I/O 構造を成立させる、最も基本的な使い方です。
- baseCOMP または Container COMP を作成しダブルクリックで内部へ入る
- subnet 内部に In MAT を作成 (作成すると COMP の外側に入力ピンが追加される)
- subnet 内部の他 MAT (Phong MAT / PBR MAT 等) の入力に In MAT を接続して、外部マテリアルを参照
- subnet 内部に Out MAT を配置し、subnet の最終出力 MAT を接続
- subnet 外側で、Geometry COMP に baseCOMP を割り当てるか、baseCOMP の入力ピンに外部 MAT を接続
Example 2: ボーンキャプチャ元 MAT と連携したボーンスケルトン継承 🦴
ボーンキャプチャ元 MAT (subnet 外) → baseCOMP 入力ピン → In MAT → subnet 内マテリアルの Get Bone Data=From MAT 参照
サブネット化したマテリアルでスキニングアニメーションを正しく扱うには、外部の ボーンキャプチャ元 MAT が保持するボーンキャプチャ情報を subnet 内へ中継する必要があります。In MAT は Get Bone Data を From MAT に設定して接続済み MAT のデフォームデータを継承できます。
- subnet 外側に ボーンキャプチャ元 MAT を配置し、ボーンキャプチャ情報源として接続
- subnet 内部の In MAT で
Deformをオン、Get Bone DataをFrom MATに設定 - subnet 内の他のレンダリング MAT (Phong / PBR) でも同様に
Get Bone Data=From MAT+MATパラメータで In MAT を参照 - 外部の ボーンキャプチャ元 MAT を差し替えれば subnet 全体のボーン適用元が一括で切り替わる
Example 3: 複数入力MAT subnetで合成 🔀
外部 MAT A / MAT B → baseCOMP の入力ピン 1, 2 → In MAT 1, 2 (subnet 内) → カスタム合成ロジック → Out MAT
GLSL MAT 等を内部に含む subnet で複数のマテリアルを切替・合成したい場合、入力ピンの数だけ In MAT を並べることで、subnet 外部からのマテリアル入力を複数受け取れます。In MAT は名前と Label で識別され、ピンの順序は subnet 内の配置順に従います。
- subnet 内部に In MAT 1 を配置し
Labelパラメータに「base」等の識別名を入力 - もう一つ In MAT 2 を配置し
Labelを「overlay」等に設定 - subnet 外側の baseCOMP に 2 つの入力ピンが現れる (順序は subnet 内の配置順)
- subnet 内部の GLSL MAT / カスタム MAT で両 In MAT を入力として参照し合成ロジックを実装
- 外部から異なる MAT を 2 ピンに接続するだけで subnet 全体のマテリアル切替が可能
関連オペレータ 🔗
類似機能OP 🔍
- Out MAT — subnet の出力点。In MAT と対になり subnet の I/O 構造を成立させる
組み合わせ推奨OP 🔄
- Out MAT — In MAT と対の出力点として subnet の I/O を構成、必須の組み合わせ
- baseCOMP — In MAT を内包するカスタム MAT subnet のコンテナ
- Container COMP — UI を伴う subnet を作る際の代替コンテナ
- Geometry COMP — subnet 化されたカスタム MAT を最終的に Material 指定する先
前処理・後処理MAT 🎯
Info情報 📊
MAT は Info CHOP / Info DAT に接続することで、シェーダコンパイル状況やクック情報を取得できます。
汎用オペレータ情報 🔄
total_cooks: プロセス開始からの累計クック回数cook_time: 直近クックに要した時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 現在の警告数 (シェーダコンパイル警告含む)errors: 現在のエラー数 (シェーダコンパイルエラー含む)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: In MAT を配置しても subnet の外側に入力ピンが現れない
✅ Solution:
- In MAT は baseCOMP / Container COMP の内部に配置されている必要がある。Root (
/) や Geometry COMP の内部に置いても入力ピンは生成されない - ピンの順序は subnet 内の In MAT の配置順 (左から右、上から下) に従う。意図した順序にならない場合は In MAT を一旦削除して再配置するか、内部名 (in1 / in2) を確認する
- 親 COMP の
Inputsパラメータ (Component Editor) でピン構成を確認すると、実際に何本の MAT 入力が生成されているか分かる
❌ Problem: 外部から接続した MAT が subnet 内部で参照できない / 何も表示されない
✅ Solution:
- subnet 内の他 MAT で In MAT を入力に接続したか確認 (パラメータ参照ではなく、ノードの接続線で繋ぐ)
- 外部の MAT 出力が実際にデータを生成しているか、外部側で単体テストする (Geometry COMP に直接割当てて表示確認)
- baseCOMP の入力ピンが Material 入力として認識されているか、親 COMP の Component Editor で In MAT が正しく検出されているか確認
❌ Problem: Deform データが subnet 内へ伝達されない
✅ Solution:
- In MAT 側で
Deformをオン、Get Bone DataをFrom MATに設定 - subnet 内の参照側 MAT (Phong MAT 等) でも
Get Bone Data=From MATにしてMATパラメータに In MAT のパスを指定 - 上流の capture 属性を持つ SOP / 参照元 MAT が正しくボーンキャプチャ情報を保持しているか、
SOP with Capture Data/pCaptPath Attrib/Skeleton Root Pathを確認
❌ Problem: Common Page のブレンディング / デプステスト設定が効いていないように見える
✅ Solution:
- In MAT 自体はパススルー的な中継ノードなので、最終的なレンダリングに使われるのは subnet 外の Out MAT または subnet 内の下流 MAT の Common Page 設定であることが多い
- subnet 全体としてどの MAT が最終出力 (Out MAT) かを確認し、その MAT の Common Page を調整する
- 中間の In MAT で Common Page を変更しても、参照側 MAT が独自の Common Page 設定を持つ場合はそちらが優先される
参考資料 📚
その他 🔗
- TouchDesigner Wiki — MAT 概要
- TouchDesigner Wiki — Category:MATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group


