yokohama.unity #12で登壇した資料です
Snapdragon Spacesを通してUnity XRプラグインフレームワークについて軽率に学ぶにー兄さん@ninisan_drumathyokohama.unity #12
View Slide
にー兄さん(@ninisan_drumath)ソフトウェアエンジニア株式会社ホロラボ / IwakenLabUnity / ロケーションベースAR / WebAR /Babylon.js / Azure Kinect最新技術を使った検証開発やデモンストレーションが好き唐突なうちの猫たち→
アジェンダ- Spaces SDKについて- Spaces SDKとXRフレームワーク- おわりに
Snapdragon Spaces SDK
Snapdragon Space SDKQualcommが開発するXRアプリ用SDKQualcommが製造するチップを搭載したARグラスやVRHMD対応していればクロスデバイスで動くhttps://spaces.qualcomm.com/
対応デバイスやプラットフォーム現状はLenovo ThinkReality A3がメインLenovo VRX、Lynx R1、Oppo MR Glassなどがサポート予定を発表今後対応デバイスは増えていくと予想SDKはUnityとUE用がある
提供機能https://docs.spaces.qualcomm.com/unity/setup/SetupGuideUnity.html
ARFoundationやOpenXRに準拠個人的に一番気になっていた点業界/Unity標準のしくみを使ってるのは良いなでもそれってどういうこと?→調査をすることに
Spaces SDKとXRフレームワーク
調査環境● Snapdragon Spaces SDK 0.14.0○ Dual Render Fusionは扱いません● Unity 2021.3.16f1● ARFoundation 2.8● ThinkReality A3SDKはtgz形式で提供されるが、コードリーディングのために敢えてAssets内に展開
SDKの中身通常2つのパッケージを導入する- com.qualcomm.qcht.unity.interactions- QCHT=Qualcomm Hand Tracking(たぶん)- ハンドトラッキングの機能がある- com.qualcomm.snapdragon.spaces- QCHTに依存している- SpacesSDKのメイン
Unity XRプラグインフレームワークの構造ARFoundationやOpenXR Pluginなどのおおまかな関係図(from Unityドキュメント)ユーザコードへのインターフェースと具体的な実装が分割https://docs.unity3d.com/ja/2022.3/Manual/XRPluginArchitecture.html
具体実装(Spaces)とインターフェースの依存関係例CameraSubsystemの例
CameraSubsystemに注目して整理- Subsystem- Providor- OpenXR FeatureなどをSpacesSDKが実装している特にOpenXRFeatureにメイン実装があり、Providorが参照しさらにSubsystemがProvidorをARFoundationへ橋渡しする構造
同様のSubsystemが並んでいるイメージ
Hand Tracking SubsystemHand TrackingはQCHTに実装カスタムSubsystemが作られてるARFoundationにはハントラ機能はない以前はSpacesパッケージ内にあったが、現在はObsolete扱い
おわりに
まとめと感想Qualcomm謹製Snapdragon Spaces SDKはARFoundationやOpenXR pluginといったフレームワークから使えるXR系のフレームワークは内部の動きが隠蔽されがち何が起きてるのか興味があった標準システムに準拠して実装しているSpaces SDK、実にイケてる
参考Snapdragon Spaceshttps://spaces.qualcomm.com/XR Plug-in ManagementによるXR機能(サブシステム)の仕組みを追うhttps://edom18.hateblo.jp/entry/2022/09/24/xr-plugin-managementAbout ARFoundationhttps://docs.unity3d.com/Packages/[email protected]/manual/index.html#subsystemsUnity XR architecturehttps://docs.unity3d.com/ja/2022.3/Manual/XRPluginArchitecture.html