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

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

Copy SOP のジオメトリ複製機能を示す図

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

概要 📖 – ジオメトリの複製とテンプレート配置

Copy SOPは、ソースジオメトリを指定数だけ複製し、トランスフォームやテンプレート入力を使って配置する SOPです。Transform Cumulative や Stamp 機構と組み合わせることで、螺旋構造やパラメトリックな繰り返しパターンを構築できます。

主な用途 🎯

  • ソース SOP の複数コピーを生成 (Number of Copies で個数を指定)
  • Template 入力を使った各ポイントへの配置 (テンプレートの各ポイントにソースを置く)
  • 累積トランスフォーム (Transform Cumulative) で螺旋・スタック構造を生成
  • Look At でコピーを特定オブジェクトに向ける
  • Stamp 機構でコピーごとにパラメータを変化させプロシージャル生成

データフロー 🔄

入力 1: ソース SOP / 入力 2 (オプション): テンプレート SOP

処理: Number of Copies / Translate / Rotate / Scale をコピーごとに適用 (Cumulative オプションあり)

出力: 複製ジオメトリの SOP

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Copy Page 📁

Source / Template Group 🎯

Source Group .sourcegrp 🎯
– コピー元のプリミティブを絞り込むパターン
– Pattern Matching に従う

Template Group .templategrp 🎯
– テンプレート入力のプリミティブを絞り込むパターン
– Pattern Matching に従う

コピー数・対応関係関連パラメータ 🔢

Number of Copies .ncy 🔢
– 生成するコピー数
– テンプレート入力がある場合は各テンプレートポイントごとのコピー数

Primitives per Point .nprims 🔢
– テンプレート各ポイントからコピーするプリミティブ数

Rotate to Normal .nml 🧭
– テンプレート入力使用時、コピーをテンプレート表面の法線に向きを揃える
– up 属性がテンプレートにあれば法線と組み合わせて回転を決定

Transform Cumulative .cum 🔄
– 各コピーで前のコピーの位置からさらにトランスフォームを積み重ねる
– 螺旋・スタック構造を生成するときに使用

Transform Order .xord 🔄

コピーごとのトランスフォーム適用順序

項目 内部名 説明
Scale Rotate Translate .srt T * R * S * Source
Scale Translate Rotate .str R * T * S * Source
Rotate Scale Translate .rst T * S * R * Source
Rotate Translate Scale .rts S * T * R * Source
Translate Scale Rotate .tsr R * S * T * Source
Translate Rotate Scale .trs S * R * T * Source

Rotate Order .rord 🔄

Transform Order 内における X / Y / Z 軸の回転適用順序

項目 内部名 説明
XYZ .xyz X → Y → Z の順
XZY .xzy X → Z → Y の順
YXZ .yxz Y → X → Z の順
YZX .yzx Y → Z → X の順
ZXY .zxy Z → X → Y の順
ZYX .zyx Z → Y → X の順

Translate / Rotate / Scale / Pivot 📏

Translate .t 📍
– コピーごとの X / Y / Z 軸方向の移動量
– Transform Cumulative オン時は前のコピーから累積適用

Rotate .r 🔄
– コピーごとの X / Y / Z 軸方向の回転量

Scale .s 📐
– コピーごとの X / Y / Z 軸方向のスケール係数

Pivot .p 📌
– 回転・スケールの中心点 (Viewport 内では赤いドットで表示)

Uniform Scale .scale 📐
– X / Y / Z 軸すべてに同じスケール係数を適用

Normals Maintain Length .vlength 🧭
– Scale 時に法線などのベクトル属性の長さを保持

出力グループ関連パラメータ 🗂️

Create Output Groups .newg
– コピーごとに Group を作成し各プリミティブを分類

Copy Groups .copyg 🏷️
– 作成される Group の基本名を指定

Look At 関連パラメータ 👀

Look At .lookat 👀
– コピーされたジオメトリが向き続けるターゲット OP のパスを指定

Up Vector .upvector 🧭
– Look At 時の上方向ベクトルを指定
– 未指定だと Y 軸通過時にアニメーションが乱れる原因となる


Stamp Page 📁

Stamp Inputs .stamp 🏷️

コピーごとに値を変化させる Stamp 機構の有効化:

  • Stamp Inputs: stamp — オンにするとコピーごとに後続パラメータの値を変化させる Stamp 機構が有効になる

Stamp 変数定義パラメータ 🏷️

Copy .copy 🔢
– Stamp 変数のシーケンス (各 Copy ごとに定義)

