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

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

Point Transform TOP の点群位置変換機能を示すサムネイル

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

概要 📖 – 位置テクスチャを3D変換する TOP

Point Transform TOPは、RGB チャンネルを XYZ 位置またはベクトルとして解釈し、移動・回転・スケールなどの3D変換を適用するポイントクラウド向け TOPです。Input Type で位置とベクトルを切り替えられ、第2入力の色を重みとした部分変換や、参照ノードへのアラインメントも可能です。

主な用途 🎯

  • RGB に格納した点群位置 (ポイントクラウド) の移動・回転・スケール
  • RGB を方向ベクトルとして扱った法線・速度フィールドの回転変換
  • 第2入力の色を重みとして使った点群の部分的・グラデーション変換
  • 参照ノードの寸法に合わせた点群のアラインメント (中心・最小・最大基準)
  • Look At を使った点群の特定オブジェクトへの追従・整列

データフロー 🔄

入力1: RGB 位置/ベクトルテクスチャ (任意で入力2: 重み画像、入力3: 参照画像)

Transform ページで移動・回転・スケール

Weights ページで第2入力の色を重みとして部分適用

Align ページで参照ノードの寸法に整列

出力: 変換後の位置テクスチャ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Transform Page 🔄

Input Type .inputtype 🎛️

Input Type (入力の解釈方法) — 入力テクスチャの RGB チャンネルを位置として扱うか、方向ベクトルとして扱うかを選択します。

項目 内部名 説明
Position .position RGB 値を XYZ 位置 (座標) として扱う
Vector .vector RGB 値を XYZ 方向ベクトルとして扱う (移動成分は適用されない)

正規化トグル 📐

Normalize Input .innormalize 📥
Normalize Input (入力正規化) — RGB 入力ベクトルを変換前に長さ1へ再スケールします。

Normalize Output .outnormalize 📤
Normalize Output (出力正規化) — RGB ベクトルを変換後に長さ1へ再スケールします。

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 軸方向へ平行移動します。Input TypeVector の場合、移動値は効果を持ちません。

  • X (tx)
  • Y (ty)
  • Z (tz)

Rotate .r 🔄
Rotate (回転) — 入力 RGB 値を対応する X・Y・Z 軸まわりに回転します。角度は度数で指定します。

  • X (rx)
  • Y (ry)
  • Z (rz)

Scale .s 📏
Scale (スケール) — 入力 RGB 値を対応する X・Y・Z 軸方向へ拡大縮小します。Normalize Output がオンの場合はスケール値に関わらず出力が長さ1へ再スケールされます。

  • X (sx)
  • Y (sy)
  • Z (sz)

Pivot .p 📍
Pivot (基準点) — 入力点やベクトルをスケール・回転させる際の中心点です。基準点を変えると変換結果が変わります。

  • X (px)
  • Y (py)
  • Z (pz)

Uniform Scale .scale 🔍
Uniform Scale (一律スケール) — 全軸を同時に同じ倍率で拡大縮小します。

Invert .invert ↩️
Invert (反転) — 変換を反転し、逆方向の移動・回転・スケールを実行します。

Look At .lookat 👁️

指定オブジェクトに向ける注視関連のパラメータ

Look At .lookat 👁️
Look At (注視対象) — 入力点を向けたいオブジェクトを指定します。指定後はそのオブジェクトを移動させても追従して向き続けます。

Up Vector .upvector ⬆️
Up Vector (上方向ベクトル) — Look At 対象へ向ける際に、正の Y 軸がどこを向くかを決めるベクトルです。

  • X (upvectorx)
  • Y (upvectory)
  • Z (upvectorz)

Forward Direction .forwarddir 🧭

Forward Direction (前方向) — どの軸と向きを前方とみなすかを選択します。

項目 内部名 説明
+X .posx 正の X 軸方向を前方とする
-X .negx 負の X 軸方向を前方とする
+Y .posy 正の Y 軸方向を前方とする
-Y .negy 負の Y 軸方向を前方とする
+Z .posz 正の Z 軸方向を前方とする
-Z .negz 負の Z 軸方向を前方とする

Transform CHOP .chopinput 🎚️

