カメラへのアクセス
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でCamera Accessにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)

機能の設定

カメラフレームへのアクセス機能には4つの設定があります。
- Direct Memory Access Conversion
- CPUによるフレーム変換の前に、アプリケーションがカメラメモリへのアクセス方法を決定するために使用します。デバイスによっては性能が向上する場合もありますが、性能が低下する場合もあります。
- CPU Frame Cache Size
- XRCpuImage.ConvertAsyncのキャッシュフレームのサイズで、非同期変換要求をキューに入れることができる数を定義します。上限に達すると、古いリクエストは期限切れになります。
- High Priority Async Conversion
- 変換スレッドを優先度の高いスレッドとして扱うかどうかを決定するために、アプリケーションによって使用されます。
- Cache Frame Before Async Conversion
- CPUのキャッシュフレームに依存することなく、要求時にフレームをキャッシュすることで非同期変換を保証します。Direct Memory Access Conversionが有効な場合は無視されます。
CPU上のデバイスカメラ画像の取得
新しいカメラフレームがサブシステムで利用可能になるたびに、AR Camera ManagerはframeReceivedイベントを発行します。このイベントをサブスクライブすることで、他のスクリプトができるだけ早いタイミングで最新のカメラフレームを取得し、そのフレームに対して処理を実行できるようになります。
カメラフレームが利用可能になると、カメラマネージャーのTryAcquireLatestCpuImage関数は、選択されたデバイスカメラからの単一のRaw画像を表すXRCpuImageオブジェクトを返します。この画像のRawピクセルデータは、NativeArray<byte>を返すXRCpuImageのConvert関数で抽出できます。
Snapdragon Spacesは、XRCpuImage.ConvertAsyncを通じてフレームの非同期変換もサポートしています。
この場合、返されたAsyncConversionオブジェクトをポーリングしてAsyncConversion.GetData<byte>でデータを取得するか、NativeArray<byte>引数を持つコールバックを提供して変換が完了した際に実行します。
パフォーマンスに関するTIP
AR Camera Managerのコンポーネントは、XR Origin