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

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

Oculus Rift SOP のコントローラモデル読み込み機能を示す図

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

概要 📖 – コントローラの3D形状を読込

Oculus Rift SOPは、Oculus Rift のコントローラモデルを 3D ジオメトリとして読み込む SOPです。読み込むモデルは左右どちらのコントローラかを選べ、取り込んだ形状はトラッキング座標に合わせて配置することで、VR シーン内に手元のコントローラを表示できます。

主な用途 🎯

  • Oculus Touch コントローラの 3D モデルをジオメトリとしてシーンに読み込み、VR 空間に手元の形状を表示する
  • 左右どちらのコントローラ形状を読み込むかを選び、両手分のモデルを別々に用意する
  • 読み込んだコントローラ形状をトラッキング座標に合わせて配置し、現実の手の動きと一致させる
  • コントローラモデルにマテリアルを割り当て、VR シーンの見た目に合わせた質感で描画する
  • VR チュートリアルや操作ガイドの画面内に、実機と同じコントローラ形状を提示する

データフロー 🔄

入力: Oculus Runtime (コントローラのモデルデータ)

モデル選択 (左 / 右コントローラの切替)

出力: コントローラの 3D ジオメトリ

Tips

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

まる。
まる。

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


パラメータ解説 ⚙️

Page 📁

モデル選択 .model 🎮

Model (読み込むモデル) — どのコントローラの 3D 形状を読み込むかを選択するメニューパラメータ

項目 内部名 説明
Left Controller .leftcontroller 左手側コントローラの 3D モデルを読み込む
Right Controller .rightcontroller 右手側コントローラの 3D モデルを読み込む

実践アイデア 💡

Example 1: 両手のコントローラを表示 🎮

Oculus Rift SOP (Model=Left) / Oculus Rift SOP (Model=Right) → Geometry COMP → Render TOP

左右それぞれの Oculus Rift SOP を用意し、片方を Left Controller、もう片方を Right Controller に設定して両手分のコントローラ形状を読み込む基本フローです。各モデルを Geometry COMP に入れ、Render TOP でレンダリングすれば、VR シーン内に両手のコントローラを描画できます。

  1. Oculus Rift SOP を 2 つ配置し、片方の ModelLeft Controller に設定
  2. もう片方の ModelRight Controller に設定して両手分の形状を用意
  3. それぞれを Geometry COMP に入れ、Camera COMP と Light COMP で視点・照明を設定
  4. Render TOP に接続して両手のコントローラモデルをレンダリングして確認

Example 2: トラッキングと位置を同期 🤝

Oculus Rift CHOP (Controller) → Transform SOP ← Oculus Rift SOP (Model)

読み込んだコントローラ形状を、実機の動きに合わせて動かす設定例です。Oculus Rift CHOP から取得したコントローラの位置・回転を Transform SOP に渡し、Oculus Rift SOP のモデルへ反映すると、現実の手の動きとモデルの位置が一致します。

  • Oculus Rift SOP で表示したいコントローラの Model を選択
  • Oculus Rift CHOP でそのコントローラの位置・回転をチャンネルとして取得
  • Transform SOP にモデルを通し、取得した座標値を位置・回転に反映
  • Geometry COMP に入れてレンダリングし、手の動きと形状が同期するか確認

Example 3: 材質を付けて描画 ✨

Oculus Rift SOP (Model) → Geometry COMP (MAT 割り当て) → Render TOP

読み込んだコントローラ形状に質感を与える設定例です。Geometry COMP 上で MAT を割り当てると、コントローラモデルに色や反射などの質感が付き、VR シーンの世界観に馴染ませて描画できます。後段で Transform SOP を使えば表示サイズや向きも整えられます。

  • Oculus Rift SOP でコントローラの Model を読み込む
  • Transform SOP でモデルの向き・スケールをシーンに合わせて調整
  • Geometry COMP に入れ、見た目に合わせた MAT を割り当て
  • Render TOP でレンダリングし、質感の付いたコントローラを確認

関連オペレータ 🔗

類似機能OP 🔍

  • Oculus Rift CHOP — 同じ Oculus Rift デバイスの姿勢・コントローラ入力を CHOP チャンネルとして取得 (SOP はモデル形状、CHOP は数値)
  • Oculus Rift TOP — 同じ Oculus Rift デバイスの映像を HMD へ出力する別の Oculus 系オペレータ
  • OpenVR SOP — OpenVR 対応デバイスのトラッキングジオメトリを取得する別のデバイス系 SOP
  • Kinect SOP — 深度センサーから現実空間の立体を取り込む別のデバイス系 SOP

組み合わせ推奨OP 🔄

  • Oculus Rift CHOP — コントローラの位置・回転を取得し、読み込んだモデルをトラッキングに同期させる
  • Geometry COMP — 読み込んだコントローラ形状をシーンに配置してレンダリング対象にする
  • Render TOP — コントローラモデルを VR シーンの一部として画像にレンダリング
  • Transform SOP — 読み込んだモデルの位置・回転・スケールをシーンに合わせて調整

前処理・後処理SOP 🎯


Info CHOP情報 📊

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

ジオメトリ統計 📐

  • num_points: この SOP に含まれるポイント数
  • num_prims: この SOP に含まれるプリミティブ数
  • num_particles: この SOP に含まれるパーティクル数

GPU 転送タイミング 🎮

  • last_vbo_update_time: 別スレッドで SOP の CPU データを GPU 上のジオメトリデータに更新するのにかかった時間 (フレーム時間外)
  • last_meta_vbo_update_time: 別スレッドで metaball や NURBS のようなメタサーフェスジオメトリデータを GPU に更新するのにかかった時間 (フレーム時間外)

汎用オペレータ情報 🔄

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

クック統計 ⏱️

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

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

よくある問題と解決策 🔧

❌ Problem: コントローラの形状が表示されない
✅ Solution:

  • Oculus Runtime が起動し、HMD・コントローラが PC に正しく接続・認識されているか確認
  • Model で読み込むコントローラ (左 / 右) が選択されているか確認
  • Geometry COMP に入れて Camera COMP と Light COMP で視点・照明を設定しているか確認

❌ Problem: モデルの位置が手の動きと合わない
✅ Solution:

  • Oculus Rift CHOP からコントローラの位置・回転を取得して反映する
  • 後段の Transform SOP でトラッキング座標をモデルに正しく適用する
  • 左右の Model 設定と、反映するトラッキング側の左右が一致しているか確認する

❌ Problem: モデルに陰影や質感が付かない
✅ Solution:

  • Geometry COMP に MAT を割り当て、ライティング用の Light COMP を配置する
  • 後段の Null SOP で出力を整理してからマテリアル設定を確認する
  • シーンに光源がない場合は陰影が出ないため、Light COMP の有無と向きを確認する

参考資料 📚

その他 🔗

公式リソース 📖

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