CHOP 経由で変換を渡す関連パラメータ

Transform CHOP .chopinput 🎚️
Transform CHOP (変換 CHOP のパス) — 3D 変換を記述したチャンネルを持つ CHOP ノードのパスです。これらのチャンネルは Transform CHOP や、正しいチャンネルを定義した他の CHOP から得られます。

Multiply Order .multiplyorder 🔀
Multiply Order (乗算順序) — 指定した CHOP の変換を、このノードの Transform ページの変換より前に適用するか後に適用するかを制御します。

  • Input, then Transform Page (inputxformpage) — 入力 CHOP の変換を先に適用
  • Transform Page, then Input (xformpageinput) — Transform ページの変換を先に適用

Weights Page ⚖️

Weight Channel .weightchannel 🎨

Weight Channel (重みチャンネル) — 第2入力画像の色を、第1入力の点を変換する際の重みとしてどう使うかを選択します。

項目 内部名 説明
Luminance .luminance 輝度を重みとして使用
Red .red R チャンネルを重みとして使用
Green .green G チャンネルを重みとして使用
Blue .blue B チャンネルを重みとして使用
Alpha .alpha A チャンネルを重みとして使用
RGB Average .rgbaverage RGB の平均を重みとして使用
RGBA Average .average RGBA の平均を重みとして使用
RGB Maximum .rgbmax RGB の最大値を重みとして使用
RGBA Maximum .max RGBA の最大値を重みとして使用
RGBA Independent .independent RGBA を各チャンネル独立の重みとして使用

Weight Range .weightrange 📊

Weight Range (重み範囲) の最小・最大値:

  • Weight Range 最小値: weightrange1 — この重み以下の点は変換されない下限値
  • Weight Range 最大値: weightrange2 — この重み以上の点は完全に変換される上限値

Align Page 📐

Align Transform Order .alignxformorder 🔢

Align Transform Order (整列変換順序) — 入力点に対し整列操作を行う順序を決定します。なお Transform ページのスケールと異なり、整列スケールは常に点群の中心を基準に行われるため、点群の中心位置は変わりません。

項目 内部名 説明
Transform, then Align .transformalign 変換を先に行ってから整列
Align, then Transform .aligntransform 整列を先に行ってから変換

Reference Node .alignref 🔗

整列の基準ノードを指定するパラメータ

Reference Node .alignref 🔗
Reference Node (参照ノードのパス) — 変換後の入力点を整列させる基準となる TOP / SOP ノードのパスです。

Align Operation Order .alignopord 🔁

Align Operation Order (整列操作順序) — 整列時にスケールと移動をどの順序で適用するかを選択します。

項目 内部名 説明
Scale Translate .st スケール → 移動 の順
Translate Scale .ts 移動 → スケール の順

Align Translate (X/Y/Z) .aligntx ↔️

Align Translate X/Y/Z (軸ごとの整列移動) — 各軸方向 (R/G/B チャンネル) について点の最終位置をどう移動するかを決めます。

項目 内部名 説明
Off .off その軸の値は移動しない
Origin .origin その軸の値を原点 (ゼロ) を基準に整列

From Input (X/Y/Z) .fromx 📥

From Input (入力基準) — 入力点の寸法を基準に、どの位置で整列するかを軸ごとに決めます。

項目 内部名 説明
Min .min その軸の最小値を基準に整列
Center .center その軸の値の中心を基準に整列
Max .max その軸の最大値を基準に整列

To Reference (X/Y/Z) .tox 📤

To Reference (参照基準) — 参照ノードの寸法のどこに最終位置を合わせるかを軸ごとに決めます。

項目 内部名 説明
Min .min 参照ノードのその軸の最小値に合わせる
Center .center 参照ノードのその軸の中心に合わせる
Max .max 参照ノードのその軸の最大値に合わせる

Align Scale .alignscale 🔍

Align Scale (整列スケール) — 点群を指定範囲に収まるようリサイズします。軸ごと (比率維持または引き伸ばし)、または全軸一律でスケールできます。

