😊
Android XR の UnitySDKについて調べてみた【2025年1月時点】
はじめに
昨年 Google から Android XR が発表されて、2025年にデバイスが発売されるという事なので、
ひとまず現状 Unity を使った開発で何が出来そうなのか調べてみました。
現時点では実機も無い上にシミュレータでも動作しないので、実際の動作は不明です。
ドキュメントにも
注:エミュレーターは、Android Studio で Android アプリを開発するために設計されています。現在、いかなる種類の OpenXR または Unity アプリケーションもサポートされていません。
と記載されており、実際、通常通りビルドしたものはインストールできず、アーキテクチャをx86-64にしてビルドしたものは起動させようとするとクラッシュします。
確認に使用した環境
・Unity 6000.0.30f1
・AR Foundation 6.1.0-pre.4
・OpenXR Plugin 1.13.2
参照元
Unity OpenXR Android XR 0.4.4-exp.1
- AR Foundation と Open XR に依存しており、基本的には ARFoundation の機能が使用できる。
機能 | 内容 |
---|---|
セッション | AR機能。有効になっていないと各機能が使用できない。 |
カメラ | デバイスのカメラからの画像をレンダリング。パススルーの制御、光の推定。 光の推定は、ARCoreにあるような環境の明るさを推定して3Dオブジェクトに反映させる機能の事と思われる。 |
デバイス追跡 | デバイスの位置・回転。頭に装着するデバイスなら頭の位置・回転。 |
平面検出 | 現実空間の平面の部分を検出する。床、天井、壁、テーブル が分類できる。 android.permission.SCENE_UNDERSTANDING の権限が必要。 |
フェイストラッキング | 人間の顔(装着している人の顔)追跡。「フェイス」とついているが現状は視線の追跡だけ。 android.permission.EYE_TRACKING の権限が必要。 |
レイキャスト | レイを飛ばして何を指しているか。平面の種類が取得できる。 |
アンカー | 空間アンカー。空間内の位置・回転。 |
オクルージョン | 環境と3Dオブジェクトの前後関係を正しく表示する機能。 環境のみでARKitのような人間のオクルージョンは無い。 |
- 追加でパッケージを導入するとその機能が使用できる。
パッケージ | 機能 | 内容 |
---|---|---|
XR Hands | ハンドトラッキング | ハンドトラッキング。 android.permission.HAND_TRACKING の権限が必要。 |
Open XR | フォービエイテッドレンダリング | ユーザーが見ている中心部分ははっきり、周辺は解像度を下げて、レンダリングを高速化する機能。 Unity 6以降、URP+Vulkan。 視線追跡ベースならさらにandroid.permission.EYE_TRACKING の権限が必要。 |
Android XR Extensions for Unity
- Android XR の拡張機能。
- Unity OpenXR Android XR を入れなくてもこちらの機能は使用できる。
機能 | 内容 |
---|---|
セッション | AR機能。 Unity Open XR Android XR と、Android XR Extensions for Unity を同時にインストールしていた場合、使いたい機能のセッションを有効化する。同時に有効化しても問題ない。 |
デバイス追跡 | デバイスの位置・回転。Unity Open XR Android XR と同じ。 |
平面検出 | 空間の平面の部分を検出する。Unity Open XR Android XR と同じ。 今後、Android XR Extensions for Unity の機能は無くなって Unity Open XR Android XR へ統合される予定。 |
オブジェクトトラッキング | 物理空間にあるオブジェクトを追跡する機能。 ARKit の機能と同様の機能と思われる。 |
フェイストラッキング | 人間の顔(装着している人の顔)追跡。表情の追跡が出来る。 android.permission.FACE_TRACKING の権限が必要。 |
アンカー | 空間アンカー。基本的には Unity Open XR Android XR と同じ。 永続性のあるアンカーを使いたい場合は Android XR Extensions for Unity のほうを使用する。 今後、Android XR Extensions for Unity のアンカー機能は無くなって Unity Open XR Android XR へ統合される予定。 |
コンポジションレイヤー | 最終的に目に入ってくる映像を作るテクスチャの層。Android XR ではパススルーの層が追加されている。 |
フォービエイテッドレンダリング | 要 Open XR。基本的には Unity Open XR Android XR と同じ。 ユーザーが見ている中心部分ははっきり、周辺は解像度を下げて、レンダリングを高速化する機能。 Android XR Extensions for Unity のほうはBiRP、GLESもサポートしているが、推奨はされていない。 |
無制限の参照空間 | トラッキングの原点がワールドアンカー基準になる設定。例えばDeviceなら頭が原点、Floorなら床が原点など。 参照するワールドアンカーは変更されることがある。 |
環境ブレンドモード | パススルー映像と、シーン内の映像との合成方法の設定。 |
入力と操作
Android XR のデフォルトはハンドトラッキングで、デバイスによってはコントローラーが付属しない。
機能 | プロファイル | 内容 |
---|---|---|
ハンドインタラクション | Hand Interaction Profile | 手での特定のジェスチャ(つまむ(pinch)、突く(poke)、照準(aim)、握る(grip))による操作。 指の詳細は取れないので、android.permission.HAND_TRACKING のような権限は不要。 |
視線インタラクション | Eye Gaze Interaction | 視線による操作。android.permission.EYE_TRACKING_FINE 権限が必要。 フェイストラッキングの項目にある権限とは別の権限。 |
コントローラーインタラクション | Oculus Touch Controller Profile | 6DoFコントローラーによる操作。 |
マウスインタラクション | AndroidXRMouseInteractionProfile | マウスによる操作。要Android XR Extensions for Unity。 |
手のひらポーズのインタラクション | Palm Pose Interaction | 手のひらの位置と方向が取れる。 |
XR Hands | Hand Tracking Subsystem, Meta Hand Tracking Aim OpenXR |
手の関節データを入力ポーズに変換する。 android.permission.HAND_TRACKING の権限が必要。 |
システムジェスチャ
アプリからホームに戻ったりするためのジェスチャ。
通常のAndroidスマホでいうところの3ボタンナビゲーションに相当するもの。
手のひらを手前に向けてピンチ👌の形にすると表示される。
おわりに
調べた結果として、基本的には従来からある他のXRデバイスと大きく変わらない印象を受けましたが、
今後の展開としてGeospatial API や Gemini といった Google のサービス が使用できるとまた変わってくると思うので、Google のサービスとの統合に期待したいです。
Discussion