方法

Unity と Android XR を使ってみる

6 分で読了
Luke Hopkins
デベロッパー リレーション エンジニア、Android

Samsung Galaxy XR が登場しました。Android XR を搭載しています。このブログ投稿は、Android XR Spotlight Week の一環として公開されています。このイベントでは、Android XR 向けにアプリを学習、構築、準備するのに役立つリソース(ブログ投稿、動画、サンプルコードなど)を提供しています。

XR 開発を始めるなら今が絶好のチャンスです。昨年 12 月に、Google は Android XR を発表しました。これは、OpenXR や Vulkan などのオープン スタンダードに基づいて構築された Google の新しい Android プラットフォームで、これまで以上に XR 開発にアクセスしやすくなっています。


Unity の既存の XR ツールと組み合わせることで、強力で成熟した開発スタックが実現します。
これにより、複数のデバイスで動作する XR アプリを作成してデプロイできます。

openxr_face_tracking2.webp

XR 開発の経験の有無にかかわらず、Google は皆様のスタートをサポートしたいと考えています。

このブログでは、Android XR と Unity の開発をすぐに始められるようにします。環境の構成、パッケージ エコシステムの理解、構築の開始に関する実践的な手順に焦点を当てます。

このブログを読み終える頃には、次のことを理解できるようになります。

  • パッケージ エコシステム
  • 基本的な設定手順
  • 入力方法
  • プライバシーと権限
  • 合成レイヤ

Android XR 開発向けの Unity

Unity を選択する理由としては、クロス プラットフォーム互換性があり、一度ビルドすれば Android XR や他の XR デバイスにデプロイできることが挙げられます。

Unity を使用すると、成熟した XR エコシステムとツールを利用できます。XR Interaction ToolkitOpenXR プラグインXR 合成レイヤXR Hands などの確立されたパッケージ、XR 対応のコンポーネントとテンプレートが豊富に用意されたアセットストア、XR シミュレーション ツールとテストツールがすでに用意されています。昨年 11 月に Unity 6 がリリースされたため、Universal Render Pipeline(URP)のパフォーマンスの向上、Vulkan グラフィックのサポートの強化、ビルド プロファイルの強化といったメリットも得られます。

以下に、実現できることの例を示すサンプル プロジェクトをいくつか紹介します。

基本的な設定: 開発基盤

Unity 6 の要件とインストール

アプリを作成するには Unity 6 が必要です。以前のバージョンでは Android XR がサポートされていません。まず Unity Hub をインストールし、次の手順に沿って Android Build Support モジュールを使用して Unity 6 をインストールします。

unity6.png

Android XR ビルド プロファイル: 構成の簡素化

Unity ビルド プロファイルは、プラットフォーム固有の設定と構成を保存するプロジェクト アセットです。そのため、複数のメニューで 15 ~ 20 個の異なる設定を手動で設定する代わりに、ビルド プロファイルを使用して自動的に設定できます。
独自のビルド プロファイルを作成できますが、今のところは Google が作成した専用の Android XR ビルド プロファイルを使用することをおすすめします。

Unity プロジェクトで [File] > [Build Profile] を選択して、ビルド プロファイルを選択できます。詳細な手順については、 Android XR 向けの開発ワークフロー ページをご覧ください。

独自に変更を加えた場合は、新しいビルド プロファイルを作成してチームと共有できます。これにより、ビルド エクスペリエンスの一貫性を確保できます。

buildprofiles.png

これらの手順を完了すると、Android XR デバイス用の APK をビルドして実行できます。

グラフィック API: Vulkan が重要な理由

Unity プロジェクトに Android XR ビルド プロファイルを設定したら、まず Vulkan がグラフィック API として設定されていることを確認することをおすすめします。Android XR は、Vulkan を優先するプラットフォームとして構築されています。2025 年 3 月に、Google は Vulkan が Android の公式グラフィック API になったことを発表しました。これは最新の低レベル グラフィック API で、デベロッパーは最新の GPU のパフォーマンスを最大限に引き出し、レイ トレーシングやマルチスレッドなどの高度な機能を利用して、リアルで没入感のあるゲームビジュアルを実現できます。

