Zenn
😊

Android XR の UnitySDKについて調べてみた【2025年1月時点】

2025/02/14に公開

はじめに

昨年 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

参照元

https://docs.unity3d.com/Packages/com.unity.xr.androidxr-openxr@0.4/manual/index.html

https://developer.android.com/develop/xr/unity?hl=ja

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

ログインするとコメントできます