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

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

Align SOP のプリミティブ整列機能を示す図

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

概要 📖 – プリミティブの位置・向きを基準点に整列

Align SOPは、プリミティブの UV 基準点同士を一致させて、位置と向きを整列させる SOPです。補助入力を使わない単一入力モードではプリミティブ同士を連鎖配置でき、補助入力を接続すれば基準ジオメトリへの吸着整列もできるため、レイアウトの自動化やジオメトリのスナップ用途に使えます。

主な用途 🎯

  • 複数プリミティブを 1 列に整列させて並べる (UV 基準点で連鎖配置)
  • 補助入力 (2nd input) の基準プリミティブに対して左入力を吸着・整列
  • Groups of N Primitives モードで N 個ごとのサブグループ単位に整列
  • 整列と同時に回転を一致させて向きを揃える (Rotate オプション)
  • Right UV End を指定して左プリミティブを基準区間に均等分布配置

データフロー 🔄

入力 1 (左/整列対象 SOP) [+ 入力 2 (右/基準 SOP・オプション)]

Group でサブセット抽出

Align モードで対象範囲決定

Left UV / Right UV / Bias で基準点計算

Translate / Rotate で位置・向きを整列

後段 Transform Page で post-alignment 補正

出力: 整列済み SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

対象プリミティブ選択関連パラメータ 🎯

Group .group 🎯
– 整列対象とするプリミティブのサブセットを指定するパターン文字列
– 空欄の場合は入力全体が整列対象になる
– Pattern Matching に従う (*0-15 等)

Align .align 🎛️

整列の対象範囲をどのプリミティブ単位で行うかの切替

項目 内部名 説明
All Primitives .all Group で絞った全プリミティブを 1 つの連鎖として整列
Groups of N Primitives .group N パラメータで指定した個数ごとのサブグループ単位に整列を反復

N 関連パラメータ 🔢

N .inc 🔢
– Groups of N Primitives モード時のサブグループ単位、または周期的にスキップする間隔
– 例: プリミティブが 0–5 の 6 個で N=2 のとき、2 個ずつのサブグループまたは 2 個おきの整列になる


Align Page 📁

Bias 関連パラメータ ⚖️

Bias .bias ⚖️
– 整列のどちら側を基準として固定するかを決定 (0 = Left を固定 / 1 = Right を固定)
– 補助入力なしの場合、Bias=0 だと連鎖の先頭プリミティブが基準、Bias=1 だと末尾が基準になる

UV 基準点関連パラメータ 📍

Left UV .leftuv 📍
– 「左」プリミティブ側のピボット位置 (UV 座標)
– 各プリミティブのこの UV 位置が Right UV にスナップされる
– サブ項目: U (leftuv1) / V (leftuv2)

  • U (leftuv1)
  • V (leftuv2)

Right UV .rightuv 📍
– 「右」プリミティブ側のピボット位置 (UV 座標)
– Left UV の点がこの位置に吸着するように整列が行われる
– サブ項目: U (rightuv1) / V (rightuv2)

  • U (rightuv1)
  • V (rightuv2)

Right UV End .rightuvend 📏
– 補助入力 (2nd input) 使用時、整列区間の終点となる UV 位置
– 左プリミティブは Right UV と Right UV End の間に均等分布される
– サブ項目: U (rightuvend1) / V (rightuvend2)

  • U (rightuvend1)
  • V (rightuvend2)

整列挙動関連パラメータ 🔧

Individual Alignment .individual 🧩
– 入力の各プリミティブを個別に整列する
– オフにすると先頭プリミティブのみが整列され、残りは先頭との相対位置関係を保ったまま移動 (左プリミティブ群の空間レイアウトが保持される)

Translate .dotrans ↔️
– オンの場合、整列時に Left UV の位置を Right UV の位置へ平行移動する
– オフにすると位置の整列をスキップ

Rotate .dorotate 🔄
– オンの場合、Left UV の接線方向を Right UV の接線方向に合わせるよう回転する
– オフにすると向きの整列をスキップし、位置のみ揃える


Transform Page 📁

Transform Order .xord 🎛️

整列後に適用される変換 (Translate / Rotate / Scale) の適用順

項目 内部名 説明
Scale Rotate Translate .srt Scale → Rotate → Translate の順 (TouchDesigner 標準のデフォルト)
Scale Translate Rotate .str Scale → Translate → Rotate の順
Rotate Scale Translate .rst Rotate → Scale → Translate の順
Rotate Translate Scale .rts Rotate → Translate → Scale の順
Translate Scale Rotate .tsr Translate → Scale → Rotate の順
Translate Rotate Scale .trs Translate → Rotate → Scale の順

Rotate Order .rord 🔄

整列後の回転を X / Y / Z 軸に適用する順序

項目 内部名 説明
Rx Ry Rz .xyz Rx → Ry → Rz の順 (デフォルト)
Rx Rz Ry .xzy Rx → Rz → Ry の順
Ry Rx Rz .yxz Ry → Rx → Rz の順
Ry Rz Rx .yzx Ry → Rz → Rx の順
Rz Rx Ry .zxy Rz → Rx → Ry の順
Rz Ry Rx .zyx Rz → Ry → Rx の順

post-alignment 変換関連パラメータ 🛠️

Translate .t ↔️
– 整列処理後にローカル XYZ 軸方向へ追加で平行移動する量
– サブ項目: X (tx) / Y (ty) / Z (tz)

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

