
概要 📖 – 共有メモリ経由でコンポーネントを受け取る
Shared Mem In COMPは、名前付き共有メモリブロックからコンポーネントデータを読み込む COMPです。対となる Shared Mem Out COMP や外部アプリケーションが書き込んだメモリブロックを Shared Mem Name で参照し、ネットワークを経由せず同一マシン内でコンポーネントを受け渡しできます。
主な用途 🎯
- 名前付き共有メモリブロックからコンポーネントデータを受信
- 複数 TouchDesigner プロセス間でのコンポーネント受け渡し
- 外部アプリケーションが書き込んだ共有メモリの内容をコンポーネントとして取り込む
- 同一マシン内 IPC による低レイテンシなコンポーネント転送
- 分散構成でのレンダリングノード・UI ノード間の状態共有
データフロー 🔄
入力: 外部プロセスまたは Shared Mem Out COMP が書き込んだ共有メモリブロック
↓
Shared Mem Name で識別
↓
共有メモリ内容を読み込み
↓
出力: コンポーネントデータ (COMP として配置)
Tips
初心者の方は、以下日本語書籍も手元にあると安心です。
リンク
リンク

まる。
実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Setup Page 📋
Shared Mem Name .name 🏷️
共有メモリブロックの識別名:
- Shared Mem Name: 読み込み元となる共有メモリブロックの識別名。書き込み側 (Shared Mem Out COMP または外部アプリケーション) と完全に同じ名前を指定する必要があります
実践アイデア 💡
Example 1: 複数 TouchDesigner プロセス間でのコンポーネント共有 🔗
TouchDesigner A (Shared Mem Out COMP) → 共有メモリ → TouchDesigner B (Shared Mem In COMP)
- プロセス A 側に Shared Mem Out COMP を配置し、Shared Mem Name に任意の識別名を設定
- プロセス B 側に Shared Mem In COMP を配置し、A と完全に同じ Shared Mem Name を指定
- 両プロセスが起動した状態で書き込み側がクックされると、読み込み側の COMP に内容が反映
- 後段に Null CHOP 等の接続点を置いて受信確認
Example 2: 外部アプリケーションからのコンポーネント取り込み 🐍
External App (C++ / Python: shared memory write) → Shared Mem In COMP → 内部処理
- 外部アプリケーション側で OS の共有メモリ API を使って TouchDesigner 仕様に合致するメモリブロックを作成
- Shared Mem In COMP の Shared Mem Name を外部アプリ側と同じ名前に設定
- 外部アプリが書き込みを開始すると COMP 内容として取り込まれる
- Container COMP や Base COMP 内に配置して UI / 演出のサブネットワークとして利用
Example 3: 分散レンダリング構成での状態同期 🌐
コントロールノード (Shared Mem Out COMP) → 共有メモリ → 複数レンダーノード (Shared Mem In COMP)
- コントロールノード側で Shared Mem Out COMP に共有したいコンポーネントを接続
- 各レンダーノードに Shared Mem In COMP を配置し共通の Shared Mem Name を指定
- コントロールノードの状態変化が共有メモリ経由で全レンダーノードに即時反映
- ネットワーク経由の OSC / TCP より低レイテンシで状態同期が可能
関連オペレータ 🔗
類似機能OP 🔍
- Shared Mem Out COMP — 対となる書き込み側 COMP
- Shared Mem In CHOP — チャンネルデータ版の共有メモリ読み込み
- Shared Mem In TOP — テクスチャ (画像) データ版の共有メモリ読み込み
組み合わせ推奨OP 🔄
- Base COMP — 受信したコンポーネントを格納するベースコンテナとして併用
- Container COMP — 受信内容を UI パネルとして表示するコンテナ
- Null CHOP — 受信したコンポーネント内のチャンネル接続点
前処理・後処理COMP 🎯
- 前処理: Shared Mem Out COMP、Base COMP
- 後処理: Base COMP、Container COMP
Info CHOP情報 📊
Shared Mem In COMPは Info CHOP による詳細情報取得に対応しています。
COMP 固有情報 📦
num_children: コンポーネント内部の子 OP の総数num_dats: 内部 DAT の数num_chops: 内部 CHOP の数num_tops: 内部 TOP の数num_sops: 内部 SOP の数
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: コンポーネントが受信できない / 空のままになる
✅ Solution:
- 書き込み側と読み込み側で
Shared Mem Nameが完全一致しているか確認 (大文字小文字含む) - 書き込み側プロセス (Shared Mem Out COMP または外部アプリ) が起動中で実際にクックされているか確認
- 両プロセスを同じ OS ユーザー権限で起動しているか確認 (権限差で共有メモリにアクセスできない場合あり)
❌ Problem: 外部アプリケーションとデータが共有できない
✅ Solution:
- 外部アプリ側のメモリレイアウト (ヘッダ・データフォーマット) が TouchDesigner 仕様と一致しているか公式 docs で確認
- OS の共有メモリ API (POSIX shm / Windows File Mapping) を正しく使っているか確認
- ファイアウォール / セキュリティソフトが共有メモリアクセスをブロックしていないか確認
❌ Problem: 受信した内容が古いまま更新されない
✅ Solution:
- 書き込み側がクック対象のネットワーク内にあり、実際にクックされているか Performance Monitor で確認
- Shared Mem Name のタイプミス・全角半角混在がないか再確認
- 後段に Null CHOP を挟んで値の到達を可視化
参考資料 📚
その他 🔗
- TouchDesigner Wiki — COMP 概要
- TouchDesigner Wiki — Category:COMPs
- TouchDesigner Wiki — Category:Components
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

