Shared Mem Out COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

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

Shared Mem Out COMP の機能を示す図

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

概要 📖 – プロセス間でトランスフォームを共有するシェアードメモリ送信

Shared Mem Out COMPは、TouchDesigner のプロセス間で COMP のトランスフォームデータを共有メモリブロック経由で送信する COMPです。受信側で Shared Mem In COMP を同じ Shared Mem Name で設定するとデータが取り出せます。Educational / Commercial / Pro エディションで利用可能で、低遅延な同一マシン内 IPC に向きます。

主な用途 🎯

  • 別プロセスの TouchDesigner へトランスフォームデータを共有メモリ経由で送信
  • マルチプロセス分散レンダリングでカメラ・オブジェクト位置を送信側プロセスから配信
  • 送信側プロセス受信側プロセスShared Mem In COMP とペアで構築する低遅延 IPC
  • Shared Mem Name による名前付きメモリブロックで複数チャネルを並行送信
  • Active パラメータで送信のオン / オフを動的に切替

データフロー 🔄

送信側プロセス: 親 COMP のトランスフォーム

Shared Mem Out COMP (Active=オン, Shared Mem Name=指定)

共有メモリブロック (OS 上)

受信側プロセス: Shared Mem In COMP (同名指定) でリード

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Setup Page 📁

Active .active 🔌

共有メモリ書込みのオン / オフ:

  • Active: active — オンの場合、毎フレーム共有メモリブロックへ書込みを行う。オフの場合は cook 停止で書込みも停止

Shared Mem Name .name 🏷️

共有メモリブロックの識別名:

  • Shared Mem Name: name — 書込み先の共有メモリブロック名。受信側の Shared Mem In COMP でも同じ名前を指定することでデータを受け取れる

Common Page 🔧

Parent Shortcut .parentshortcut 🔗

コンポーネント内部からこの COMP へのパスとして使えるショートカット名:

  • Parent Shortcut: コンポーネント内部の任意の場所からこの COMP を参照する際のショートカット名 (parent.<name> 形式で利用可能)

Global OP Shortcut .opshortcut 🌐

プロジェクト全体からこの COMP を参照するグローバル名:

  • Global OP Shortcut: プロジェクト内のあらゆる場所からこの COMP へのパスとして使えるグローバル名 (op.<name> 形式で利用可能)

Internal OP .iop 📎

Internal OP シーケンス (コンポーネント内部 OP への名前付き参照):

  • Shortcut: iop0shortcut — コンポーネント内部の OP に対するショートカット名
  • OP: iop0op — このコンポーネント内部の対象 OP へのパス

Node View .nodeview 👁️

ノードビューア (Network エディタ上のサムネイル) に表示する内容を決定

項目 内部名 説明
Default Viewer .default コンポーネントタイプ標準のビューアを表示
Operator Viewer .opviewer 指定した任意 OP のノードビューアを表示

Operator Viewer .opviewer 🖼️

Operator Viewer モード時に表示する対象 OP:

  • Operator Viewer パス: Node View が opviewer モードのとき、そのビューア内容として表示する OP のパス

Cloning .cloning 🧬

マスター COMP の内容を複製する Cloning 設定:

  • Enable Cloning: enablecloning — Clone Master の内容を継続的に複製するかを切替
  • Enable Cloning Pulse: enablecloningpulse — その瞬間だけ Clone Master の内容を瞬時に複製
  • Clone Master: clone — 複製元となるマスターコンポーネントへのパス

Load on Demand .loadondemand

必要時のみメモリにロードする遅延ロード設定:

  • Load on Demand: オンの場合、このコンポーネントは実際に必要となるまでメモリにロードされない (起動時間・メモリ消費の最適化)

External .tox .externaltox 💾

外部 .tox ファイルとの連携設定:

  • Enable External .tox: enableexternaltox — 起動時に外部 .tox ファイルからロード
  • Enable External .tox Pulse: enableexternaltoxpulse — 外部 .tox ファイルから即時リロード
  • External .tox Path: externaltox — ディスク上の .tox ファイルへのパス
  • Reload Custom Parameters: reloadcustom — コンポーネントのカスタムパラメータ値を再読み込み
  • Reload Built-In Parameters: reloadbuiltin — コンポーネントの組み込みパラメータ値を再読み込み
  • Save Backup of External: savebackup — .toe ファイル内に外部 .tox のバックアップコピーを保存
  • Sub-Component to Load: subcompname — .tox 内部の特定 COMP のみを取り出してロード

Relative File Path Behavior .relpath 📁

このコンポーネント内部での相対ファイルパスの解決基準