項目 内部名 説明
Per Axis .peraxis 下記のパラメータで軸ごとに個別制御 (複数軸に上限を設定すると矛盾が起きる場合あり)
Unity .unity 1×1×1 の立方体に収まるようリサイズ。比率は維持され、最大寸法の軸が長さ1になる

Align Scale (X/Y/Z) .alignscalex 📏

Align Scale X/Y/Z (軸ごとの整列スケール) — 各軸の幅・高さ・奥行きを基準に点群をリサイズします。

項目 内部名 説明
Off .off その軸を基準としたスケールは行わない
Unity .unity その軸の総寸法が1になるようリサイズ (他軸は変えないため全体の形は歪む)
Unity Proportional .unityprop その軸の総寸法が1になるようリサイズし、他軸も比率を保って連動スケール

Common Page 🔧

Output Resolution .outputresolution 🖼️

Output Resolution (出力解像度) — TOP のデータの解像度を素早く変更する設定です。

項目 内部名 説明
Use Input .useinput 入力 TOP の解像度をそのまま継承
Eighth .eighth 入力解像度の 1/8
Quarter .quarter 入力解像度の 1/4
Half .half 入力解像度の 1/2
2X .2x 入力解像度の 2 倍
4X .4x 入力解像度の 4 倍
8X .8x 入力解像度の 8 倍

Resolution .resolution 📐

Resolution (解像度) の幅・高さ指定:

  • Resolution W: resolutionw — 出力幅 (ピクセル単位)。右側のドロップダウンでよく使う解像度を選択可
  • Resolution H: resolutionh — 出力高 (ピクセル単位)

Resolution Menu .resmenu 📋

Resolution Menu (解像度プリセット):

  • Resolution Menu: resmenu — よく使う解像度から選択すると Resolution W / Resolution H が自動セットされる

Use Global Res Multiplier .resmult 🔢

Use Global Res Multiplier (全体解像度倍率の適用):

  • Use Global Res Multiplier: resmult — 全 TOP の解像度を一括で倍率変更する機能をこの TOP に適用するかのトグル。グラフィックメモリの異なる PC 間でプロジェクトを動かすときに便利

Output Aspect .outputaspect 📏

Output Aspect (出力アスペクト) — 画像のアスペクト比を設定し、テクスチャを任意サイズで表示できるようにします。

項目 内部名 説明
Use Input .useinput 入力 TOP のアスペクト比を継承
Custom Aspect .custom 下の Aspect パラメータでカスタムアスペクト比を明示指定

Aspect .aspect 📐

Aspect (カスタムアスペクト値):

  • Aspect1: aspect1 — 横方向アスペクト値 (Output Aspect = Custom Aspect の時のみ有効)
  • Aspect2: aspect2 — 縦方向アスペクト値 (同上)

Aspect Menu .armenu 📋

Aspect Menu (アスペクトプリセット):

  • Aspect Menu: armenu — よく使うアスペクト比から選択すると Aspect1 / Aspect2 が自動セットされる

Input Smoothness .inputfiltertype 🎚️

Input Smoothness (入力スムーズネス) — 入力画像のピクセルフィルタリング方式を制御します。

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (ジャギーが残るが正確な画素表現)
Interpolate Pixels .linear バイリニア補間 (各ズームレベルで滑らか)
Mipmap Pixels .mipmap ミップマップ補間 (縮小・移動時のちらつき・モアレ抑制)

Fill Viewer .fillmode 🖥️

Fill Viewer (ビューア表示) — ビューア内で TOP 画像をどう表示するかを決めます。

項目 内部名 説明
Use Input .useinput 入力 TOP と同じ Fill Viewer 設定を使う
Fill .fill ビューアの端まで画像を引き伸ばす
Fit Horizontal .width 横幅に合わせて収める
Fit Vertical .height 縦幅に合わせて収める
Fit Best .best 画像が切れないよう伸縮して収める
Fit Outside .outside 比率を保ちつつビューアを覆う (一部はみ出る)

Viewer Smoothness .filtertype 🎛️

Viewer Smoothness (ビューアスムーズネス) — ビューア表示時のピクセルフィルタリング方式を制御します。

