hz-unity-passthrough-camera-access について
hz-unity-passthrough-camera-accessは、UnityアプリでQuest 3およびQuest 3Sの前面RGBカメラを使うための開発者向けガイドです。Camera2の利用と、画像をコンピュータービジョンや機械学習の処理に活用する方法を扱います。
主な機能
- 01Quest 3/Quest 3SのRGBカメラ案内
- 02Android Camera2の画像取得とメタデータ
- 03複数カメラへのアクセスと制御
- 04ワールド空間への投影と検出のリファレンス
活用シーン
- 01インタラクティブ体験での物体検出
- 02カメラを使ったツアーやガイドの構築
- 03環境の変化によるタスク実行状況の確認
- 04ML検出結果のワールド空間への配置
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ meta-quest/ agentic-tools --skill hz-unity-passthrough-camera-accessインストール後、Claude Code で/hz-unity-passthrough-camera-accessを入力して読み込まれたか確認します。
同梱ファイルreferences/detection-bounding-boxes.mdreferences/principal-point-offset.md
詳細
Meta Quest パススルーカメラアクセス(PCA)
Android Camera2 APIを基盤とするパススルーカメラアクセスでは、コンピュータービジョンと機械学習をサポートするために、Quest 3 および Quest 3S の前面 RGB カメラにアクセスできます。この API は、ユーザーの視点(UI を含む)からのキャストをサポートするメディアプロジェクション APIとは異なります。ユーザーが見ているものを表現することが目的の場合は、メディアプロジェクション API を使用してください。Scene API が提供する範囲を超えてユーザーの環境や行動の理解を深める、アプリケーション固有のコンピュータービジョン機能を追加するには、パススルーカメラ API を使用してください。
ユースケース
この API は、前面 RGB カメラを使って遮るもののない視界を提供し、ML/CV パイプラインに統合できます。一般的なユースケースは次のとおりです。
- アプリケーションが操作できる特定のオブジェクトを識別する、専用にトレーニングされた ML/CV モデル(例:ダンベルなどのフィットネス器具、オーディオミキサーなどの産業用機器)。
- エクスペリエンス向けの ML/CV アシスタントやガイド。たとえば、美術館のツアーでは、絵画を見ると、デバイス外の LLM を使ってその歴史、作者、様式に関する情報を表示できます。
- トレーニングや特定の関心分野に特化したアプリケーションへのフィードバック。ユーザーにタスクの実行を依頼した後、アプリが環境の変化を解釈して、正しく実行できたかを検出できます(例:ホワイトボードへの書き込み)。
- デザインの改善。照明を解釈したり、カメラ画像を使ってテクスチャを変更したりすることで、よりリアルなデザイン効果を実現できます。
一般的な前提条件
- Horizon OS v74 以降。
- Quest 3 または Quest 3S(Quest Pro 以前のデバイスはサポートされていません)。
android.permission.CAMERAまたはhorizonos.permission.HEADSET_CAMERAのいずれかの権限。CAMERAはパススルーカメラとアバターカメラの両方へのアクセスを許可し、HEADSET_CAMERAはパススルーカメラへのアクセスのみを許可します。- パススルーカメラ API にアクセスするには、パススルー機能を有効にする必要があります。
Android Camera2 を使用したパススルーカメラ
Meta VR デバイスのカメラアクセスは、Horizon OS 上でAndroid Camera2 APIを基盤として実装されています。Horizon OS v74 以降、Camera2 とその Unity 拡張機能を Meta VR ヘッドセットで利用できます(Horizon OS v83 では Unreal 拡張機能が追加されました)。Quest 3 および Quest 3S では、開発者は HMD 前面にある左右のカメラにアクセスできます。
Android Camera2 API では、次の機能を利用できます。
- 画像のキャプチャ: 高度な処理のためにカメラデータをキャプチャします。
- カメラのメタデータ: API に問い合わせて、ハードウェアの機能や構成情報を取得します。
- マルチカメラのサポート: 複数のカメラにアクセスして制御します。
既知の問題
- OS を新規に書き込んだ後、v74 でカメラ API を使用するアプリを初めてインストールすると、RGB チャンネルが反転して色が歪む場合があります(例:肌の色が青みがかって見える)。デバイスを再起動すると解消されます。
- パススルーカメラ API は XR Simulator ではサポートされていません。
- パススルーカメラのテクスチャは、ユーザーに見える範囲より狭い長方形の領域(1280×960)をキャプチャします。v83 で追加された 1280×1280 の解像度では垂直方向の視野が広がりますが、パススルーで見える範囲全体をカバーすることはできません。
- 親が Teen および Youth アカウントに適用した制限(例:パススルーカメラ API へのアクセス)は、Meta Quest Developer Hub を通じてアプリケーションをインストールした場合、適用されません。
ベストプラクティス
- ユーザーのプライバシーを確保してください。 カメラ画像データはデバイスユーザーデータと見なされ、Developer Data Use Policy の対象です。このポリシーを完全に遵守してください。
- デバイス上で負荷の高い処理を避けてください。 カメラ画像をデバイス上で処理すると魅力的なユースケースを実現できますが、高いフレームレートを維持し、快適に利用できるようにしてください。
- デバイス上でフィードを検証してください。 デプロイ後、パイプラインの実行中に
metavr adb logcat --follow --tag Unityをストリーミングしてフレームが流れていることを確認し、統合する前にmetavr docs search "passthrough camera access Unity"で PCA API の変更を確認してください。この機能は頻繁に変更されます。
参考資料
PCA 画像をワールド空間に投影して配置するための、タスク別の詳しいガイダンスは references/ にあります。
- references/principal-point-offset.md —
光軸を平面の法線として使用し、カメラ画像をワールド空間の平面に正しく投影します(視錐台スライスクワッド、FOV ビジュアライザー、画像平面オーバーレイ)。
ViewportPointToRayの角の光線から非矩形のクワッドが生成される場合、カメラに合わせたクワッドが中心からずれる場合、または Quest 3 では正しく機能したのに、カメラの主点がオフセットされたデバイスで2 * d * tan(fov / 2)を使うとサイズが正しくならない場合に参照してください。 - references/detection-bounding-boxes.md —
ML モデルが検出した現実世界のオブジェクトの周囲に、正確な 3D バウンディングボックスを描画します。2D ML 検出結果(YOLO、SSD、DETR、カスタム CNN)をワールド空間に配置する場合、2D 検出結果からカメラに向いたビルボードクワッドを作成する場合、またはオブジェクトの位置特定のために
PassthroughCameraAccessとEnvironmentRaycastManagerを連携させる場合に参照してください。