
概要 📖 – マテリアルを中継する
Null MATは、入力されたマテリアルを加工せずそのまま下流へ素通しする、参照アンカー用の中継 MATです。Null MAT 自体は本質的に「何もしない」MAT で、上流に接続された MAT をそのまま下流へ渡します。CHOP や TOP の Null と同じく、マテリアルネットワーク内に名前付きの安定した参照点を置きたいとき、上流を差し替えても下流の Material 指定を壊さないように間に挟む中継点として使用されます。Deform Page と Common Page も保持しているため、Null MAT 自身に独立した Deform 設定や描画設定を持たせることもできます。
主な用途 🎯
- マテリアル参照の安定したアンカーポイントとして、上流 MAT を差し替えても下流の Material 指定パスを変えずに済ませる
- マテリアルネットワークのデバッグ中継点として、どこまでマテリアル接続が伝わっているかを視覚的に確認
- 共有マテリアルハブとして 1 つの MAT を複数の Geometry COMP / 下流 MAT から共通参照
- Deform 設定のみを差し替える中継 MATとして、ボーン設定を Null MAT に集約し上流のカラー MAT を切替自由に
- マテリアルネットワーク整理の論理ノードとして、命名・配置・コメントによる構造化
データフロー 🔄
入力: 上流 MAT (Phong / PBR / Constant 等)
↓
Null MAT が中継 (パススルー、加工なし)
↓
出力: 下流 MAT または Geometry COMP の Material 参照先
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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: マテリアル参照アンカーとして配置 (上流差し替えに強い構造) ⚓
Phong MAT / PBR MAT 等 → Null MAT (固定パス) → Geometry COMP の Material 指定先
Geometry COMP の Material パラメータに直接 Phong MAT 等のパスを書くと、上流マテリアルを別の MAT に差し替えるたびに全 Geometry COMP の参照を書き換える必要があります。Null MAT を間に挟み、Geometry COMP は Null MAT のパスを参照させておけば、上流マテリアルを Phong → PBR → Constant と差し替えても下流の Material 指定は一切変更不要です。
- Null MAT を作成し、固定の名前 (例:
mat_character_main) を付ける - 上流に Phong MAT または PBR MAT を作成し、Null MAT に接続
- Geometry COMP の
Materialパラメータに Null MAT のパスを指定 (上流の Phong MAT 自体ではなく Null MAT を指す) - 上流マテリアルを別の MAT に差し替えるときは Null MAT への接続のみ繋ぎ換える
- Geometry COMP 側の
Material参照は変更不要で、シーン全体のマテリアル切替が 1 接続で完了
Example 2: 共有マテリアルハブとして複数 Geometry COMP から参照 🔁
1 つの上流 MAT → Null MAT (共有ハブ) → N 個の Geometry COMP が同一 Null MAT を Material 参照
シーン内で同じマテリアルを多数のジオメトリに適用したい場合、各 Geometry COMP に個別に上流 MAT を直接参照させると、マテリアル変更時に全ての参照を一括書き換える必要があります。Null MAT を共有ハブとして 1 箇所に置き、N 個の Geometry COMP がそこを指すようにすれば、マテリアル変更は Null MAT への上流接続を 1 回だけ繋ぎ換えれば全体に反映されます。
- 共有用 Null MAT を 1 つ作成 (例:
shared_floor_mat) - PBR MAT 等の上流マテリアルを Null MAT に接続
- 複数の Geometry COMP (床用・壁用・柱用 等) すべての
Materialパラメータに同一 Null MAT のパスを指定 - 上流の PBR MAT のパラメータを変更すると、Null MAT 経由で参照する全 Geometry COMP に同時反映
- マテリアル種別自体を切替えるときも、Null MAT への接続線を 1 本繋ぎ換えるだけで全 Geometry COMP に伝播
Example 3: Deform 設定を中継するスケルトン中継 MAT 🦴
ボーンキャプチャ元 MAT (ボーンキャプチャ) → Null MAT (Get Bone Data = From MAT) → 下流の Phong/PBR MAT (Null MAT のデフォーム継承)
Null MAT は単なるパススルーではなく Deform Page を独立に持っているため、上流の capture データを持つ SOP / MAT から取得したスケルトン情報を Null MAT 上で固定し、下流の複数 MAT に同じ Deform 設定を継承させる中継点として使用できます。スキニング設定とカラー設定を別レイヤで管理したいときに有効です。
- 外部に ボーンキャプチャ元 MAT を配置してボーンキャプチャ情報源として接続
- Null MAT を作成し、
Deformをオン、Get Bone DataをFrom MATに設定して ボーンキャプチャ元 MAT を参照 - 下流の Phong MAT / PBR MAT 側でも
Get Bone Data=From MAT、MATパラメータに Null MAT のパスを指定 - Geometry COMP の
Material参照は下流の Phong/PBR MAT を指す (Null MAT は Deform 設定のための論理中継として機能) - 別のスケルトン体系に切替えたいときは Null MAT の上流 ボーンキャプチャ元 MAT を差し替えるだけで全下流 MAT に伝達
関連オペレータ 🔗
類似機能OP 🔍
- In MAT — カスタム MAT subnet の入力点となる中継 MAT。Null MAT が一般用途のパススルーであるのに対し、In MAT は subnet I/O 専用
- Out MAT — カスタム MAT subnet の出力点。In MAT と対になる subnet I/O 専用 MAT
組み合わせ推奨OP 🔄
- Phong MAT — Null MAT の上流側で代表的に使われる標準ライティング MAT
- PBR MAT — 物理ベースシェーディングの上流マテリアルとして Null MAT 経由でジオメトリへ供給
- Constant MAT — ライティングを無視した単色描画用 MAT。デバッグや UI 表示のソースとして Null MAT に渡す
- Geometry COMP — Material パラメータが Null MAT を参照する代表的な下流 COMP
前処理・後処理MAT 🎯
Info情報 📊
MAT は Info CHOP / Info DAT に接続することで、シェーダコンパイル状況やクック情報を取得できます。
汎用オペレータ情報 🔄
total_cooks: プロセス開始からの累計クック回数cook_time: 直近クックに要した時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 現在の警告数 (シェーダコンパイル警告含む)errors: 現在のエラー数 (シェーダコンパイルエラー含む)
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Null MAT を介すと下流のジオメトリにマテリアルが適用されない / 真っ黒に表示される
✅ Solution:
- Null MAT の上流に有効な MAT (Phong / PBR / Constant 等) が接続されているか確認。Null MAT 単体ではマテリアル情報を持たないため、上流が未接続だと下流は無効状態になる
- Geometry COMP の
Materialパラメータが Null MAT のパスを正しく指しているか、相対パス / 絶対パスのスペルミスを確認 - Null MAT 自体の Common Page で
Cull FaceがBoth Facesになっていないか確認 (両面カリング = 何も描画されない)
❌ Problem: 上流マテリアルを差し替えても下流ジオメトリの見た目が変わらない
✅ Solution:
- Null MAT への接続を上流側で実際に繋ぎ換えたか、ノードビューで接続線の有無を目視確認
- Geometry COMP が Null MAT ではなく上流 MAT を直接参照していないか
Materialパラメータをチェック (直接参照だと Null MAT 経由のメリットが消える) - Render TOP / Geometry COMP のクックが古いキャッシュを保持していないか、シーン全体のクックを強制更新
❌ Problem: Null MAT 上で Deform 設定をしても下流の Phong/PBR MAT にボーン情報が伝達されない
✅ Solution:
- 下流の Phong/PBR MAT 側でも
Deformをオンにし、Get Bone DataをFrom MATに設定する必要がある (Null MAT 経由でも下流側の明示的な参照が必須) - 下流 MAT の
MATパラメータに Null MAT のパスを正しく指定しているか確認 - 上流の capture 属性を持つ SOP / 参照元 MAT が正しくボーンキャプチャ情報を保持しているか、
SOP with Capture Data/Skeleton Root Pathを確認
❌ Problem: Null MAT の Common Page (Blending / Depth Test 等) を変更したのに下流の描画に反映されない
✅ Solution:
- Geometry COMP が Null MAT を直接
Material参照していれば Null MAT の Common Page が使われるが、下流の Phong/PBR MAT を参照している場合はそちら側の Common Page が優先される - Null MAT を「論理アンカー」として使う場合、Common Page は実際に Material 参照される MAT (= 下流の描画 MAT) 側で設定するのが正しい運用
- Null MAT 自体を Material 参照させたい場合は、Geometry COMP の
Materialを Null MAT に向ける構成にし、Null MAT の上流 MAT は表示用ソースとして扱う
参考資料 📚
その他 🔗
- TouchDesigner Wiki — MAT 概要
- TouchDesigner Wiki — Category:MATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

