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

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

Shared Mem In COMP の共有メモリ読み込み機能を示す図

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

概要 📖 – 共有メモリ経由でコンポーネントを受け取る

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)
  1. プロセス A 側に Shared Mem Out COMP を配置し、Shared Mem Name に任意の識別名を設定
  2. プロセス B 側に Shared Mem In COMP を配置し、A と完全に同じ Shared Mem Name を指定
  3. 両プロセスが起動した状態で書き込み側がクックされると、読み込み側の COMP に内容が反映
  4. 後段に Null CHOP 等の接続点を置いて受信確認

Example 2: 外部アプリケーションからのコンポーネント取り込み 🐍

External App (C++ / Python: shared memory write) → Shared Mem In COMP → 内部処理
  1. 外部アプリケーション側で OS の共有メモリ API を使って TouchDesigner 仕様に合致するメモリブロックを作成
  2. Shared Mem In COMP の Shared Mem Name を外部アプリ側と同じ名前に設定
  3. 外部アプリが書き込みを開始すると COMP 内容として取り込まれる
  4. Container COMP や Base COMP 内に配置して UI / 演出のサブネットワークとして利用

Example 3: 分散レンダリング構成での状態同期 🌐

コントロールノード (Shared Mem Out COMP) → 共有メモリ → 複数レンダーノード (Shared Mem In COMP)
  1. コントロールノード側で Shared Mem Out COMP に共有したいコンポーネントを接続
  2. 各レンダーノードに Shared Mem In COMP を配置し共通の Shared Mem Name を指定
  3. コントロールノードの状態変化が共有メモリ経由で全レンダーノードに即時反映
  4. ネットワーク経由の OSC / TCP より低レイテンシで状態同期が可能

関連オペレータ 🔗

類似機能OP 🔍

組み合わせ推奨OP 🔄

  • Base COMP — 受信したコンポーネントを格納するベースコンテナとして併用
  • Container COMP — 受信内容を UI パネルとして表示するコンテナ
  • Null CHOP — 受信したコンポーネント内のチャンネル接続点

前処理・後処理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 を挟んで値の到達を可視化

参考資料 📚

その他 🔗

公式リソース 📖

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