日本時間の12/12に、Android XRという新しい仕組みが発表されました。
Android XRはWebXRの対応も明記されています。そこで、今回はAndroid XRに関する開発情報を書き出しました。
Babylon.js Advent Calendar 2024の14日目の記事として、Babylon.jsで少し試した結果も書いています。
2024/12/16追記
続報としてAndroidアプリの利用形態についても別記事に書きました。
1. Android XRとは
Googleが発表した仕組みです。生成AIのGeminiをよりインタラクティブに使うための手段として位置付けられているようです。
Now, we're taking the next step into the future. Advancements in AI are making interacting with computers more natural and conversational. This inflection point enables new extended reality (XR) devices, like headsets and glasses, to understand your intent and the world around you, helping you get things done in entirely new ways.
日本語でも色々と紹介されています。たとえばこちらの記事が参考になります。
現時点ではAndroid XRのデバイスはまだ概要が発表されただけですが、SDKやエミュレータ、各種ドキュメントはすでに公開されています。
2. Android XRのアプリ開発手段
こちらの公式ドキュメントによると、開発手段は4つあるようです。
Overview of building for Android XR | Android Developers
- Android Jetpack SDK
Android Studioを使って開発する方法。ドキュメントの記載情報のほとんどは、空間に表示する2Dスクリーンアプリケーションに関するもの。スクリーンショットがないので雰囲気がわからないが、ARCoreも使えることが書いてある
- Unity
Unity project setup | Android XR | Android Developers
・Unity version 6000.0.23f1 以降で開発可能
・Unity OpenXRがベースとなっているように見える。ただし、OpenXRの機能の全てをサポートしているわけではない
"many of the features described in the OpenXR Overview are also supported in Unity." とあるため
・ hand tracking, face tracking, eye trackingもサポートされている
"In addition to hand and eye tracking, peripherals such as 6DoF controllers, mouse, and physical keyboard are also supported." とあるため
・専用のpackageをベースとして開発する。現時点で公開されているパッケージは以下
GitHub - android/android-xr-unity-package
- OpenXR
・XR系アプリケーションを作るための機能が最もサポートされている
・基本的にOpenXR 1.1の仕様に準拠している
The OpenXR™ 1.1.43 Specification (with all registered extensions)
Develop with OpenXR | Android XR | Android Developers
- WebXR
Three.js, Babylon.js, A-Frame, model-viewerが勧められている。immersive-ar、immersive-vrのどちらもサポートされている
Before you begin developing, it's important to choose the right WebXR framework. This significantly enhances your own productivity and improves the quality of the experiences you create.
For full control over 3D scenes and creation of custom or complex interactions, we recommend three.js and babylon.js.
For rapid prototyping or using HTML-like syntax to define 3D scenes, we recommend A-Frame and model-viewer.
You can also review more frameworks and sample code.
Develop with WebXR | Android XR | Android Developers
WebXRには現時点でeye tracking非対応ですが、Apple Vision ProではARモード自体が非対応 (2024/12/15時点) なので、ARにも対応しているのはいいですね。
3. Babylon.jsのWebXRサンプルコードを試してみた
試しにAndroid XR EmulatorでBabylon.jsのWebXRサンプルコードを開いたら、immersive-vrモードで起動できました。
https://playground.babylonjs.com/#B922X8#19
また、immersive-arモードでも起動できました。
https://playground.babylonjs.com/#F41V6N#32
ARのときは、pass throughモードとして、あらかじめ準備されていた部屋の画像?が表示されます。元のBabylon.js のimmersive-arのコードはsphereを表示するだけでしたので、この表示になっていれば正常にAR表示できたことになります。
4. おわりに
開発方法のページを見ると、すでに色々な基準が定められているようです。この辺りももう少し調べてみようと思います。