
概要 📖 – 3D 空間内テキストレンダリング
Geo Text COMPは、テキスト文字列をフォントレンダリングしジオメトリとして 3D シーンに配置する COMPです。Text モードで単一文字列を、Specification DAT モードで複数行ごとの個別制御を扱い、Face Camera や Depth Scale S-Curve など 3D 空間特有のテキスト描画機能を備えます。
主な用途 🎯
- 3D シーン内の文字描画を Geometry として扱い、ライティング・マテリアル・カメラ変換を適用
- Specification DAT で複数行テキストの行ごとに位置・色・フォントサイズを個別制御
- Face Camera モードでビルボード状にテキストをカメラへ追従させラベル表示に利用
- Depth Scale S-Curve でカメラ距離に応じた読みやすいフェード・スケーリングを設計
- Formatting Codes + Smart Punctuation で 1 文中の部分的な色・スタイル変更とタイポグラフィ整形
データフロー 🔄
入力: Text パラメータ / Specification DAT (行単位の制御テーブル) / Specification CHOP (数値パラメータの動的駆動)
↓
Geo Text COMP 内部の Font + Xform + Render 設定でジオメトリ化
↓
出力: Render TOP から見た 3D シーン中のテキストジオメトリ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Text Page 📝
Mode .mode 🎛️
テキスト供給元を Text パラメータか Specification DAT のどちらにするか切替えるメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Text | .text |
Text パラメータの文字列をそのまま描画 (単一テキストブロック) |
| Specification DAT | .specdat |
Specification DAT の各行を 1 ブロックとして描画 (行ごとに位置・色・サイズ等を個別指定可能) |
テキスト入力ソース 📥
Text モードと Specification DAT モードそれぞれで参照する入力データ:
- Text:
text—Textモード時に描画する文字列 - Specification DAT:
specdat—Specification DATモード時に参照する DAT テーブル。各行が 1 テキストブロックとなり、列名 (text,tx,ty,fontcolorr,fontsize,alignx等) でパラメータ単位の上書きが可能 - Specification CHOP:
specchop— Specification DAT の数値列を CHOP サンプルで動的駆動するためのチャンネル入力
レンダリングオプション ✨
テキストブロックの描画挙動を切替えるトグル / オプション:
- Sort by Depth:
sorted— Specification DAT 使用時のみ有効。カメラからの距離順 (奥→手前) で行を描画しアルファ合成を正しく見せる。大量行では負荷増 - Formatting Codes:
formatcodes— テキスト内に{#color(255, 0, 0);}形式の書式コードを埋め込むと、以降の文字に色・スタイル変更が適用される - Parse Escape Sequences:
escapeseq— Specification DAT モード時に\tをタブ、\r/\nを改行として解釈 (Text モードでは Python 式を使う) - Smart Punctuation:
smartpunct— 引用符ペアを角括弧引用符、ピリオド 3 つを省略記号、ハイフン 2 つを em-dash に自動変換 - Word Wrap:
wordwrap— レイアウトボックスの幅を超えた行を自動的に折り返す - Width Affected by FOV/OrthoWidth:
widthaffectedbyfov— オフでカメラ FOV や Ortho 幅を変えても画面上のテキスト幅 (ピクセル数) を一定に保つ。オン (デフォルト) で FOV 倍率に反比例して半分のピクセル幅になる - Face Camera:
facecam— カメラの向きにかかわらずテキストが常にカメラへ正対 (ビルボード表示)
Depth Scale 設定 📏
カメラ距離に応じたテキストサイズ補間 (Depth Scale S-Curve) と Z-fighting 回避用のリフト:
- Depth Scale S-Curve:
depthScaleSCurve— オフ時はパースペクティブベース (距離反比例) のサイズ変化。オンで Near / Far プレーン間を S 字カーブで補間 - Depth Distance Near:
depthDistanceNear— Near プレーンのカメラからの距離 (Depth Scale S-Curve 用) - Depth Distance Far:
depthDistanceFar— Far プレーンのカメラからの距離 (Depth Scale S-Curve 用) - Depth Scale Near:
depthScaleNear— Near プレーンの距離におけるテキストスケール倍率 - Depth Scale Far:
depthScaleFar— Far プレーンの距離におけるテキストスケール倍率 - Depth Scale Bias:
depthScaleBias— S 字カーブの中心点を Near 寄り / Far 寄りに偏らせるバイアス - Depth Scale Steepness:
depthScaleSteepness— S 字カーブの傾きの急峻さ。値が大きいほど中央付近の変化が急激、小さいほど線形に近づく - Depth Scale Linearize:
depthScaleLinearize— S 字カーブの曲率を線形寄りに調整 - Lift Towards Camera:
lifttowardscam— 同一平面に重なる面ポリゴンとの Z-fighting を避けるためテキストをカメラ方向へ僅かに浮かせる量
Font Page 🔤
フォント基本設定 🅰️
フォント・ウェイト・サイズ・字間など基本タイポグラフィ設定:
- Font:
font— OS に登録済みのフォントをドロップダウンから選択。初回使用フォントは中間ファイル生成のため少し待ち時間が発生する場合あり - Font File:
fontfile— OS に未登録のフォントファイルを直接指定する場合のパス - Bold:
bold— 太字表示 - Italic:
italic— 斜体表示 - Font Size:
fontsize— フォントサイズ (ジオメトリ空間と同じ単位、シーンスケール基準で相対的な大きさ) - Tracking:
tracking— 文字間の水平間隔。0 がデフォルト、正で広く、負で詰める - Skew:
skew— 文字の上部をベースラインに対して前後に傾ける - Horz Stretch:
horzstretch— 現在のアライメントを基準に文字を水平方向に伸縮 - Line Spacing:
linespacing— 行間の倍率 (フォント既定の行送りに対する係数) - Font Color:
fontcolor— フォントの RGB カラー - Font Alpha:
fontalpha— フォントのアルファ値 (透明度)
レイアウトボックス 📦
テキスト整列と Word Wrap の基準となる仮想レイアウトボックス:
- Layout Box Anchor U:
layoutanchoru— レイアウトボックスを左右にシフトするアンカー U 成分。回転ピボット位置にも影響 (0.5 で中心回転) - Layout Box Anchor V:
layoutanchorv— レイアウトボックスを上下にシフトするアンカー V 成分 - Layout Box Size:
layoutsize— レイアウトボックスの幅と高さ (フォントサイズと同じ単位)。テキスト整列と Word Wrap がこの範囲内で行われる - Clip to Layout Box:
cliptolayoutbox— レイアウトボックス外に出たテキストを描画しない - Text Padding:
textpadding— レイアウトボックス内側のパディング (上下左右にテキストを内側へ寄せる)
Horizontal Align .alignx ↔️
レイアウトボックス内のテキストの水平整列:
- Horizontal Align:
alignx— レイアウトボックス内のテキストを左揃え / 中央揃え / 右揃えのいずれで配置するかを決定するメニュー
Vertical Align .aligny ↕️
レイアウトボックス内のテキストの垂直整列と整列計算モード:
- Vertical Align:
aligny— レイアウトボックス内のテキストを上揃え / 中央揃え / 下揃えのいずれで配置するかを決定するメニュー - Vertical Align Mode:
alignymode— 垂直整列の計算方法を切替えるメニュー (行高さの基準にどの要素を使うか)
Xform Page 📐
Transform Order .xord 🔢
Translate / Rotate / Scale の適用順序:
- Transform Order:
xord— Translate (T) / Rotate (R) / Scale (S) を行列乗算で適用する順序を選択するメニュー (行ベクトル / 列ベクトル規約により合成結果が異なる)
Rotate Order .rord 🔄
X / Y / Z 各軸まわりの回転合成順序:
- Rotate Order:
rord— 3 軸回転の合成順序を選択するメニュー (Rx Ry Rz なら最終回転行列はRz * Ry * Rxとなる)
変換パラメータ 🎯
コンポーネントの位置・回転・スケール・ピボットを指定する基本変換パラメータ:
- Translate:
t— X / Y / Z 各軸に沿った移動量 - Rotate:
r— X / Y / Z 各軸まわりの回転量 (度) - Scale:
s— X / Y / Z 各軸方向の非一様スケール - Pivot:
p— スケール / 回転の基準となるピボット点。値を変えると同じ Scale / Rotate でも結果位置が変わる - Uniform Scale:
scale— 3 軸均一スケール (カメラチャンネルへの適用は推奨されない、Viewport との一致は保証されない場合あり)
Parent 制約 🧷
初期位置の基準とする親オブジェクトを切替える設定 (旧 Constrain To の後継):
- Parent Transform Source:
parentxformsrc— 初期位置の基準をParent (Hierarchy)/Specify Parent Object/World Originから選択するメニュー - Parent Object:
parentobject—Specify Parent Objectモード時に参照する任意オブジェクトのパス
Look At .lookat 👀
別のコンポーネントを注視させる Look At 機能と Up Vector 指定:
- Look At:
lookat— 注視対象とする 3D コンポーネントのパス。指定するとこの COMP が常に対象を向き続ける (カメラ追従などに利用) - Forward Direction:
forwarddir— どの軸方向を「前方」とみなすかを選択するメニュー - Look At Up Vector:
lookup— Look At 時の Up Vector の決定方法を選択するメニュー (Don't Use / Use Up Vector / Use Quaternions)
Path SOP 追従 🛤️
SOP で定義されたパスに沿った移動アニメーション設定:
- Path SOP:
pathsop— 追従させるパスを定義する SOP のパス - Roll:
roll— パスに沿って動く際の COMP の回転角 - Position:
pos— パス上の位置 (0 = 始点, 1 = 終点, 最大 10 で複数周回可) - Orient along Path:
pathorient— オンで COMP の +Z 軸をパス進行方向に向ける - Orient Up Vector:
up— 向きの計算で +Y 軸の指す方向を決める Up Vector - Auto-Bank Factor:
bank— パス曲率に応じて COMP をロール (旋回時の傾き)。0 で自動バンク無効
Pre-Xform Page ⚙️
Pre-Xform 設定 .pxform 🔧
Xform Page の変換が適用される前に追加で適用される事前変換設定:
- Apply Pre-Transform:
pxform— このページの事前変換を有効化 - Transform Order:
pxord— 事前変換の Translate / Rotate / Scale 適用順序 (Xform Page と同様) - Rotate Order:
prord— 事前変換の回転合成順序 (Xform Page と同様) - Translate:
pt— 事前変換の移動量 - Rotate:
pr— 事前変換の回転量 - Scale:
ps— 事前変換のスケール - Pivot:
pp— 事前変換のピボット点 - Uniform Scale:
pscale— 事前変換の均一スケール - Reset Transform:
preset— このページの変換をすべてリセットするボタン - Commit to Main Transform:
pcommit— このページの変換を Xform Page にコピーしリセットするボタン - Xform Matrix/CHOP/DAT:
xformmatrixop— 4×4 行列を直接指定して変換に適用 (順序:XformMatrix * PreXform * Position)
Render Page 🎨
レンダリング設定 🖼️
Render TOP からの可視性・描画優先度・マテリアル・ライトマスクなどレンダリング設定:
- Material:
material— テキストジオメトリに適用する MAT (マテリアル) のパス - Render:
render— Render TOP でこの COMP の出力を可視化するか (Render Flag との AND 評価) - Draw Priority:
drawpriority— 描画順序。値が小さいほど後に描画される (透明度処理の重ね順制御に利用) - Pick Priority:
pickpriority— Render Pick CHOP / Render Pick DAT で Search Area 内に複数候補がある場合の優先度 (描画順には影響しない) - Wireframe Color:
wcolor— ワイヤーフレーム表示時の RGB カラー - Light Mask:
lightmask— このジオメトリに影響を与えるライトを限定 (Render TOP のライトリストに記載されたライトの部分集合を指定)
Common Page 🔧
Parent Shortcut .parentshortcut 🔗
コンポーネント内部からこの COMP へのパスとして使えるショートカット名:
- Parent Shortcut: コンポーネント内部の任意の場所からこの COMP を参照する際のショートカット名 (
parent.<name>形式で利用可能)
Global OP Shortcut .opshortcut 🌐
プロジェクト全体からこの COMP を参照するグローバル名:
- Global OP Shortcut: プロジェクト内のあらゆる場所からこの COMP へのパスとして使えるグローバル名 (
op.<name>形式で利用可能)
Internal OP .iop 📎
Internal OP シーケンス (コンポーネント内部 OP への名前付き参照):
- Shortcut:
iop0shortcut— コンポーネント内部の OP に対するショートカット名 - OP:
iop0op— このコンポーネント内部の対象 OP へのパス
Node View .nodeview 👁️
ノードビューア (Network エディタ上のサムネイル) に表示する内容を決定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default Viewer | .default |
コンポーネントタイプ標準のビューアを表示 |
| Operator Viewer | .opviewer |
指定した任意 OP のノードビューアを表示 |
Operator Viewer .opviewer 🖼️
Operator Viewer モード時に表示する対象 OP:
- Operator Viewer パス: Node View が
opviewerモードのとき、そのビューア内容として表示する OP のパス
Cloning .cloning 🧬
マスター COMP の内容を複製する Cloning 設定:
- Enable Cloning:
enablecloning— Clone Master の内容を継続的に複製するかを切替 - Enable Cloning Pulse:
enablecloningpulse— その瞬間だけ Clone Master の内容を瞬時に複製 - Clone Master:
clone— 複製元となるマスターコンポーネントへのパス
Load on Demand .loadondemand ⏳
必要時のみメモリにロードする遅延ロード設定:
- Load on Demand: オンの場合、このコンポーネントは実際に必要となるまでメモリにロードされない (起動時間・メモリ消費の最適化)
External .tox .externaltox 💾
外部 .tox ファイルとの連携設定:
- Enable External .tox:
enableexternaltox— 起動時に外部 .tox ファイルからロード - Enable External .tox Pulse:
enableexternaltoxpulse— 外部 .tox ファイルから即時リロード - External .tox Path:
externaltox— ディスク上の .tox ファイルへのパス - Reload Custom Parameters:
reloadcustom— コンポーネントのカスタムパラメータ値を再読み込み - Reload Built-In Parameters:
reloadbuiltin— コンポーネントの組み込みパラメータ値を再読み込み - Save Backup of External:
savebackup— .toe ファイル内に外部 .tox のバックアップコピーを保存 - Sub-Component to Load:
subcompname— .tox 内部の特定 COMP のみを取り出してロード
Relative File Path Behavior .relpath 📁
このコンポーネント内部での相対ファイルパスの解決基準
| 項目 | 内部名 | 説明 |
|---|---|---|
| Use Parent’s Behavior | .inherit |
親コンポーネントの設定を継承 |
| Relative to Project File (.toe) | .project |
.toe プロジェクトファイルからの相対パスとして解決 |
| Relative to External COMP File (.tox) | .externaltox |
外部 .tox ファイルからの相対パスとして解決 |
Parameter Color Space .parmcolorspace 🎨
このコンポーネント内の色パラメータをどの色空間として解釈するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| sRGB | .srgb |
標準的な sRGB ガンマ空間 |
| sRGB – Linear | .srgblinear |
sRGB プライマリでガンマ線形 (1.0) |
| Rec.601 (NTSC) | .rec601ntsc |
Rec.601 NTSC 規格の色空間 |
| Rec.709 | .rec709 |
HDTV 用 Rec.709 色空間 |
| Rec.2020 | .rec2020 |
UHDTV / HDR 向け Rec.2020 広色域 |
| DCI-P3 | .dcip3 |
デジタルシネマ DCI-P3 色空間 |
| DCI-P3 (D60) | .dcip3d60 |
D60 白点 DCI-P3 |
| Display-P3 (D65) | .displayp3d65 |
D65 白点 Display-P3 (Apple ディスプレイ等) |
| ACES2065-1 | .aces2065-1 |
ACES アーカイブ用色空間 (AP0 プライマリ) |
| ACEScg | .acescg |
ACES CG 作業用色空間 (AP1 プライマリ) |
| Passthrough | .passthrough |
色変換を行わず値をそのまま扱う |
Parameter Reference White .parmreferencewhite ⚪
色パラメータの基準白色の扱い
| 項目 | 内部名 | 説明 |
|---|---|---|
| Default For Color Space | .default |
選択した色空間のデフォルト基準白を使用 |
| Use Parent Panel | .useparent |
親パネルの基準白設定を継承 |
| Standard (SDR) | .sdr |
標準ダイナミックレンジ (SDR) 基準白 |
| High (HDR) | .hdr |
ハイダイナミックレンジ (HDR) 基準白 |
| UI | .ui |
UI 表示用の基準白 |
実践アイデア 💡
Example 1: 3D シーン内のラベル表示 (ビルボード) 🏷️
Geo Text COMP (Mode=Text, Face Camera=ON, Text='Node 01') → Render TOP → Out TOP
3D シーン内のオブジェクト位置にラベル文字列を浮かべる用途。Face Camera をオンにするとカメラがどの角度から見てもテキストが常に正対し、ノード名・座標値・ステータスなどを読みやすく表示できる。デバッグ表示や AR ライクな注釈表示の基本フロー。
- Geo Text COMP を配置し Text パラメータに表示文字列を入力
- Mode を
Textに設定 (デフォルト) - Face Camera をオンにしてビルボード化
- Translate (t) でラベル位置を 3D シーン内の対象オブジェクト近傍へ配置
- Render TOP の Geometry リストにこの Geo Text COMP を追加して可視化
Example 2: Specification DAT で複数行を行ごとに個別制御 📊
Table DAT (text/tx/ty/fontcolorr/fontsize 列) → Geo Text COMP (Mode=Specification DAT, Specification DAT=テーブル) → Render TOP
Mode を Specification DAT に切替えると、テーブル DAT の各行が 1 つのテキストブロックとなり、列ヘッダ (text, tx, ty, fontcolorr, fontsize, alignx 等) でパラメータをパラメータ既定値から個別に上書きできる。ダッシュボードのスコアボード、複数被験者のラベル一覧、データテーブルの可視化など、構造化されたテキストデータをレイアウトする用途で本領発揮する。
- Table DAT を作成し列ヘッダに
text,tx,ty,fontcolorr,fontsize等の上書き対象パラメータ名を並べる - 各行に 1 テキストブロック分のデータを入力 (空セルは Geo Text COMP のデフォルト値が使われる)
- Geo Text COMP の Mode を
Specification DATに変更 - Specification DAT パラメータに上記 Table DAT のパスを指定
- アルファ合成を正しくしたい場合は Sort by Depth をオン (行数が多いと負荷増)
Example 3: カメラ距離で可読性をスケーリング 🔍
Geo Text COMP (Depth Scale S-Curve=ON, Near/Far 設定) → Camera COMP (アニメーション) → Render TOP
カメラが近づいたとき / 遠ざかったときのテキストサイズを単純な距離反比例ではなく S 字カーブで補間し、近距離・遠距離それぞれで安定した読みやすさを保つ手法。展示空間の AR テキストや、観客がカメラ視点を切替えるインタラクティブインスタレーションで「文字が小さくて読めない / 大きすぎて画面を覆う」問題を回避できる。
- Depth Scale S-Curve をオン
- Depth Distance Near / Depth Distance Far でカメラ距離レンジを定義
- Depth Scale Near / Depth Scale Far で各距離におけるスケール倍率を設定 (例: Near=1.0, Far=0.3)
- Depth Scale Steepness でカーブの急峻さを調整 (高値で中央急変化、低値で線形に近づく)
- Depth Scale Bias で中心点を Near 寄り / Far 寄りに偏らせ、視覚的に最適な配分を作る
関連オペレータ 🔗
類似機能OP 🔍
- Text TOP — 2D テクスチャとしてテキストを描画 (3D ジオメトリ化しないラスター用途)
- Text SOP — テキストを SOP ジオメトリ (頂点とポリゴン) として生成、後段で SOP 変形可能
- Geometry COMP — 任意 SOP を 3D 描画する汎用コンテナ。Geo Text COMP のテキストジオメトリ専用版という位置付け
組み合わせ推奨OP 🔄
- Render TOP — Geo Text COMP の出力を 3D シーンとして実際に描画
- Camera COMP — Geo Text の見え方を決定するビュー視点。Depth Scale S-Curve は Camera 距離基準
- Light COMP — テキストジオメトリへのライティング (Light Mask で適用ライトを限定可能)
- PBR MAT — Render Page の Material に指定し、テキスト表面に PBR シェーディングを適用
- Table DAT — Specification DAT モード時の行ごと制御テーブルとして利用
- CHOP to DAT — CHOP の数値ストリームを Specification DAT 形式の表に整形して動的駆動
- Constant MAT — ライティング非適用の単純な単色マテリアル。可読性重視の UI テキストに利用
前処理・後処理COMP 🎯
Info COMP情報 📊
Geo Text COMP は Info CHOP / Info DAT による詳細情報取得に対応しています。
COMP 固有情報 📦
num_children: コンポーネント内部の子 OP の総数num_dats: 内部 DAT の数num_chops: 内部 CHOP の数num_tops: 内部 TOP の数num_sops: 内部 SOP の数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数cook_abs_frame: 絶対時間基準でのクックフレーム番号cook_start_time: オペレータがクックを開始した時刻cook_end_time: クックが完了した時刻cooked_this_frame: 現在のフレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: テキストが Render TOP に表示されない
✅ Solution:
- Render パラメータがオン、かつ Render Flag がオンになっているか確認
- Render TOP の Geometry リストに Geo Text COMP のパスが含まれているか確認
- Camera COMP の視野内にテキストの Translate (
t) 位置が入っているか確認 (デフォルトの原点に置いてカメラから外れているケースが多い) - Material が指定されていない場合は Constant MAT を割り当てて切り分け
❌ Problem: テキストが拡大時に大きく / 縮小時に小さくなりすぎて読めない
✅ Solution:
- Depth Scale S-Curve をオンにし Near/Far 距離とスケール倍率で読みやすいレンジを定義
- ビルボード表示で良い場合は Face Camera をオンにしてカメラ正対化
- Width Affected by FOV/OrthoWidth をオフにするとカメラ FOV 変化に対してテキスト幅がピクセル単位で一定になる
❌ Problem: Specification DAT モードで行ごとの上書きが反映されない
✅ Solution:
- DAT テーブルの 1 行目 (列ヘッダ) がパラメータ内部名と一致しているか確認 (
text,tx,ty,fontcolorr等) - 空セルはパラメータデフォルト値で埋まる仕様。意図的な上書きはセルに値を入れる
- Parse Escape Sequences をオンにすると DAT 内の
\n/\tが改行・タブとして解釈される
❌ Problem: アルファブレンドが正しく見えない / テキスト同士が混ざる
✅ Solution:
- Specification DAT モード時は Sort by Depth をオンにしてカメラ距離順に描画
- Draw Priority で他ジオメトリとの描画順序を明示制御
- 重なる面ポリゴン上に置く場合は Lift Towards Camera で僅かにカメラ方向へ浮かせ Z-fighting を回避
参考資料 📚
その他 🔗
- TouchDesigner Wiki — COMP 概要
- TouchDesigner Wiki — Category:COMPs
- TouchDesigner Wiki — Category:Components
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Geo Text COMP
- TouchDesigner公式ドキュメント – Text Formatting Codes (Formatting Codes 詳細)