項目 内部名 説明
Nearest Pixel .nearest 最近傍ピクセルサンプリング (画素単位の確認向け)
Interpolate Pixels .linear バイリニア補間 (各ズームレベルで滑らか)
Mipmap Pixels .mipmap ミップマップ補間 (縮小ビュー時のモアレ抑制)

Passes .npasses 🔁

Passes (反復実行回数):

  • Passes: npasses — 処理を何パス繰り返すかの整数値。前パスの出力を第1入力に渡して再処理する動作に相当 (他の入力やパラメータは各パスで共通)

Channel Mask .chanmask 🎨

Channel Mask (処理対象チャンネル):

  • Channel Mask: chanmaskR / G / B / A 各チャンネルのオン/オフトグル

Pixel Format .format 🎨

Pixel Format (ピクセルフォーマット) — 画像の各チャンネル (R/G/B/A) のデータ格納形式です。位置データには 32-bit float の使用が推奨されます。

項目 内部名 説明
Use Input .useinput 入力 TOP のフォーマットを継承
8-bit fixed (RGBA) .rgba8fixed 8 ビット整数 RGBA (軽量、位置データには不向き)
sRGB 8-bit fixed (RGBA) .srgba8fixed sRGB 色空間の 8 ビット整数 RGBA
16-bit float (RGBA) .rgba16float 16 ビット浮動小数 RGBA (チャンネル 16 ビット・ピクセル 64 ビット)
32-bit float (RGBA) .rgba32float 32 ビット浮動小数 RGBA (位置データ向けの高精度、ピクセル 128 ビット)
10-bit RGB, 2-bit Alpha, fixed (RGBA) .rgb10a2fixed RGB 10 ビット + アルファ 2 ビット固定小数 (ピクセル 32 ビット)
16-bit fixed (RGBA) .rgba16fixed 16 ビット固定小数 RGBA (ピクセル 64 ビット)
11-bit float (RGB), Positive Values Only .rgba11float RG 11 ビット + B 10 ビット浮動小数 (アルファは常に1、負値不可)
16-bit float (RGB) .rgb16float 16 ビット浮動小数 RGB (アルファなし)
32-bit float (RGB) .rgb32float 32 ビット浮動小数 RGB (アルファなし)
8-bit fixed (Mono) .mono8fixed 単一チャンネル 8 ビット (RGB 同値・アルファ 1.0)
16-bit fixed (Mono) .mono16fixed 単一チャンネル 16 ビット固定小数
16-bit float (Mono) .mono16float 単一チャンネル 16 ビット浮動小数
32-bit float (Mono) .mono32float 単一チャンネル 32 ビット浮動小数
8-bit fixed (RG) .rg8fixed R+G 2 チャンネル 8 ビット (B は常に0・アルファ 1.0)
16-bit fixed (RG) .rg16fixed R+G 2 チャンネル 16 ビット固定小数
16-bit float (RG) .rg16float R+G 2 チャンネル 16 ビット浮動小数
32-bit float (RG) .rg32float R+G 2 チャンネル 32 ビット浮動小数
8-bit fixed (A) .a8fixed アルファ単体 8 ビット
16-bit fixed (A) .a16fixed アルファ単体 16 ビット固定小数
16-bit float (A) .a16float アルファ単体 16 ビット浮動小数
32-bit float (A) .a32float アルファ単体 32 ビット浮動小数
8-bit fixed (Mono+Alpha) .monoalpha8fixed モノクロ+アルファ 2 チャンネル 8 ビット
16-bit fixed (Mono+Alpha) .monoalpha16fixed モノクロ+アルファ 2 チャンネル 16 ビット固定小数
16-bit float (Mono+Alpha) .monoalpha16float モノクロ+アルファ 2 チャンネル 16 ビット浮動小数
32-bit float (Mono+Alpha) .monoalpha32float モノクロ+アルファ 2 チャンネル 32 ビット浮動小数

実践アイデア 💡

Example 1: 点群の回転アニメ 🎯

Point File In TOP → Point Transform TOP (Rotate アニメ) → Render TOP

