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

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

Text SOP の文字ジオメトリ生成機能を示す図

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

概要 📖 – 文字をジオメトリ化

Text SOPは、指定したフォントと文字列から、レンダリング可能な 3D ジオメトリとして文字を生成する SOPです。出力形式を三角形メッシュ・閉じた輪郭・開いた輪郭から選べ、文字サイズ・カーニング・行間・揃え・ワードラップでレイアウトを細かく調整できます。

主な用途 🎯

  • フォントから文字を 3D ジオメトリとして生成 (OS のフォントや TrueType / OpenType ファイルを指定)
  • 押し出し用の輪郭ポリゴンを作成し、後段の Extrude SOP で立体ロゴ・看板を生成
  • 三角形メッシュ・閉じた輪郭・開いた輪郭の出力形式を切替え、用途に応じた文字ジオメトリを取得
  • カーニング・行間・水平揃え・ワードラップでレイアウトを細かく制御
  • 言語ヒントと読み方向で多言語テキストを正しく配置 (右から左に読む言語にも対応)
  • 移動・回転・スケールを内蔵し、生成した文字ジオメトリをその場で配置

データフロー 🔄

入力: フォント (OS フォントまたはフォントファイル) と表示する文字列
↓
文字サイズ・行間・揃え・ワードラップでレイアウトを設定
↓
出力形式 (三角形 / 閉じた輪郭 / 開いた輪郭) を選択
↓
移動・回転・スケールで配置
↓
出力: 文字の 3D ジオメトリ SOP
CHECK

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

まる。
まる。

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


パラメータ解説 ⚙️

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 にしておくことで、押し出した側面が正しく閉じた立体になる。

  1. Text SOP を配置し、Text に表示したい文字列を入力
  2. Font でフォントを選ぶか、Font File で TrueType / OpenType ファイルを指定
  3. Output を Closed Polygons に設定して押し出し用の閉じた輪郭を生成
  4. 後段に Extrude SOP を接続して奥行き方向に押し出し、立体化
  5. 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 で行間を整えて中央揃えのレイアウトを作る例。長文ではワードラップを併用して自動的に行を折り返す。

  1. Text SOP を配置し、Text パラメータを式モードに変更
  2. 'First Line\nSecond Line' のように \n を含む Python 文字列を指定して複数行にする
  3. Horizontal Align を Center にして各行を中央揃え
  4. Line Spacing で行間を、Word Wrap と Word Wrap Size で折り返しを調整
  5. 後段の Transform SOP / Geometry COMP で位置とレンダリングを整える

Example 3: レーザー投影用の輪郭文字 🔦

Text SOP (Output=Open Polygons) → Laser CHOP

Text SOP の Output を Open Polygons にして文字を開いた輪郭線として生成し、Laser CHOP に渡してレーザー投影用のベクターパスを作る例。輪郭線のみを描画するため、レーザーやワイヤフレーム表現に適している。

  1. Text SOP を配置し、表示する文字列とフォントを設定
  2. Output を Open Polygons に設定して開いた輪郭線で出力
  3. Level of Detail を調整して曲線部分の滑らかさを確保
  4. 出力を Laser CHOP 等に接続してベクターパスとして利用

関連オペレータ 🔗

類似機能OP 🔍

  • Text TOP — 文字を 2D 画像 (テクスチャ) として生成する TOP。3D ジオメトリが不要な場合の選択肢

組み合わせ推奨OP 🔄

  • Extrude SOP — 文字の輪郭ポリゴンを奥行き方向に押し出して立体ロゴ・看板を生成
  • Convert SOP — 文字ジオメトリをポリゴン / メッシュ等の別タイプに変換
  • Transform SOP — 生成した文字ジオメトリに追加の移動・回転・スケールを適用
  • Geometry COMP — 文字ジオメトリをレンダリングパイプラインに投入

前処理・後処理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 で折り返し幅を指定する

参考資料 📚

その他 🔗

公式リソース 📖


関連まとめ 🔗

ファミリー別一覧 📑

厳選オペレータ ⭐

逆引き 🔎


この記事はLLMと共に内容を執筆、更新しています。
なるべく正確な情報を心掛けていますが、最新バージョンとの項目差異など情報の不一致を見つけたらXもしくはInsta、メールなどから管理者までご連絡いただけると嬉しいです🫠


まる。

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

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

日常を垂れ流すだけのアカウント
Instagram:@malmal0v0

発信を今後がんばる予定のアカウント
Youtube:https://www.youtube.com/@malmal0v0

まる。をフォローする
その他の記事はこちら
今流行りのクリエイティブツール、Touchdesignerとは?業界の現役ちいかわエンジニアができることを解説ッ
トカゲのポーズ(ウッターナ・プリシュターサナ)のやり方|効果・コツ・注意点【ヨガ】
針の糸通しのポーズ(パールシュヴァ・バーラーサナ)のやり方|効果・コツ・注意点【ヨガ】
ウサギのポーズ(ササンガーサナ)のやり方|効果・コツ・注意点【ヨガ】
スフィンクスのポーズ(サーランバ・ブジャンガーサナ)のやり方|効果・コツ・注意点【ヨガ】

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