Rotate .r 🔄
– 整列処理後にローカル XYZ 軸方向へ追加で回転する量 (度)
– サブ項目: X (rx) / Y (ry) / Z (rz)

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

Scale .s 📐
– 整列処理後にローカル XYZ 軸方向へ追加でスケーリングする量
– サブ項目: X (sx) / Y (sy) / Z (sz)

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

Pivot .p 📌
– 整列処理後の追加変換における基準点 (回転・スケーリングが行われる中心位置)
– サブ項目: X (px) / Y (py) / Z (pz)

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

実践アイデア 💡

Example 1: 複数プリミティブを 1 列に連鎖整列させる基本パターン 🟢

Sphere SOP (×N, Merge SOP で結合) → Align SOP (Align=All Primitives, Left UV=(0,0.5), Right UV=(1,0.5), Translate=ON) → Geometry COMP

複数の球を Merge SOP でまとめて Align SOP に流し、各プリミティブの左端 (U=0) を直前プリミティブの右端 (U=1) にスナップさせて 1 列に連鎖配置する最小構成。レイアウトの自動化に使えます。

  1. Sphere SOP を複数配置し Merge SOP で 1 本にまとめる
  2. Align SOP を後段に接続し AlignAll Primitives に設定
  3. Left UV(0, 0.5)Right UV(1, 0.5) に設定
  4. Translate をオンにして位置整列を有効化
  5. Geometry COMP に接続し、プリミティブが横方向に連鎖配置されることを確認

Example 2: 補助入力で基準ジオメトリにスナップ整列 🎯

Grid SOP (左/整列対象) → Align SOP (2nd input: Sphere SOP, Right UV End 指定) → Geometry COMP

Align SOP の 2 つめの入力に基準プリミティブ (例: Sphere SOP) を接続し、左側のプリミティブを基準ジオメトリの指定区間 (Right UV ~ Right UV End) に均等分布させる用途。基準形状へのスナップに向きます。

  1. 整列対象となる Grid SOP を 1st input に接続
  2. 基準となる Sphere SOP を 2nd input に接続
  3. Bias1 (Right 固定) に設定して基準側を不動に
  4. Right UVRight UV End で基準プリミティブ上の配置区間を指定
  5. TranslateRotate をオンにして位置・向きを基準にスナップ

Example 3: Groups of Nで2個ずつペア整列 🔢

複数 Add SOP → Merge SOP → Align SOP (Align=Groups of N Primitives, N=2) → Geometry COMP

Merge SOP で連結した複数プリミティブを Align SOP の Groups of N モードで 2 個ずつのペアに分け、ペアごとに整列を反復する例。連続配置ではなくグループ単位の整列が必要なときに有効です。

  1. Add SOP 等で複数プリミティブを生成し Merge SOP で結合
  2. Align SOP を後段に接続し AlignGroups of N Primitives に設定
  3. N2 に設定してペア単位の整列に切替
  4. Left UV / Right UV をペア内の基準点に合わせて設定
  5. 出力を確認し、2 個ずつ整列が反復適用されていることをチェック

関連オペレータ 🔗

類似機能OP 🔍

  • Transform SOP — 全プリミティブに対する一括 Translate / Rotate / Scale 変換
  • Sort SOP — プリミティブ・ポイントの順序を並べ替える (Align の前処理として有用)

組み合わせ推奨OP 🔄

  • Merge SOP — 整列対象となる複数プリミティブを 1 入力に束ねる前段
  • Copy SOP — Align で整列したプリミティブをテンプレート点に複製
  • Transform SOP — 整列後の全体オフセット・スケール調整

前処理・後処理SOP 🎯


Info CHOP情報 📊

Align 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 — このオペレータが最後にクックされたフレーム番号

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

よくある問題と解決策 🔧

❌ Problem: 整列後にプリミティブが想定外の位置に飛ぶ
✅ Solution:

  • Left UVRight UV が各プリミティブの正しいピボットを指しているか確認 (U/V は 0–1 範囲の正規化座標)
  • Bias の値で「どちらを固定するか」が逆になっていないか確認 (0=Left 固定 / 1=Right 固定)
  • Transform OrderRotate Order による post-alignment 変換が意図せず効いていないか Transform Page を確認

❌ Problem: 向きが揃わず位置だけ整列される
✅ Solution:

  • Rotate オプションがオンになっているか確認 — オフだと位置整列のみで方向は変えない
  • プリミティブの UV 接線方向がそもそも揃っているか (NURBS / Bezier プリミティブで UV 方向が想定と違うと回転結果が崩れる)
  • 前段に Sort SOP を入れてプリミティブ順序を整えてから Align に流す

❌ Problem: 補助入力 (2nd input) を接続しても基準として認識されない
✅ Solution:

  • Align SOP の 2 つめの入力ピンに正しく接続されているか確認 (1st input に流し込んでいないか)
  • Right UV End を空欄のままにしていないか確認 — 設定するとそこまでの区間に均等分布される
  • 基準入力側のプリミティブ数が 0 になっていないか確認 (空入力では整列基準が無く挙動が不定)

❌ Problem: Groups of N Primitives モードで端数プリミティブが残る
✅ Solution:

  • N の値と Group パターンで絞ったプリミティブ総数の整除関係を確認 (端数は無視される)
  • 前段に Merge SOP を置いて入力プリミティブ数を N の倍数に揃える
  • サブグループ単位を変えたい場合は AlignAll Primitives に戻して連鎖整列に切替

参考資料 📚

その他 🔗

公式リソース 📖

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