項目 内部名 説明
Use Parent’s Behavior .inherit 親コンポーネントの設定を継承
Relative to Project File (.toe) .project .toe プロジェクトファイルからの相対パスとして解決
Relative to External COMP File (.tox) .externaltox 外部 .tox ファイルからの相対パスとして解決

Parameter Color Space .parmcolorspace 🎨

このコンポーネント内の色パラメータをどの色空間として解釈するか

項目 内部名 説明
sRGB .srgb 標準的な sRGB ガンマ空間
sRGB – Linear .srgblinear sRGB プライマリでガンマ線形 (1.0)
Rec.601 (NTSC) .rec601ntsc Rec.601 NTSC 規格の色空間
Rec.709 .rec709 HDTV 用 Rec.709 色空間
Rec.2020 .rec2020 UHDTV / HDR 向け Rec.2020 広色域
DCI-P3 .dcip3 デジタルシネマ DCI-P3 色空間
DCI-P3 (D60) .dcip3d60 D60 白点 DCI-P3
Display-P3 (D65) .displayp3d65 D65 白点 Display-P3 (Apple ディスプレイ等)
ACES2065-1 .aces2065-1 ACES アーカイブ用色空間 (AP0 プライマリ)
ACEScg .acescg ACES CG 作業用色空間 (AP1 プライマリ)
Passthrough .passthrough 色変換を行わず値をそのまま扱う

Parameter Reference White .parmreferencewhite

色パラメータの基準白色の扱い

項目 内部名 説明
Default For Color Space .default 選択した色空間のデフォルト基準白を使用
Use Parent Panel .useparent 親パネルの基準白設定を継承
Standard (SDR) .sdr 標準ダイナミックレンジ (SDR) 基準白
High (HDR) .hdr ハイダイナミックレンジ (HDR) 基準白
UI .ui UI 表示用の基準白

実践アイデア 💡

Example 1: 送信プロセスから受信プロセスへトランスフォーム共有 🔁

送信側 .toe: 親 COMP → Shared Mem Out COMP (Shared Mem Name=cam_xform) → 共有メモリ → 受信側 .toe: Shared Mem In COMP (Shared Mem Name=cam_xform) → Camera COMP の Translate/Rotate

1 台のマシンで 2 つの TouchDesigner プロセスを起動し、送信側で計算したカメラのトランスフォームを受信側プロセスのレンダリングカメラに反映する基本構成。Shared Mem Out COMPShared Mem In COMP を同じ Shared Mem Name で繋ぐだけで OS の共有メモリ経由の低遅延 IPC が成立する。

  1. 送信側プロジェクトでカメラ制御ロジックを Base COMP にまとめ、その配下に Shared Mem Out COMP を配置
  2. Shared Mem Out COMP の Shared Mem Name パラメータに識別名 (例: cam_xform) を入力し Active をオン
  3. 受信側プロジェクトを別プロセスとして起動し、Shared Mem In COMP を配置
  4. 受信側 Shared Mem In COMP の Shared Mem Name に送信側と同じ cam_xform を入力
  5. 受信側で取得したトランスフォームを Camera COMP の Translate / Rotate に Export

Example 2: 重い処理プロセスと描画プロセスの分離 ⚡

Process A (機械学習推論 / 物理シミュレーション) → Shared Mem Out COMP (Shared Mem Name=sim_state) → Process B (レンダリング専念) → Shared Mem In COMP → Geometry COMP に反映

CPU 負荷の高い計算 (機械学習推論・物理シミュレーション等) を 1 つのプロセスに隔離し、もう 1 つのプロセスをレンダリング専念にすることで描画フレームレートを安定させる構成。Shared Mem Out COMP で計算結果のトランスフォームを共有メモリへ書込み、描画プロセスがそれを受信して 3D オブジェクトに反映する。

  1. 計算プロセスで Bullet Solver COMP / Actor COMP 等を Base COMP に格納し負荷を局所化
  2. 計算結果を反映したい COMP の配下に Shared Mem Out COMP を配置し Shared Mem Namesim_state 等に設定
  3. 描画プロセス側で Shared Mem In COMP を配置し同じ名前を指定
  4. 描画プロセス側の Geometry COMP の Translate / Rotate に受信したトランスフォームを Export
  5. 計算プロセスがブロックされても描画プロセスは前回値で継続するため、フレームレート不安定を抑制

Example 3: マルチディスプレイ展示で複数プロセスを同期 🖥️

