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

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

Trig POP の三角関数演算機能を示す図

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

概要 📖 – 属性値に三角関数を適用

Trig POPは、入力ジオメトリの属性値に対して正弦・余弦・正接などの三角関数を適用し、角度単位を変換しながら結果を出力する POPです。点・頂点・プリミティブの各属性クラスごとに、入力の角度単位と出力の角度単位を個別に指定でき、波状の動きや方向計算を 1 ノードで表現します。

主な用途 🎯

  • ポイント位置 (P) や色 (Cd) などの属性値への正弦・余弦・正接の適用
  • 角度値の単位変換 (Degrees / Radians / Cycles) と相互変換
  • 逆三角関数 (asin / acos / atan) による角度の逆算
  • atan2 を用いた 2 入力からの方向角の算出
  • 双曲線関数 (sinh / cosh / tanh) を使った非線形カーブの生成

データフロー 🔄

入力: POP ジオメトリ(属性付き)

属性スコープと三角関数設定に基づく演算処理

出力: 同形状ジオメトリ(演算後の属性値)

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Trigonometry Page 📋

属性クラス .attrclass 🧱

演算対象とする属性の所属クラス (点・頂点・面) を指定

項目 内部名 説明
Point .point ポイント属性 (位置 P や色 Cd 等、頂点共有データ) を対象に演算
Vertex .vertex 頂点属性 (Tex 等、プリミティブ別に持つデータ) を対象に演算
Primitive .primitive プリミティブ属性 (面単位で持つ法線や色 等) を対象に演算

グループとスコープ 🎯

Group .group 🗂️
Group (グループ名) — 入力にグループがある場合、ここで名前を指定するとそのグループ内の要素のみを対象に演算します。空欄なら全体に適用。

Input Attribute Scope A .inputattrscopea 🅰️
Input Attribute Scope A (入力属性スコープ A) — 関数の引数 A に渡す入力属性または属性コンポーネントを指定します。多くの単項関数 (sin など) はこの A のみを使用します。

Input Attribute Scope B .inputattrscopeb 🅱️
Input Attribute Scope B (入力属性スコープ B) — 関数の引数 B に渡す入力属性または属性コンポーネントを指定します。atan2(A,B) など 2 引数の関数で使用します。

Function 演算 .operation 🎛️

属性値に適用する三角関数を選択

項目 内部名 説明
None .none 演算を適用しない (素通し)
cos(A) .cos 余弦
sin(A) .sin 正弦
tan(A) .tan 正接
acos(A) .acos 逆余弦
asin(A) .asin 逆正弦
atan(A) .atan 逆正接
atan2(A,B) .atan2 2 引数の逆正接 (A と B から方向角を算出)
cosh(A) .cosh 双曲線余弦
sinh(A) .sinh 双曲線正弦
tanh(A) .tanh 双曲線正接

入力角度単位 .fromunit 📐

演算が角度を引数に取る場合の入力角度単位を指定

項目 内部名 説明
Degrees .deg 度単位 (0〜360 で 1 回転)
Radians .rad ラジアン単位 (0〜2π で 1 回転)
Cycles .cycle サイクル単位 (0〜1 で 1 回転)

出力角度単位 .tounit 📐

演算結果が角度になる場合の出力角度単位を指定

項目 内部名 説明
Degrees .deg 度単位で出力
Radians .rad ラジアン単位で出力
Cycles .cycle サイクル単位で出力

出力属性スコープ .outputattrscope 📤

演算結果を書き出す出力属性の指定

項目 内部名 説明
P .P ポイント位置 (3 成分 float)
N .N 法線ベクトル (3 成分 float)
Color .Color 色 (RGBA 4 成分)
Color.rgb .Color.rgb 色の RGB 3 成分のみ (アルファ除外)
Tex .Tex テクスチャ座標 (UV)
PointScale .PointScale ポイントスケール属性
LineWidth .LineWidth ラインの太さ属性

出力属性オーバーライド 🛡️

出力属性の型・コンポーネント数・デフォルト値を手動で上書き

Override Automatic Attribute .overrideautoattr 🔓
Override Automatic Attribute (自動属性上書き) — オンにすると、入力とパラメータから自動決定される属性の種類を、以下の Attribute Type / Components で手動指定できます。

Attribute Type .attrtype 🏷️
Attribute Type (属性型) — 出力属性のデータ型を選択します (デフォルトは float)。

  • float / double (単精度 / 倍精度浮動小数点)
  • int / uint (整数 / 符号なし整数)
  • Color / Color (double) (色、float / double 版)
  • Direction / Direction (double) (方向ベクトル、float / double 版)

Components .attrnumcomps 🧮
Components (コンポーネント数) — 新規カスタム属性のコンポーネント数 (1〜4) を指定します。

Default Value .attrdefaultval 🎁
Default Value (デフォルト値) — 演算で算出できないケースに使用される属性の初期値を、コンポーネントごとに最大 4 個まで指定します。


Common Page 🔧

Bypass .bypass 🚫

POP の処理をスキップして入力をパススルーする設定:

  • オン: 最初の入力 (input1) をそのまま出力にパススルー、POP 内部の処理を無効化
  • 用途: デバッグ時に特定 POP の効果を一時的に外して比較する際に使用

