
概要 📖 – 文字をジオメトリ化
Text SOPは、指定したフォントと文字列から、レンダリング可能な 3D ジオメトリとして文字を生成する SOPです。出力形式を三角形メッシュ・閉じた輪郭・開いた輪郭から選べ、文字サイズ・カーニング・行間・揃え・ワードラップでレイアウトを細かく調整できます。
主な用途 🎯
- フォントから文字を 3D ジオメトリとして生成 (OS のフォントや TrueType / OpenType ファイルを指定)
- 押し出し用の輪郭ポリゴンを作成し、後段の Extrude SOP で立体ロゴ・看板を生成
- 三角形メッシュ・閉じた輪郭・開いた輪郭の出力形式を切替え、用途に応じた文字ジオメトリを取得
- カーニング・行間・水平揃え・ワードラップでレイアウトを細かく制御
- 言語ヒントと読み方向で多言語テキストを正しく配置 (右から左に読む言語にも対応)
- 移動・回転・スケールを内蔵し、生成した文字ジオメトリをその場で配置
データフロー 🔄
入力: フォント (OS フォントまたはフォントファイル) と表示する文字列
↓
文字サイズ・行間・揃え・ワードラップでレイアウトを設定
↓
出力形式 (三角形 / 閉じた輪郭 / 開いた輪郭) を選択
↓
移動・回転・スケールで配置
↓
出力: 文字の 3D ジオメトリ SOP
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Text Page 📁
フォントの指定 🔤
Font .font 🔤
– Font (フォント) — 文字に使うフォントをドロップダウンから選択
– フォントはすべて OS から提供され、OS に読み込まれた TrueType フォントが利用可能
Font File .fontfile 📄
– Font File (フォントファイル) — TrueType / OpenType フォントファイル (.ttf / .otf) を直接指定
– フォントファイルを使う場合、上の Font メニューは無効になります
Bold .bold 🅱️
– Bold (太字) — 文字を太字で表示
Italic .italic 🇮
– Italic (斜体) — 文字を斜体で表示
文字サイズ 📏
Font Size X .fontsizex ↔️
– Font Size X (横方向の文字サイズ) — 横 (X) 方向の文字サイズを設定
– 文字サイズはフォントのベースラインからレイアウトボックス上端までの距離を表す
– デフォルトフォントのサイズ 1 は、ディセンダー (下に伸びる部分) のない大文字の縦サイズにほぼ等しい
Font Size Y .fontsizey ↕️
– Font Size Y (縦方向の文字サイズ) — 縦 (Y) 方向の文字サイズを設定
Keep Font Ratio .keepfontratio 🔒
– Keep Font Ratio (縦横比を保持) — Font Size の Y 値を無視し、X と Y のサイズを両方 Font Size X に合わせる
Scale Font to BBox Height .scalefontobboxheight 📐
– Scale Font to BBox Height (バウンディングボックス高さに合わせる) — フォントの縦サイズをフォントの縦バウンディングボックス基準でスケール
Output .output 📤
Output (出力形式) — 文字ジオメトリを三角形・閉じた輪郭・開いた輪郭のいずれで出力するかを指定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Triangles | .triangles |
三角形メッシュで出力。シェーディングしたレンダリングに適する |
| Closed Polygons (Filled Holes) | .closedpolys |
分離した閉じた輪郭の集合で出力。Laser CHOP や Extrude SOP 等に適する。穴を正しく保つには Hole SOP を後段に追加 |
| Open Polygons | .openpolys |
分離した開いた輪郭の集合で出力。Laser CHOP 等に適する。常にワイヤフレームとして描画される |
形状の精細度 ✨
Level of Detail .levelofdetail ✨
– Level of Detail (精細度) — ジオメトリに細分化を増減させて文字形状の品質を制御
– 値が大きいほど曲線が滑らかになるが、ポイント数とクックコストも増加
言語と読み方向 🌐
Language .language 🌐
– Language (言語) — グリフ (字形) を正しく整形するための言語ヒント
– Text TOP/SOP の Unicode 言語略号表の略号を指定
Reading Direction .readingdirection ↪️
Reading Direction (読み方向) — 言語が左から右に読むか右から左に読むかを設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| Left To Right | .lefttoright |
左から右へ読む方向 (英語・日本語の横書き等) |
| Right To Left | .righttoleft |
右から左へ読む方向 (アラビア語・ヘブライ語等) |
文字間隔と行間 🔡
Kerning .kerning 🔡
– Kerning (カーニング) — 文字と文字の間に追加する X / Y 方向の間隔
– カーニングは文字間に任意のオフセットを加える方法。各フォントには既定のオフセットがあり文字同士が密着するが、このパラメータはそれに加算する
– Y 方向のオフセットも指定可能
Line Spacing .linespacing 📋
– Line Spacing (行間) — 行と行の間隔を指定
Horizontal Align .alignx ↔️
Horizontal Align (水平揃え) — テキストの横方向の揃え位置を設定
| 項目 | 内部名 | 説明 |
|---|---|---|
| In Reading Direction | .reading |
読み方向に合わせて揃える |
| Left | .left |
左揃え |
| Center | .center |
中央揃え |
| Right | .right |
右揃え |
ワードラップ ↩️
Word Wrap .wordwrap ↩️
– Word Wrap (ワードラップ) — オンにすると、下の Word Wrap Size で指定した幅を超えた時点で自動的に行を折り返す
Word Wrap Size .wordwrapsize 📐
– Word Wrap Size (折り返し幅) — 行が折り返されるまでに使う 3D 空間の幅を指定
表示する文字列 📝
Text .text 📝
– Text (文字列) — ジオメトリとして生成する文字列
– 改行やタブを含めたい場合は、このパラメータを式 (expression) モードに変更し、\n (改行) や \t (タブ) を含む Python 文字列を指定するのが推奨 (例: 'First Line\nSecond Line')
Legacy Parsing .legacyparsing ⚠️
– Legacy Parsing (旧式の解析) — 複雑な文字列で問題が起きやすいため、Text パラメータでは Python 式の利用が推奨
– オンかつ Text が定数モードのとき、\t / \n がタブ・改行文字に変換される。オフのときは \ と t、\ と n という文字どおりに残る
Transform Page 🔧
Transform Order .xord 🔁
Transform Order (変換の順序) — 移動・回転・スケールを適用する順序。同じ値でも順序が違うと結果が変わるため、目的に合う順序を選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Scale Rotate Translate | .srt |
スケール → 回転 → 移動の順 |
| Scale Translate Rotate | .str |
スケール → 移動 → 回転の順 |
| Rotate Scale Translate | .rst |
回転 → スケール → 移動の順 |
| Rotate Translate Scale | .rts |
回転 → 移動 → スケールの順 |
| Translate Scale Rotate | .tsr |
移動 → スケール → 回転の順 |
| Translate Rotate Scale | .trs |
移動 → 回転 → スケールの順 |
Rotate Order .rord 🔄
Rotate Order (回転の順序) — 全体の変換順序の中で X / Y / Z 各軸の回転を適用する順序
| 項目 | 内部名 | 説明 |
|---|---|---|
| Rx Ry Rz | .xyz |
X → Y → Z の順に回転 |
| Rx Rz Ry | .xzy |
X → Z → Y の順に回転 |
| Ry Rx Rz | .yxz |
Y → X → Z の順に回転 |
| Ry Rz Rx | .yzx |
Y → Z → X の順に回転 |
| Rz Rx Ry | .zxy |
Z → X → Y の順に回転 |
| Rz Ry Rx | .zyx |
Z → Y → X の順に回転 |
移動・回転・スケール 🧭
Translate .t 🧭
– Translate (移動) — 文字ジオメトリを X / Y / Z の 3 軸で移動
– tx / ty / tz の 3 フィールド
Rotate .r 🔃
– Rotate (回転) — 文字ジオメトリを X / Y / Z の 3 軸で回転
– rx / ry / rz の 3 フィールド
Scale .s 🔍
– Scale (スケール) — 文字ジオメトリを X / Y / Z の 3 軸で拡大縮小
– sx / sy / sz の 3 フィールド
Pivot .p 📍
– Pivot (ピボット) — 変換の基準となる点 (回転・スケールの中心)
– px / py / pz の 3 フィールド
– ピボット点を動かすと、実行する変換の種類に応じて結果が変わる (例: スケール時はピボットに向かって縮小・拡大する)
実践アイデア 💡
Example 1: ロゴ文字を立体的に押し出す 🔠
Text SOP (Output=Closed Polygons) → Extrude SOP → Geometry COMP → Render TOP
Text SOP で文字の閉じた輪郭ポリゴンを生成し、後段の Extrude SOP で奥行き方向に押し出して立体ロゴ・看板を作る基本パターン。Output を Closed Polygons にしておくことで、押し出した側面が正しく閉じた立体になる。
- Text SOP を配置し、
Textに表示したい文字列を入力 Fontでフォントを選ぶか、Font Fileで TrueType / OpenType ファイルを指定OutputをClosed Polygonsに設定して押し出し用の閉じた輪郭を生成- 後段に Extrude SOP を接続して奥行き方向に押し出し、立体化
- Geometry COMP に接続し、Camera COMP / Light COMP / Render TOP で結果を確認
Example 2: 中央揃えの複数行テキスト 📝
Text SOP (Horizontal Align=Center, Word Wrap=On) → Transform SOP → Geometry COMP
Text パラメータを式モードにして改行コードを含む複数行テキストを生成し、Horizontal Align を Center に、Line Spacing で行間を整えて中央揃えのレイアウトを作る例。長文ではワードラップを併用して自動的に行を折り返す。
- Text SOP を配置し、
Textパラメータを式モードに変更 'First Line\nSecond Line'のように\nを含む Python 文字列を指定して複数行にするHorizontal AlignをCenterにして各行を中央揃えLine Spacingで行間を、Word WrapとWord Wrap Sizeで折り返しを調整- 後段の Transform SOP / Geometry COMP で位置とレンダリングを整える
Example 3: レーザー投影用の輪郭文字 🔦
Text SOP (Output=Open Polygons) → Laser CHOP
Text SOP の Output を Open Polygons にして文字を開いた輪郭線として生成し、Laser CHOP に渡してレーザー投影用のベクターパスを作る例。輪郭線のみを描画するため、レーザーやワイヤフレーム表現に適している。
- Text SOP を配置し、表示する文字列とフォントを設定
OutputをOpen Polygonsに設定して開いた輪郭線で出力Level of Detailを調整して曲線部分の滑らかさを確保- 出力を Laser CHOP 等に接続してベクターパスとして利用
関連オペレータ 🔗
類似機能OP 🔍
- Text TOP — 文字を 2D 画像 (テクスチャ) として生成する TOP。3D ジオメトリが不要な場合の選択肢
組み合わせ推奨OP 🔄
- Extrude SOP — 文字の輪郭ポリゴンを奥行き方向に押し出して立体ロゴ・看板を生成
- Convert SOP — 文字ジオメトリをポリゴン / メッシュ等の別タイプに変換
- Transform SOP — 生成した文字ジオメトリに追加の移動・回転・スケールを適用
- Geometry COMP — 文字ジオメトリをレンダリングパイプラインに投入
前処理・後処理SOP 🎯
- 前処理: In SOP
- 後処理: Extrude SOP、Convert SOP、Transform SOP、Subdivide SOP
Info CHOP情報 📊
Text 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— プロセス開始以降にこのオペレータがクックされた合計回数cook_time:cook_time— 直近のクック所要時間 (ミリ秒)cook_frame:cook_frame— このオペレータが最後にクックされたフレーム番号cooked_this_frame:cooked_this_frame— 当該フレームでクックされた場合は1
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 文字が表示されない / 想定したフォントにならない
✅ Solution:
Textパラメータに文字列が入っているか確認Font Fileを指定している場合はFontメニューが無効になるため、フォントファイルのパスが正しいか確認- 指定したフォントが OS に読み込まれているか確認 — Font メニューには OS のフォントのみが表示される
❌ Problem: 改行やタブが反映されない
✅ Solution:
Textパラメータを式 (expression) モードに変更し、'First Line\nSecond Line'のように\n/\tを含む Python 文字列を指定するのが推奨- 定数モードのまま改行したい場合は
Legacy Parsingをオンにすると\n/\tが改行・タブに変換される - Legacy Parsing は複雑な文字列で問題が起きやすいため、可能なら式モードを優先する
❌ Problem: 立体化したときに側面に穴が空く / 押し出しが崩れる
✅ Solution:
OutputをClosed Polygonsに設定して閉じた輪郭を生成してから Extrude SOP で押し出す- 文字に穴のある形状 (O や A など) が崩れる場合は後段に Hole SOP を接続して穴を正しく保つ
Level of Detailを上げて曲線部分の輪郭精度を確保する
❌ Problem: 文字の間隔やレイアウトが詰まりすぎる / 広がりすぎる
✅ Solution:
Kerningで文字間の X / Y オフセットを調整Line Spacingで行間を、Horizontal Alignで揃え位置を調整- 長文では
Word Wrapをオンにし、Word Wrap Sizeで折り返し幅を指定する
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Text SOP
- TouchDesigner公式ドキュメント – Text TOP
- TouchDesigner公式ドキュメント – Extrude SOP
- TouchDesigner公式ドキュメント – Convert SOP

