Null MAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Null MAT が上流マテリアルを下流へ素通しする中継ノードとして機能する図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – マテリアルを中継する

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 参照先

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

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: targetsop pCaptPath / pCaptData 属性を持つ SOP のパスを指定
  • pCaptPath Attrib: pcaptpath 使用する pCaptPath 属性名 (Bone Group SOP 通過後は pCaptPath0 / pCaptPath1 等に分割される)
  • pCaptData Attrib: pcaptdata 使用する pCaptData 属性名 (pCaptPath と対になる)
  • Skeleton Root Path: skelrootpath スケルトンのルート COMP のパス
  • MAT: mat Get Bone DataFrom 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 指定は一切変更不要です。

  1. Null MAT を作成し、固定の名前 (例: mat_character_main) を付ける
  2. 上流に Phong MAT または PBR MAT を作成し、Null MAT に接続
  3. Geometry COMPMaterial パラメータに Null MAT のパスを指定 (上流の Phong MAT 自体ではなく Null MAT を指す)
  4. 上流マテリアルを別の MAT に差し替えるときは Null MAT への接続のみ繋ぎ換える
  5. 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 回だけ繋ぎ換えれば全体に反映されます。

  1. 共有用 Null MAT を 1 つ作成 (例: shared_floor_mat)
  2. PBR MAT 等の上流マテリアルを Null MAT に接続
  3. 複数の Geometry COMP (床用・壁用・柱用 等) すべての Material パラメータに同一 Null MAT のパスを指定
  4. 上流の PBR MAT のパラメータを変更すると、Null MAT 経由で参照する全 Geometry COMP に同時反映
  5. マテリアル種別自体を切替えるときも、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 設定を継承させる中継点として使用できます。スキニング設定とカラー設定を別レイヤで管理したいときに有効です。

  1. 外部に ボーンキャプチャ元 MAT を配置してボーンキャプチャ情報源として接続
  2. Null MAT を作成し、Deform をオン、Get Bone DataFrom MAT に設定して ボーンキャプチャ元 MAT を参照
  3. 下流の Phong MAT / PBR MAT 側でも Get Bone Data = From MATMAT パラメータに Null MAT のパスを指定
  4. Geometry COMP の Material 参照は下流の Phong/PBR MAT を指す (Null MAT は Deform 設定のための論理中継として機能)
  5. 別のスケルトン体系に切替えたいときは 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 COMPMaterial パラメータが Null MAT のパスを正しく指しているか、相対パス / 絶対パスのスペルミスを確認
  • Null MAT 自体の Common Page で Cull FaceBoth 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 DataFrom 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 は表示用ソースとして扱う

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました