ハウツー

Unity と Android XR のスタートガイド

所要時間: 6 分
Luke Hopkins さんのプロフィールを表示
Luke Hopkins Developer Relations Engineer, Android

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

XR 開発を始めるなら今が絶好のタイミングです。昨年 12 月に、Google は Android XR を発表しました。これは、OpenXR や Vulkan などのオープン スタンダードを基盤として構築された新しい 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 の、ユニバーサル レンダリング パイプライン(URP)のパフォーマンス向上、Vulkan グラフィックのサポート改善、ビルド プロファイルの強化といったメリットも享受できます。

以下に、作成できるプロジェクトの例を示します。

基本的な設定: 開発の基盤

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

以前のバージョンでは Android XR がサポートされていないため、アプリを作成するには Unity 6 が必要です。まず 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 が重要な理由

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

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

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

グラフィック API の設定を確認するには、[Edit](編集)> [Project Settings](プロジェクト設定)> [Player](プレーヤー)> [Android tab](Android タブ)> [Other settings](その他の設定)> [Graphics APIs](グラフィック API)に移動します。

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 が提供されることです。


一方、Android XR Extensions for Unity は、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

Github 経由で Android XR for Unity パッケージをインストールするには、[➕] アイコンを選択し、[Install package from git URL](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 の両方のツールキットがインストールされたら、スターター アセットとハンド インタラクション デモをインポートすることをおすすめします。次に、[Hand Interaction] プロファイルと [Khronos Simple Controller] プロファイルを有効にして、[Hand Tracking Subsystem] 機能と [Meta Hand Tracking Aim] 機能をオンにする必要があります。

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

profiles.png

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

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

prefabs.png

ゲーム オブジェクトの [XR Origin] オプションよりも、この Prefab を使用することをおすすめします。この Prefab は 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 開発の次のステップに進みましょう。

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

サンプル プロジェクト:

作成者:
続きを読む