Free Extra GPU Memory .freeextragpumem 🧠

蓄積した GPU メモリの解放:

  • Free Extra GPU Memory パルス: 出力ポイント数が増減を繰り返した際に確保されたままの GPU メモリを明示的に解放するパルスパラメータ
  • 用途: 大規模パーティクル系で出力サイズが大きく変動した後、未使用メモリを返却して VRAM を節約

Delete Input Attributes .delinputattrs 🗑️

出力属性の絞り込みパターン:

  • Delete Input Attributes パターン: 出力に残したい属性名のパターン (例: P N Cd) を指定。指定外の属性は破棄される
  • 用途: 下流で不要な属性を切り落として分岐ブランチを軽量化、メモリ・帯域を節約

実践アイデア 💡

Example 1: ポイントを波状に揺らす 🌊

Grid POP → Trig POP (sin on P + From Radians) → Render TOP

グリッド状に並んだポイント位置 (P) に対し Trig POP の sin 演算を適用し、X 座標を入力とした正弦波で Y 座標を持ち上げることで、布や水面のような波打つ動きを生成する基本フロー。時間項を加えればアニメーションも可能。

  1. Grid POP で平面状のポイント群を生成
  2. Trig POP の Attribute Class を Point、Input Attribute Scope A に P の X 成分を指定
  3. Operation を sin、From Angle Units を Radians に設定
  4. Output Attribute Scope を P の Y 成分にして波状の高低差を生成

Example 2: 2 軸から方向角を求める 🧭

In POP → Trig POP (atan2 on A,B) → Render TOP

ポイント属性の 2 成分 (例: 速度ベクトルの X と Z) を入力 A・B に渡し、Trig POP の atan2(A,B) 演算で各ポイントの進行方向角を算出する例。パーティクルの向きや色相マッピングへの応用に使える。

  1. In POP で速度や位置の属性を持つジオメトリを受け取る
  2. Trig POP の Operation を atan2(A,B) に設定
  3. Input Attribute Scope A / B にそれぞれ方向計算に使う 2 成分を指定し、To Angle Units を Degrees にして方向角を出力

Example 3: 色相を周期的に変化 🎨

Particle POP → Trig POP (cos on Cd) → Render TOP

パーティクルの色属性 (Color) に cos 演算を適用し、入力値の周期に応じて RGB 成分を滑らかに往復させることで、虹色のグラデーション演出やアンビエントなカラーアニメーションを作る用途。

  1. Particle POP で動的なポイント群を生成
  2. Trig POP の Output Attribute Scope を Color.rgb、Operation を cos に設定
  3. From Angle Units を Cycles にして 0〜1 の入力で 1 周期の色変化を得る

関連オペレータ 🔗

類似機能OP 🔍

  • Math POP — 加算・乗算・関数を含む汎用的な属性演算
  • Math Combine POP — 複数入力属性の数学的合成
  • Math Mix POP — 重み付きで複数属性をブレンド
  • Normalize POP — ベクトル属性の単位化に特化

組み合わせ推奨OP 🔄

  • Attribute POP — 新規属性を追加してから Trig POP で角度演算
  • Noise POP — ノイズで生成した値を Trig POP で波状に変換
  • Math POP — Trig POP の前後でスケール・オフセットを調整
  • ReRange POP — 三角関数の出力を別の値域にリマップ

前処理・後処理POP 🎯


Info情報 📊

POP ファミリには専用の Info OP が存在しません。Trig POP の出力情報は下流の Null POP で値を確認したり、Python から POP クラスメンバーで取得します。

POP固有情報 ✨

  • num_verts: POP に含まれる頂点 (vertex) 数
  • num_points: POP に含まれるポイント数
  • num_prims: POP に含まれるプリミティブ数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • cook_abs_frame: 最後にクックされた絶対フレーム番号 (アプリケーション起動からの累積)
  • cook_start_time: 最後のクック開始時刻 (ミリ秒)
  • cook_end_time: 最後のクック終了時刻 (ミリ秒)
  • cooked_this_frame: 現フレームでクックされたか (0 / 1)
  • warnings: 警告数
  • errors: エラー数

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

よくある問題と解決策 🔧

❌ Problem: 三角関数の結果が想定と違う
✅ Solution:

  • From Angle Units が入力データの単位 (Degrees / Radians / Cycles) と合っているか確認
  • 出力が角度になる関数 (asin / acos / atan) では To Angle Units も確認
  • 上流に Math POP を挟んで入力値を適切な範囲に整える

❌ Problem: 演算結果が反映されない
✅ Solution:

  • Attribute Class が対象属性のクラス (Point / Vertex / Primitive) と一致しているか確認
  • Input Attribute Scope A / Output Attribute Scope に対象属性名 (P / N / Color 等) が含まれているか確認
  • 上流に同名属性が存在しない場合は Attribute POP で先に属性を追加

❌ Problem: atan2 の出力が不正
✅ Solution:

  • Operation を atan2(A,B) にしたとき Input Attribute Scope B が正しく指定されているか確認
  • A・B の成分数が揃っているか確認 (片方だけ多成分だと意図しない結果になる)
  • 出力角度の単位を To Angle Units で明示し下流での解釈と揃える

参考資料 📚

その他 🔗

公式リソース 📖

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