Param .copy0param 🏷️
– 各 Stamp 変数のトークン名
fetchStamp() (Python の td モジュール) または param() (tscript) で参照

Value .copy0value 🔢
– 各 Stamp 変数の値


実践アイデア 💡

Example 1: 等間隔の球体を直線状に複製 🟢

Sphere SOP → Copy SOP (Number of Copies=10, Translate.X=1) → Geometry COMP → Render TOP

球体を X 軸方向に等間隔で 10 個複製する基本パターン。Transform Cumulative はオフのまま、各コピーは同じ Translate ステップで配置されます。

  1. Sphere SOP の出力を Copy SOP の入力 1 に接続
  2. Number of Copies を 10 に設定
  3. Translate の X に 1 を設定し X 軸方向にずらす
  4. Geometry COMP / Render TOP で 10 個の球体が並んでいることを確認

Example 2: テンプレート SOP の各ポイントにソースを配置 🌐

Source SOP + Template SOP → Copy SOP (Rotate to Normal=ON) → Geometry COMP

テンプレート (例: Sphere SOP の表面ポイント) の各ポイントにソースジオメトリを置く配置パターン。Rotate to Normal オンで各コピーがテンプレート表面の法線に向きを揃えます。

  1. Source SOP を Copy SOP の入力 1、Template SOP を入力 2 に接続
  2. Rotate to Normal をオンにしてコピーをテンプレート表面に沿わせる
  3. Number of Copies はテンプレートのポイント数に応じて自動的に決定される
  4. テンプレートが Sphere SOP の場合、ソースが球面上に均等に貼り付く

Example 3: Transform Cumulative で螺旋構造を生成 🌀

Source SOP → Copy SOP (Cumulative=ON, Translate.Y=0.1, Rotate.Y=30) → Geometry COMP

Transform Cumulative をオンにし、Y 軸方向の平行移動と Y 軸回転をコピーごとに累積させると螺旋階段のようなジオメトリが構築できます。

  1. Source SOP を Copy SOP に接続
  2. Transform Cumulative をオンに切り替え
  3. Translate.Y = 0.1、Rotate.Y = 30 度 を指定
  4. Number of Copies を 36 にして 1 周分の螺旋を完成させる

関連オペレータ 🔗

類似機能OP 🔍

  • Copy CHOP — チャンネルデータを複製する CHOP 系の同名 OP
  • Replicator COMP — DAT テーブルを元に COMP 群を複製する仕組み (SOP ではなく COMP レベルの複製)

組み合わせ推奨OP 🔄

  • Sphere SOP — Copy のテンプレート入力として球面上にコピーを配置
  • Geometry COMP — Copy SOP の出力をレンダリングパイプラインに投入
  • Merge SOP — 複製したジオメトリとベースシーンを統合
  • Render TOP — コピーされた大量ジオメトリを 3D レンダリング

前処理・後処理SOP 🎯


Info CHOP情報 📊

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

ジオメトリ統計 📐

  • num_points: num_points — コピー後のジオメトリに含まれる総ポイント数 (Source ポイント × Number of Copies)
  • num_prims: num_prims — コピー後のジオメトリに含まれる総プリミティブ数

クック統計 ⏱️

  • total_cooks: total_cooks — プロセス開始以降にこのオペレータがクックされた合計回数
  • cook_time: cook_time — 直近のクック所要時間 (ミリ秒)
  • cook_frame: cook_frame — このオペレータが最後にクックされたフレーム番号

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

よくある問題と解決策 🔧

❌ Problem: コピーが原点に重なって 1 つにしか見えない
✅ Solution:

  • Translate / Rotate / Scale のいずれかにコピーごとの差分を設定する
  • Transform Cumulative がオフだとコピーは全て同じ場所に置かれるので、累積配置にしたい場合はオンに切り替え
  • Number of Copies が 1 になっていないか確認

❌ Problem: テンプレート入力を接続したが各ポイントに置かれない
✅ Solution:

  • テンプレート SOP が入力 2 に正しく接続されているか確認
  • Rotate to Normal をオンにしてテンプレート表面の法線に揃える
  • Source Group / Template Group でパターンが過剰に絞られていないか確認

❌ Problem: Stamp 機構で値が変化しない
✅ Solution:

  • Stamp Inputs がオンになっているか確認
  • Param の名前と参照側 (fetchStamp() / tscript の param()) が一致しているか確認
  • Info CHOP でクック回数が変化しているかを Channel Viewer でチェック

参考資料 📚

公式リソース 📖

コミュニティ 💬

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