
概要 📖 – 位置テクスチャを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 ページで参照ノードの寸法に整列
↓
出力: 変換後の位置テクスチャ
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
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 Type が Vector の場合、移動値は効果を持ちません。
- 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:
chanmask—R/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 を時間で動かして点群全体を回転させながら描画する基本フロー。
- Point File In TOP でポイントクラウドの位置を RGB テクスチャとして読み込み
- Point Transform TOP の
Input TypeをPositionに設定 - Rotate の
ryにabsTime.seconds * 30等を入力して点群を回転 - 出力をレンダリングパイプラインに渡して回転する点群を表示
Example 2: 重み画像による点群の部分変形 ⚖️
Point File In TOP + Ramp TOP (重み) → Point Transform TOP (Weights)
第2入力に Ramp TOP のグラデーションを重みとして渡し、Weight Range で変換量を制御することで、点群の一部だけを段階的に移動・スケールさせる部分変形を作る例。
- Point File In TOP を第1入力、グラデーション画像を第2入力に接続
- Weights ページの
Weight ChannelをLuminanceに設定 Weight Rangeで変換が効き始める/完全に効く重み値を調整- Transform ページの Translate / Scale を設定し重みに応じた部分変形を確認
Example 3: 参照ノードに整列 📐
Point File In TOP → Point Transform TOP (Align, Reference Node) → 後段
Align ページの Reference Node に別ジオメトリを指定し、点群を参照側の寸法に合わせて中心・最小・最大基準で整列させることで、異なるスケールの点群を揃える用途。
- Point Transform TOP の Align ページで
Reference Nodeに基準となる TOP / SOP を指定 Align Translate X/Y/ZをOrigin等にして整列軸を有効化From InputとTo Referenceで入力側・参照側の基準位置 (Min/Center/Max) を選択- 必要に応じて
Align ScaleをUnityにして参照範囲に収まるようリサイズ
関連オペレータ 🔗
類似機能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: アスペクト比 Xaspecty: アスペクト比 Ydepth: 3D テクスチャ / テクスチャ配列の深度 (2D テクスチャでは 1)gpu_memory_used: TOP が消費している GPU メモリ量 (MB 単位)
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Translate を動かしても点群が移動しない
✅ Solution:
Input TypeがVectorになっていないか確認 (Vector では移動成分は適用されない)- 入力テクスチャの RGB が実際に位置を表しているか確認 (色画像では座標として意味を持たない)
- Common Page の
Pixel Formatを32-bit float (RGBA)に上げて位置精度を確保
❌ Problem: 回転やスケールの結果が想定と違う向き・位置になる
✅ Solution:
Transform Order(移動・回転・スケールの順序) を確認 (順序で最終位置が変わる)Rotate Order(回転軸の順序) を確認Pivot(基準点) が意図した中心になっているか確認
❌ Problem: Align (整列) を設定しても点群が参照ノードに揃わない
✅ Solution:
- Align ページの
Reference Nodeに有効な TOP / SOP のパスが入っているか確認 Align Translate X/Y/ZがOffのままになっていないか確認From Input(入力基準) とTo Reference(参照基準) の Min/Center/Max の組み合わせを見直す
❌ Problem: パフォーマンスが重くフレームレートが落ちる
✅ Solution:
- 別のポイントクラウド TOP を
Reference Nodeに使うと寸法計算でコストが増えるため、必要時のみ使用 - Common Page の
Output Resolutionを下げて点数を削減 - 位置精度が不要な場合は
Pixel Formatを 16-bit float に下げる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — Category:TOPs
- TouchDesigner Wiki — Pixel Formats 解説
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Point Transform TOP
- TouchDesigner公式ドキュメント – Point File In TOP (組み合わせ参照)
- TouchDesigner公式ドキュメント – Transform CHOP (変換チャンネル参照)