マスタープロセス (シーン制御) → Shared Mem Out COMP (Shared Mem Name=master_xform) → 共有メモリ → 4 つの描画プロセス → 各 Shared Mem In COMP → 各ディスプレイへ Window COMP

4 面マルチディスプレイのインスタレーションで、マスタープロセス 1 個 + 描画プロセス 4 個という構成を取り、シーン全体のトランスフォームを Shared Mem Out COMP で配信、各描画プロセスが同じ Shared Mem Name で受信して同期描画する構成。同一マシン内のプロセス間で完結するため通信遅延が小さく、Window COMP の Multi-GPU 構成と相性が良い。

  1. マスタープロセスでシーン全体の制御 COMP を構築し、配下に Shared Mem Out COMP を配置
  2. Shared Mem Out COMP の Shared Mem Namemaster_xform 等に設定
  3. 描画プロセス 4 個を別 .toe ファイルとして起動し、それぞれ Shared Mem In COMP で master_xform を受信
  4. 各描画プロセスは自分の担当ディスプレイの視錐台を持ち、受信したトランスフォームをカメラに適用
  5. 各描画プロセスの Window COMP で対応する物理ディスプレイへ出力

関連オペレータ 🔗

類似機能OP 🔍

  • Shared Mem In COMP — 本 COMP のペアとなる受信側 COMP。同じ Shared Mem Name を指定して共有メモリからトランスフォームを読み取る

組み合わせ推奨OP 🔄

  • Shared Mem In COMP — 受信側 COMP として常にペアで使用
  • Shared Mem In CHOP — CHOP データを別プロセスから受信する別ファミリの IPC OP
  • Shared Mem In TOP — テクスチャデータをプロセス間共有する別ファミリの IPC OP (Commercial / Pro のみ)
  • Touch In CHOP — TCP/UDP 経由のネットワーク IPC。マシン跨ぎが必要な場合の代替

前処理・後処理COMP 🎯


Info COMP情報 📊

Shared Mem Out COMP は Info CHOP / Info DAT による詳細情報取得に対応しています。

COMP 固有情報 📦

  • num_children: コンポーネント内部の子 OP の総数
  • num_dats: 内部 DAT の数
  • num_chops: 内部 CHOP の数
  • num_tops: 内部 TOP の数
  • num_sops: 内部 SOP の数

汎用オペレータ情報 🔄

  • total_cooks: プロセス開始からのクック回数
  • cook_time: 最後のクック時間 (ミリ秒)
  • cook_frame: 最後にクックされたフレーム番号
  • warnings: 警告数
  • errors: エラー数
  • cook_abs_frame: 絶対時間基準でのクックフレーム番号
  • cook_start_time: オペレータがクックを開始した時刻
  • cook_end_time: クックが完了した時刻
  • cooked_this_frame: 現在のフレームでクックされた場合は 1

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

よくある問題と解決策 🔧

❌ Problem: 受信側 Shared Mem In COMP でデータが取得できない
✅ Solution:

  • 送信側と受信側で Shared Mem Name が完全一致しているか確認 (大文字小文字も区別)
  • 送信側の Active パラメータがオンになっているか確認 (オフだと cook が止まり書込みも停止)
  • 送信側と受信側のプロセスが同じマシン上で動作しているか確認 (共有メモリは OS プロセス間でのみ機能、マシン跨ぎは不可)

❌ Problem: Educational / Commercial / Pro エディションかどうか分からない
✅ Solution:

  • 起動時のスプラッシュ画面または Help → About でエディションを確認
  • Shared Mem Out COMP は Educational / Commercial / Pro で使用可能、Non-Commercial では利用不可
  • テクスチャを共有する Shared Mem In TOP は Commercial / Pro のみで制限が厳しい点に注意

❌ Problem: 送信側プロセスを再起動するとリンクが切れる
✅ Solution:

  • 受信側 Shared Mem In COMP の Active を一度オフ → オンでリンクを再確立
  • 送信側プロセスが先に起動するように起動順を決める (送信側がメモリブロックを作成し、受信側がそこへアタッチする想定)
  • 起動順を制御できない場合は、受信側で定期的に Shared Mem In COMP を pulse して再アタッチを試行

❌ Problem: マシン跨ぎ (LAN 経由) でデータを送りたい
✅ Solution:

  • Shared Mem Out COMP は同一マシン内 IPC 専用のため、LAN 経由には使えない
  • ネットワーク経由の伝送には Touch Out CHOP / OSC Out CHOP / TCP/IP DAT を使用
  • テクスチャをネットワーク跨ぎで送るには NDI Out TOPTouch Out TOP を検討

参考資料 📚

その他 🔗

公式リソース 📖

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