
概要 📖 – VR機器の形状を読込む
OpenVR SOPは、OpenVRドライバが提供するVR機器のモデル形状を読込み、ジオメトリとして出力するSOPです。出力する機器の種類は Model パラメータで切り替え、コントローラーやヘッドセットなどの3D形状を仮想空間内に再現します。
主な用途 🎯
- VRコントローラーの3Dモデルをシーンに表示
- ヘッドセット(HMD)の形状を仮想空間内に描画
- ベースステーション(基地局)の位置を立体で可視化
- トラッカー機器の形状をリアルタイムに取込み
- VR機器形状とトラッキング情報を組み合わせた演出
データフロー 🔄
入力: OpenVRドライバが提供する機器モデル
↓
モデル選択(Model パラメータ)
↓
出力: VR機器のジオメトリ(点・面で構成された3D形状)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Page 📁
モデル選択 .model 🎮
出力するVR機器の3Dモデルを選択するメニューパラメータ
Model .model 🎮
– Model (モデル) — このノードが出力する3Dモデルを選択します。
– 選択肢は OpenVR ドライバが提供する機器に応じて自動で埋まります(コントローラー・ヘッドセット・ベースステーション・トラッカー等)。
– 接続中の機器構成により候補が変化するため、固定の一覧ではありません。
実践アイデア 💡
Example 1: コントローラー形状の表示 🎮
OpenVR SOP (Model: Controller) → Geometry COMP → Render TOP
OpenVR SOP の Model でコントローラーを選び、その3D形状を Geometry COMP に取込んで仮想空間内に表示する基本フロー。実機の見た目をそのままシーンに再現できます。
- OpenVR SOP を配置し Model でコントローラーを選択
- 出力を Geometry COMP に接続してシーン内に配置
- Camera COMP と Render TOP でVR機器の形状をレンダリング
Example 2: 機器位置の可視化 🛰️
OpenVR CHOP (tracking) → OpenVR SOP (Model) → Geometry COMP
OpenVR CHOP で取得したベースステーションやトラッカーの座標と、OpenVR SOP の形状を組み合わせ、機器がどこにあるかを立体的に可視化する用途。
- OpenVR SOP で対象機器のモデルを取込み
- OpenVR CHOP のトラッキング座標を Geometry COMP の位置に反映
- 実機の動きに追従して形状がシーン内を移動
Example 3: ヘッドセット形状の演出 🥽
OpenVR SOP (Model: HMD) → Transform SOP → Geometry COMP
ヘッドセット(HMD)の形状を OpenVR SOP で読込み、Transform SOP で位置や向きを調整してから演出シーンに組込むフロー。
- OpenVR SOP の Model でヘッドセットを選択
- Transform SOP で表示位置・スケールを調整
- Geometry COMP に渡して演出シーンに表示
関連オペレータ 🔗
類似機能OP 🔍
- OpenVR CHOP — VR機器の位置・回転などトラッキング数値を取得
- OpenVR TOP — VR向けの映像をヘッドセットに出力
組み合わせ推奨OP 🔄
- Geometry COMP — 読込んだ機器形状を3Dシーンに配置して表示
- Camera COMP — VR機器形状を任意視点でレンダリングする視点設定
- Render TOP — シーン内の機器形状を映像として描画
前処理・後処理SOP 🎯
Info情報 📊
OpenVR SOP は Info CHOP / Info DAT による出力ジオメトリの詳細情報取得に対応しています。
ジオメトリ統計 📐
num_points: この SOP に含まれるポイント数num_prims: この SOP に含まれるプリミティブ数num_particles: この SOP に含まれるパーティクル数last_cook_time: 直近のクックにかかった時間(ミリ秒)total_cooks: ノードがクックされた累計回数
GPU 転送タイミング 🎮
last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)
汎用オペレータ情報 🔄
total_cooks: プロセス開始以降にこのオペレータがクックされた合計回数cook_time: 直近のクック所要時間 (ミリ秒)cook_frame: このオペレータが最後にクックされたフレーム番号warnings: このオペレータの警告数errors: このオペレータのエラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: モデルが表示されない
✅ Solution:
- OpenVR ドライバ(SteamVR 等)が起動し、機器が認識されているか確認
Modelパラメータで有効な機器が選択されているか確認- 出力を Geometry COMP に接続してシーン内に配置しているか確認
❌ Problem: モデルの選択肢が空になる
✅ Solution:
- VR機器が物理的に接続・電源オンになっているか確認
- OpenVR ランタイムを再起動して機器を再認識させる
- TouchDesigner を再起動してドライバ接続を初期化
❌ Problem: 形状の位置が実機と合わない
✅ Solution:
- OpenVR CHOP のトラッキング座標を位置へ反映しているか確認
- 後段の Transform SOP でスケール・原点を調整
- VR空間とシーンの座標系(単位・上方向)が一致しているか確認
参考資料 📚
その他 🔗
- TouchDesigner Wiki — SOP 概要
- TouchDesigner Wiki — Category:SOPs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