これらの標準規格により、既存のアプリケーションとの互換性が最大限に高まり、移植の問題やコストを軽減できます。また、URP アプリケーション スペース ワープフォービエイテッド レンダリングなどの高度な Android XR 機能を有効にすることもできます。

Unity 6 は Vulkan を自動的に処理するため、Android XR ビルド プロファイルを使用すると、Unity は Vulkan をグラフィック API として構成します。これにより、手動で構成しなくても、すべての高度な Android XR 機能にアクセスできます。

グラフィック API の設定を確認するには、[Edit] > [Project Settings] > [Player] > [Android tab] > [Other settings] > [Graphics APIs] に移動します。

appentrypoint.png

パッケージ エコシステムについて

Unity で Android XR に使用できるパッケージは 2 つあります。1 つは Unity 用 Android XR 拡張機能を使用する方法、もう 1 つは Unity OpenXR: Android XR パッケージを使用する方法です。

これらは同じように聞こえるかもしれませんが、しばらくお待ちください

Unity OpenXR: Android XR パッケージは、Android XR サポート用の公式 Unity パッケージです。OpenXR 標準規格を通じて利用できる Android XR 機能の大部分を提供します。また、複合現実機能の AR Foundation 統合も有効にします。Unity OpenXR: Android XR パッケージを使用する主なメリットは、XR デバイスをサポートするための統合 API が提供されることです。


一方、Unity 用 Android XR 拡張機能は、Android XR デバイス向けの開発に特化した Google の XR パッケージです。環境ブレンド モード、シーン メッシュ、画像トラッキング、ボディ トラッキングなどの追加機能で Unity OpenXR パッケージを補完します。欠点は、Android XR デバイス向けにのみ開発できることです。


どちらを選択するかは具体的なニーズによって異なりますが、一般的には Unity OpenXR: Android XR を選択することをおすすめします。これにより、アプリが対応するデバイスの柔軟性が大幅に向上します。その後、アプリケーションの要件に基づいて、Unity 用 Android XR 拡張機能を追加できます。

パッケージをインストールする方法

新しいパッケージを追加するには、Unity でプロジェクトを開き、[Window] > [Package Management] > [Package Manager] を選択します。

ここから、[Unity Registry] タブで次のパッケージをインストールできます。

packagemanager.png

Unity 用 Android XR パッケージは、Github からインストールできます。➕ アイコンを選択し、[Install package from git URL] を選択して、「https://github.com/android/android-xr-unity-package.git」と入力します。

packagemanager2.png

必要な OpenXR 機能

必要なパッケージがインストールされたので、プロジェクトを動作させるためにいくつかのコア機能を有効にしましょう。

Android の OpenXR 設定を有効にするには、[Edit] -> [Project Settings] -> [XR Plugin Management] -> [Android] をクリックして [OpenXR] を有効にします。

xrpluginmgmt.png

次に、[Android XR support] のサポートを有効にする必要があります。他の OpenXR 機能については、必要に応じて説明します。今のところ、Android XR のサポートを有効にするだけで十分です。

入力

Android XR は、手、音声、アイトラッキング、キーボード、コントローラの入力をサポートしています。XR Interaction ToolkitXR Hands をインストールすることをおすすめします。これらには、すぐに始められる最適なプレハブが含まれています。これらのプレハブを使用すると、アプリで手とコントローラをサポートするために必要なものがすべて揃います。

xrinteractiontoolkit.png

XR Hands と XR Interactive Toolkit の両方がインストールされたら、Starter Assets と Hands Interaction Demo をインポートすることをおすすめします。次に、Hand Interaction プロファイルと Khronos Simple Controller プロファイルを有効にし、Hand Tracking Subsystem 機能と Meta Hand Tracking Aim 機能をオンにする必要があります。

これらの設定を編集するには、[Edit] > [Project Settings] > [XR Plug-in Management] > [OpenXR] に移動します。

