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

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

Constant MAT のフラットシェーディング機能を示す図

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

概要 📖 – ライティング非依存のフラットシェーディング

Constant MATは、ライティング計算を一切行わず、指定した色やテクスチャをそのまま面に貼り付けるフラットシェーディング用 MATです。Phong MAT / PBR MAT のような陰影計算を持たず、ライト COMP の影響を受けません。UI や HUD、デバッグ表示など「常に同じ明るさで見せたい」要素に最適です。

主な用途 🎯

  • ライト COMP の影響を受けないフラットな単色 / テクスチャ表示
  • UI 要素・HUD・ロゴなど常に 同じ明るさで見せたい要素のシェーディング
  • Color Map + 透過合成で 2D テクスチャを 3D シーン上に重ねる用途
  • デバッグ用途の 純色シェーディング (法線確認・ピクセル位置確認)
  • プロジェクションマッピングのテクスチャ受け側 (Apply Projection Maps 対応)

データフロー 🔄

入力: Color パラメータ + 任意の Color Map TOP

ライティング計算を完全にスキップ

出力: Geometry COMP の Material 入力へ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Constant Page 🎨

Color .color 🎨

マテリアル基本色とアルファ

項目 内部名 説明
Color .color マテリアルから反射される光の色 (RGB)。ライト無関係に常に同じ色で表示される
Alpha .alpha マテリアルの不透明度。ジオメトリのポイントアルファと乗算される
Apply Point Color .applypointcolor ジオメトリ側のポイントカラー (Cd 属性) を Color に乗算するトグル
Apply Projection Maps .applyprojmaps Light COMP のプロジェクションマップテクスチャをオブジェクトに適用する。プロジェクションマップ自体のカラーはライティング非依存で適用される

Color Map .colormap 🖼️

TOP テクスチャをカラーマップとして使用する設定群

項目 内部名 説明
Hold .hold 端のピクセルを延長
Zero .zero 範囲外は 0 (黒透明)
Repeat .repeat テクスチャを繰り返し
Mirror .mirror ミラーリング繰り返し
Color Map .colormap カラーマップとして使用する TOP テクスチャ
SOP Texture Coord .colormapcoord SOP のどの UV 属性をテクスチャ座標として使うか (uv / uv2 等)
POP Texture Coord Attribute .colormapcoordattrib POP ワークフロー時のテクスチャ座標属性名

Deform Page 🦴

Deform .dodeform 🦴

ボーンによるジオメトリ変形を有効化する設定群:

  • Deform トグル: ボーン変形 (スキニング) をこのマテリアル上で有効化
  • SOP with Capture Data: pCaptPath / pCaptData 属性を持つ SOP を指定
  • Skeleton Root Path: スケルトンのルート COMP のパス

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: UI / HUD オーバーレイ用フラット表示 🎨

Rectangle SOP → Geometry COMP (Material = Constant MAT) → Render TOP

3D シーンに UI 要素やロゴを重ねるとき、Phong だとライト位置で色味が変わってしまいます。Constant MAT を使うと、どんなカメラ / ライト配置でも常に同じ色で表示されます。

  1. 矩形 SOP を作って Geometry COMP に入れる
  2. Geometry COMP の Material に Constant MAT を割当
  3. Constant MAT の Color を白、Alpha を 0.8 に設定
  4. Render TOP でカメラから見たら、ライティングに左右されない平坦な UI として表示される

Example 2: テクスチャ付きフラットビルボード 🖼️

Movie File In TOP → Constant MAT (Color Map) → Geometry COMP (板ポリ) → Render TOP

動画や画像をそのまま 3D シーン中に貼りたいケース。Phong だとライト方向で暗くなるが、Constant ならテクスチャの色がそのまま出ます。

  1. Movie File In TOP で動画を読み込み
  2. Constant MAT の Color Map にその TOP を指定
  3. Geometry COMP に板ポリ (Rectangle SOP) を入れマテリアルを割当
  4. Render TOP で見ると、ライト無関係に動画がフラットに貼られる

Example 3: デバッグ用の純色シェーディング 🔍

任意 SOP → Geometry COMP (Constant MAT 純赤) → Render TOP

ジオメトリの存在位置 / シルエット確認を行うとき、ライティングがあると影で形状が判別しにくくなります。Constant の純色シェーディングは形状を素直に映します。

  1. Constant MAT の Color を純赤 (1, 0, 0) に設定
  2. Apply Point Color をオフにしてポイントカラーの影響を除外
  3. 対象ジオメトリのマテリアルとして割当
  4. Render TOP で確認、シルエットだけが赤一色で抽出される

関連オペレータ 🔗

類似機能OP 🔍

  • Phong MAT — Diffuse / Specular / Ambient のライティング計算を行う標準的なシェーディング
  • PBR MAT — 物理ベースレンダリング (PBR) のメタリック・ラフネス系シェーディング
  • Wireframe MAT — ジオメトリのエッジ (線) のみを描画するシェーディング

組み合わせ推奨OP 🔄

  • Geometry COMP — MAT を割り当てるレンダリング対象 COMP、必須の組み合わせ
  • Render TOP — Constant MAT を貼った Geometry を最終 2D 出力に描画
  • Camera COMP — Render TOP のビューを定義、Constant はカメラ位置に左右されない
  • Movie File In TOP — Constant MAT の Color Map に動画 / 画像を供給
  • Light COMP — Constant 自体はライトに反応しないが、Apply Projection Maps 経由でプロジェクションマップは利用可能

前処理・後処理MAT 🎯


Info情報 📊

MAT は Info CHOP / Info DAT に接続することで、シェーダコンパイル状況やクック情報を取得できます。

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からの累計クック回数
  • cook_time: 直近クックに要した時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 現在の警告数 (シェーダコンパイル警告含む)
  • errors: 現在のエラー数 (シェーダコンパイルエラー含む)

トラブルシューティング ⚠️

よくある問題と解決策 🔧

❌ Problem: Constant MAT を割り当てたのに何も表示されない
✅ Solution:

  • Geometry COMP の Material パラメータが Constant MAT のパスを正しく指しているか確認
  • Alpha0 になっていないか確認 (完全透明)
  • Render TOP の Camera / Geometry / Light 設定が正しいか、まず Phong MAT で表示できるかをテストしてから Constant に戻す

❌ Problem: ライトを当てているのに色が変わらない / 暗くならない
✅ Solution:

  • Constant MAT は意図的にライティング非依存。陰影が必要なら Phong MAT もしくは PBR MAT に変更
  • ライト COMP のプロジェクションマップだけ反映させたい場合は Apply Projection Maps をオン
  • デバッグ用に純色で見せたい場合は意図通りなので問題なし

❌ Problem: Color Map のテクスチャが意図したサイズで表示されない
✅ Solution:

  • ジオメトリ側に UV 属性が存在するか確認 (uv attribute)、無い場合は Texture SOP 等で生成
  • SOP Texture Coord パラメータで参照する UV セット名 (uv / uv2) を一致させる
  • Extend U/VRepeat にしてテクスチャの繰り返し範囲を確認

❌ Problem: アルファブレンドが想定どおりにならない
✅ Solution:

  • Common Page の Blending (Transparency) をオンに設定
  • Source Color = Source Alpha、Destination Color = One Minus Source Alpha (標準アルファ合成) の組み合わせを試す
  • Post-Mult Color by AlphaPoint Color Pre-Multiply の設定がプリマルチプライ済テクスチャと一致しているか確認

参考資料 📚

公式リソース 📖

コミュニティ 💬

この記事は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をコピーしました