
概要 📖 – 文字を平面ジオメトリ化
Font SOPは、指定したフォントとテキスト文字列から平面文字ジオメトリを生成する SOPです。出力は Bezier 曲線またはポリゴン形式の平面文字で、後段の Extrude SOP と組み合わせて立体タイポグラフィを構築します。
主な用途 🎯
- フォントファイルからの平面文字ジオメトリ生成(システムフォント / TrueType / OpenType を読込み Bezier 曲線またはポリゴンに変換)
- 立体タイポグラフィの素材作成(Extrude SOP / Sweep SOP の入力として、3D ロゴ・タイトル演出のベース形状に活用)
- 動的テキスト表示(Text パラメータに Python 式や CHOP 参照を埋め込み、フレーム駆動でリアルタイムに文字を切替)
- UV 付き文字メッシュの生成(Texture Coordinates を Orthographic に切替えると文字面に UV が貼られテクスチャマッピング可能)
- 表現精度の段階切替(Bezier 曲線 / ポリゴン / 混在モードを Primitive Type で選択、Level of Detail で曲線分割数を調整)
データフロー 🔄
入力: なし(ジェネレータ系 SOP)
↓
フォントファイル + Text 文字列を読込
↓
字形を Bezier 曲線またはポリゴンに変換
↓
Translate / Scale / Kerning で配置調整
↓
出力: 平面文字ジオメトリ(SOP)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
プリミティブ形式 .type 🧱
字形を表現するジオメトリ形式の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Bezier Curves and Polygons | .bezierpoly |
直線部分はポリゴン、曲線部分は Bezier 曲線で混在生成(メモリ効率最良) |
| Beziers Only | .bezier |
すべての字形を Bezier 曲線で表現(曲線の滑らかさ重視) |
| Polygons Only | .poly |
すべての字形をポリゴンで近似(Level of Detail で分割数を制御) |
※ 注意: Bezier モードで Hole Faces をオンにすると、OpenGL の既知のバグにより穴(o / e / a 等の内側)が正しくシェーディングされない場合があります。安定したレンダリングが必要なら Polygons Only を選んでください。
フォントと本文 🔤
Font .file 📁Font (フォントファイル) — 表示に使うフォントファイルを指定します。+ ボタンでファイルダイアログ、メニュードロップダウンでよく使うフォントの一覧から選択する形です。
Text .text 📝Text (本文テキスト) — 生成する文字列を入力します。\n で改行、\xxx で ASCII コード指定、バッククォート(`...`)で式評価という形式が使えます。
Python 式を直接書く場合は op('font1').par.text = 'hello world' のようにスクリプトから設定する手も使えます。
中央揃え 🎯
Center Text Horizontally .hcenter ↔️Center Text Horizontally (水平中央揃え) — オンにするとテキストを X = 0 を中心に水平方向で中央揃えします。
Center Text Vertically .vcenter ↕️Center Text Vertically (垂直中央揃え) — オンにするとテキストを Y = 0 を中心に垂直方向で中央揃えします。
位置・スケール 📐
Translate .t 🧭Translate (平行移動) — 生成された文字ジオメトリ全体を X / Y / Z 方向に平行移動します。
内部名は tx / ty / tz の 3 要素。
Scale .s 🔍Scale (スケール) — 文字ジオメトリを X / Y 軸方向にスケーリングします。
内部名は sx / sy。Z 方向のスケールはありません(Font SOP は平面ジオメトリのため)。
Kerning .kern ↔️Kerning (カーニング / 字間調整) — X 方向は文字間隔、Y 方向は複数行時の行間です。
内部名は kernx / kerny。文字単位の手動調整が必要なら Model モードで個別操作する。
形状調整 ⚙️
Italic Angle .italic ↗️Italic Angle (イタリック角度) — 指定した角度(度)で文字を傾斜させる擬似イタリック効果です。
本物のイタリック書体に置換するわけではなく、シアー変換で字形を傾けます。負値で左に傾斜。
Level of Detail .lod 🔬Level of Detail (曲線分割数 / 詳細度) — Polygons Only モードまたは Bezier から変換される際の曲線分割数を制御します。
値を上げるほど滑らかな曲線になりますがポイント数とメモリ使用量が増加します。
Hole Faces .hole ⭕Hole Faces (穴の生成) — 「o」「e」「a」などのアルファベット内側の閉領域を穴として生成します。
オフにすると穴部分が塗りつぶされたべた塗りの字形になります。
テクスチャ座標 .texture 🎨
文字ジオメトリへの UV 座標生成方式
| 項目 | 内部名 | 説明 |
|---|---|---|
| Off | .off |
UV 座標を生成しない(テクスチャマッピングを使わない場合) |
| Orthographic | .ortho |
正射影(平行投影)で UV を生成し、文字面に画像やパターンを貼れる状態にする |
実践アイデア 💡
Example 1: 立体ロゴタイポグラフィ 🔤
Font SOP → Extrude SOP → Phong MAT → Geometry COMP → Render TOP
Font SOP でテキスト文字列から平面字形を生成し、Extrude SOP で法線方向に押し出して立体ロゴを構築する最頻出フロー。映像作品のタイトル演出や VJ 用 3D ロゴ、ライブステージのテキスト演出に直結する基本構成です。
- Font SOP を配置し、Font パラメータでフォントファイルを選択、Text に表示文字列を入力
- Center Text Horizontally / Vertically をオンにして原点を中心に揃え、後段の変形が扱いやすい状態にする
- Extrude SOP を後段に接続し、Depth パラメータで押し出し量を調整して立体化
- Phong MAT を作成し Geometry COMP の Material 設定で割り当て、Render TOP でカメラ越しにレンダリング
Example 2: フレーム駆動アニメ文字 ⏰
Font SOP (Text=expression) → Transform SOP → Geometry COMP → Render TOP
Font SOP の Text パラメータに me.time.frame や op('null1')['chan1'] のような式を埋め込み、フレーム毎・CHOP 値毎に表示文字を切替えるリアルタイムテキストを構築する例。カウンターやタイマー、字幕、ライブイベントの観客名表示などで活用します。
- Font SOP の Text パラメータを右クリックして Expression モードに切替
me.time.frameでフレーム番号表示、op('null1')['chan1']で CHOP 値表示など、用途に応じて式を記述- Transform SOP で位置調整し、Geometry COMP に格納してシーンに合成
Example 3: テクスチャ付き文字パネル 🎨
Font SOP (texture=ortho) → Phong MAT (Color Map=Movie File In TOP) → Render TOP
Texture Coordinates を Orthographic に設定すると文字ジオメトリに UV が生成され、Phong MAT の Color Map に動画やテクスチャを当てることで、文字面に映像が流れる演出を作れます。動的ロゴ・タイトル映像・タイポ動画の素材として有効です。
- Font SOP の Texture Coordinates パラメータを Orthographic に切替
- Phong MAT を作成し Color Map に Movie File In TOP やテクスチャ TOP を割り当て
- Geometry COMP 内に Font SOP を配置し、Material に Phong MAT を指定して Render TOP でレンダリング
関連オペレータ 🔗
類似機能OP 🔍
- Text SOP — 別系統のテキスト SOP。スプライン制御で柔軟だが描画方式が異なる
組み合わせ推奨OP 🔄
- Extrude SOP — Font SOP の最頻出後段。平面字形を法線方向に押し出して立体ロゴ化
- Sweep SOP — 字形の輪郭線をパスに沿ってスイープし、パイプ状・チューブ状の文字を生成
- Revolve SOP — 字形プロファイルを軸まわりに回転させて装飾的な回転体を生成
- Phong MAT — Texture Coordinates と組み合わせて Color Map を文字面に貼り付け
- Geometry COMP — Font SOP をシーンに組み込む標準コンテナ。Material 割当の窓口
- Render TOP — Font SOP を含む Geometry COMP をカメラ越しにレンダリング
前処理・後処理SOP 🎯
Info CHOP情報 📊
Font SOP は Info CHOP による詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
クック統計 ⏱️
total_cooks:total_cooks— プロセス開始以降に Font SOP がクックされた合計回数cook_time:cook_time— 直近のクック所要時間(ミリ秒)。Text を頻繁に変える場合の負荷指標cook_frame:cook_frame— Font SOP が最後にクックされたフレーム番号
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: フォントが見つからない・文字化けする
✅ Solution:
- Font パラメータでフォントファイルのパスを再選択し、絶対パスで指定する
- OS にインストールされたシステムフォント以外を使う場合は、プロジェクトフォルダに同梱して相対パス参照する
- 日本語など多バイト文字は対応していないフォントだと表示されない。フォント側の収録字種を公式ビューアで確認する
❌ Problem: 「o」や「e」の穴が抜けない・シェーディングが破綻する
✅ Solution:
Hole Facesをオンにする(オフだと穴部分が塗りつぶされる)- Bezier モードで穴のシェーディングが崩れる場合は
Primitive Typeを Polygons Only に切替(OpenGL の既知のバグ回避) - 後段で Convert SOP を使ってメッシュタイプを Polygon に統一する
❌ Problem: テクスチャが文字面に反映されない
✅ Solution:
Texture Coordinatesを Orthographic に切替えて UV を生成する(Off だと UV が無くテクスチャが貼れない)- Material 側の Color Map がフォント側ジオメトリと結ばれているか、Geometry COMP の Material パラメータを確認
- Bezier モードで UV を貼る場合は、後段で Convert SOP で Polygon に変換してから貼ると安定する
❌ Problem: Text を毎フレーム書換えると重い
✅ Solution:
Level of Detailを必要最小限まで下げる(曲線分割数を減らしてポイント数を削減)Primitive Typeを Polygons Only から Bezier Curves and Polygons に切替(直線部分のポイント数が減る)- Info CHOP の
cook_timeを監視し、許容範囲を超える場合は表示文字数自体を抑制する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Font SOP
- TouchDesigner公式ドキュメント – Text SOP
- TouchDesigner公式ドキュメント – Extrude SOP