Point File In TOP で読み込んだポイントクラウドの位置テクスチャを Point Transform TOP に通し、Rotate を時間で動かして点群全体を回転させながら描画する基本フロー。

  1. Point File In TOP でポイントクラウドの位置を RGB テクスチャとして読み込み
  2. Point Transform TOP の Input TypePosition に設定
  3. Rotate の ryabsTime.seconds * 30 等を入力して点群を回転
  4. 出力をレンダリングパイプラインに渡して回転する点群を表示

Example 2: 重み画像による点群の部分変形 ⚖️

Point File In TOP + Ramp TOP (重み) → Point Transform TOP (Weights)

第2入力に Ramp TOP のグラデーションを重みとして渡し、Weight Range で変換量を制御することで、点群の一部だけを段階的に移動・スケールさせる部分変形を作る例。

  1. Point File In TOP を第1入力、グラデーション画像を第2入力に接続
  2. Weights ページの Weight ChannelLuminance に設定
  3. Weight Range で変換が効き始める/完全に効く重み値を調整
  4. Transform ページの Translate / Scale を設定し重みに応じた部分変形を確認

Example 3: 参照ノードに整列 📐

Point File In TOP → Point Transform TOP (Align, Reference Node) → 後段

Align ページの Reference Node に別ジオメトリを指定し、点群を参照側の寸法に合わせて中心・最小・最大基準で整列させることで、異なるスケールの点群を揃える用途。

  1. Point Transform TOP の Align ページで Reference Node に基準となる TOP / SOP を指定
  2. Align Translate X/Y/ZOrigin 等にして整列軸を有効化
  3. From InputTo Reference で入力側・参照側の基準位置 (Min/Center/Max) を選択
  4. 必要に応じて Align ScaleUnity にして参照範囲に収まるようリサイズ

関連オペレータ 🔗

類似機能OP 🔍

  • Transform TOP — 2D 画像の移動・回転・スケール (こちらは画素位置の変換)
  • Math TOP — RGBA 値に対する加減乗除など数値演算

組み合わせ推奨OP 🔄

  • Point File In TOP — ポイントクラウドの位置を RGB テクスチャとして読み込む前段
  • Render TOP — 変換後の位置テクスチャを点群として描画
  • CHOP to TOP — CHOP の変換値を Transform CHOP 入力経由で渡す
  • POP to TOP — POP の点群データを TOP テクスチャ化して入力
  • Composite TOP — 複数の変換済み点群テクスチャを合成

前処理・後処理TOP 🎯


Info CHOP情報 📊

Point Transform TOPは Info CHOP による詳細情報取得に対応しています。

TOP固有情報 🖼️

  • resx: TOP の出力解像度 X (ピクセル単位)
  • resy: TOP の出力解像度 Y (ピクセル単位)
  • aspectx: アスペクト比 X
  • aspecty: アスペクト比 Y
  • depth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)
  • gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数

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

よくある問題と解決策 🔧

❌ Problem: Translate を動かしても点群が移動しない
✅ Solution:

  • Input TypeVector になっていないか確認 (Vector では移動成分は適用されない)
  • 入力テクスチャの RGB が実際に位置を表しているか確認 (色画像では座標として意味を持たない)
  • Common Page の Pixel Format32-bit float (RGBA) に上げて位置精度を確保

❌ Problem: 回転やスケールの結果が想定と違う向き・位置になる
✅ Solution:

  • Transform Order (移動・回転・スケールの順序) を確認 (順序で最終位置が変わる)
  • Rotate Order (回転軸の順序) を確認
  • Pivot (基準点) が意図した中心になっているか確認

❌ Problem: Align (整列) を設定しても点群が参照ノードに揃わない
✅ Solution:

  • Align ページの Reference Node に有効な TOP / SOP のパスが入っているか確認
  • Align Translate X/Y/ZOff のままになっていないか確認
  • From Input (入力基準) と To Reference (参照基準) の Min/Center/Max の組み合わせを見直す

❌ Problem: パフォーマンスが重くフレームレートが落ちる
✅ Solution:

  • 別のポイントクラウド TOP を Reference Node に使うと寸法計算でコストが増えるため、必要時のみ使用
  • Common Page の Output Resolution を下げて点数を削減
  • 位置精度が不要な場合は Pixel Format を 16-bit float に下げる

参考資料 📚

その他 🔗

公式リソース 📖

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