profiles.png

また、Unity のプレハブである XR Origin もおすすめします。これは、XR 空間でのユーザーの位置と向きを表します。これには、正しい視点から XR エクスペリエンスをレンダリングするために必要なカメラリグとトラッキング コンポーネントが含まれています。

このプレハブを追加する最も簡単な方法は、先ほどインポートしたハンド インテグレーション デモからインポートすることです。これは、[Hands Integration Toolkit] > [Hand Interaction] > [Prefabs] > [XR Origin] にあります。

prefabs.png

ゲーム オブジェクトの [XR Origin] オプションではなく、このプレハブを使用することをおすすめします。これは、ユーザーの手とコントローラを自動的に切り替える XR Input Modality Manager を使用するためです。これにより、手とコントローラの切り替えが最も成功します。

プライバシーと権限: ユーザーの信頼を構築する

どのようなビルドを行う場合でも、ユーザーから実行時の権限を取得する必要があります。これは、シーンの理解、アイトラッキング、顔追跡、ハンド トラッキングによって、ユーザーにとってより機密性の高いデータにアクセスできるためです。

これらの機能は、従来のデスクトップ アプリやモバイルアプリよりも詳細な個人情報を提供するため、実行時の権限により、ユーザーは共有するデータを選択できます。そのため、Android のセキュリティ ポリシーとプライバシー ポリシーに準拠するため、Android XR にはこれらの機能ごとに権限があります。

たとえば、カスタム ハンド ジェスチャーに XR Hands パッケージを使用する場合は、このパッケージでユーザーの手に関する多くの情報をトラッキングする必要があるため、ハンド トラッキング権限(下記)をリクエストする必要があります。これには、手の関節のポーズ、角速度、線速度のトラッキングなどが含まれます。

注: 権限が必要な拡張機能の完全なリストについては、XR デベロッパー ウェブサイトの情報をご確認ください。

  const string k_Permission = "android.permission.HAND_TRACKING";

#if UNITY_ANDROID
void Start()
{
    if (!Permission.HasUserAuthorizedPermission(k_Permission))
    {
        var callbacks = new PermissionCallbacks();
        callbacks.PermissionDenied += OnPermissionDenied;
        callbacks.PermissionGranted += OnPermissionGranted;
        
        Permission.RequestUserPermission(k_Permission, callbacks);
    }
}

void OnPermissionDenied(string permission)
{
    // handle denied permission
}


void OnPermissionGranted(string permission)
{
    // handle granted permission
}

#endif // UNITY_ANDROID

合成レイヤでビジュアル品質を向上させる

合成レイヤは、UI 要素をレンダリングするおすすめの方法です。すべてがプラットフォームのコンポジタに直接レンダリングされるため、Unity の標準レンダリング パイプラインと比較して、要素をはるかに高品質で表示できます。

たとえば、テキストを表示する場合、標準の Unity レンダリングでは、テキストがぼやけたり、エッジがソフトになったり、ビジュアル アーティファクトが発生したりする可能性が高くなります。一方、合成レイヤを使用すると、テキストが鮮明になり、アウトラインがシャープになり、全体的なエクスペリエンスが向上します。


テキストだけでなく、動画、画像、UI 要素もはるかに高品質でレンダリングされます。これは、ランタイムのコンポジタ レイヤのネイティブ サポートを利用することで実現しています。

合成レイヤをオンにするには、Package Manager を開き、[Unity Register] を選択して、[XR Composition Layers] をインストールします。

ビルドして実行する

OpenXR パッケージがインストールされ、機能が有効になり、手と頭の動きのプレハブが設定されたので、シーンをビルドしてヘッドセットに直接デプロイしてテストできます。

次のステップ: スキルを拡大する

Android XR 開発環境を設定し、重要なコンセプトを理解したので、XR 開発の旅を続けるための次のステップを紹介します。

継続的な学習に不可欠なリソース:

探索するサンプル プロジェクト:

執筆者:

続きを読む