Unity MARS によるデバイスへのビルド
このガイドでは、MARS を使用してスフィアをサーフェスに配置する簡単な AR (拡張現実) アプリケーションを作成し、iOS または Android のモバイルデバイス向けにアプリケーションをビルドする方法を紹介します。まず 要件 に目を通し、プロジェクトが最低限の要件を満たしていることを確認してください。このガイドは、Unity のバージョンアップに伴って変更される可能性があります。閲覧しているドキュメントが、インストールされている Unity MARS のバージョンに合っていることを確認してください。
Unity Mars をまだインストールしていない場合は、先に進む前に インストール の手順に従ってください。
Android/iOS 向けビルドを作成するための Unity の準備
MARS のインストールと必要なすべてのパッケージの設定が完了したら、ビルドに必要な Unity の設定を Build Settings ウィンドウ で行います。
デフォルトでは、Unity はスタンドアロンプラットフォーム向けにビルドするように設定されています。そこで次に、MARS をビルドする予定のデバイスプラットフォーム、例えば iOS や Android を設定する必要があります。そのためには、File > Build Settings で、ビルド対象のプラットフォーム (iOS/Android) を選択し、Switch Platform
ボタンを押して待ちます。その間に、新しいビルドターゲット用にプロジェクトが再インポートされます。
Unity MARS を使用したビルドのための iOS 固有のプロジェクト設定
iOS 向けにビルドする場合は、Project Settings を開いて、別途いくつかの手順を実行する必要があります。それには、Edit > Project Settings > Player または File > Build Settings > Project Settings に移動します。Other Settings
タブを選択して、以下の手順に従います。
- 会社名とアプリケーション名を設定します。これは、Xcode でバンドル識別子を作成する際の名前の競合を避けるためです。
- カメラの使用許可を求める際のメッセージを設定します。
- 使用する予定の ARFoundation のバージョンに必要な最小バージョンを設定します。これは、使用している Unity のバージョン、対象とするプラットフォーム、サポートしたい機能によって大きく異なります。何が利用でき、実際のニーズに応じて何が必要かの詳細については、ARFoundation のドキュメントを参照してください。
- アーキテクチャを ARM64 に設定します。
Project Settings
ウィンドウのXR Plug-in Management
セクションで、ARKit
のチェックボックスを設定してプラグインプロバイダーを有効にします。
iOS デバイス用の Unity プロジェクトのビルドには、以下の 2 つのステップがあります。
- Unity が Xcode プロジェクト をビルドします。
- そのプロジェクトを Xcode が対象デバイス向けにビルドします。
このガイドでは、Xcode プロジェクトを生成するところまで説明します。iOS のビルド設定に関する詳しい情報は、こちら を参照してください。
Unity MARS を使用したビルドのための Android 固有のプロジェクト設定
Android アプリケーションをビルドして実行 するには、Unity Android Build Support プラットフォームモジュール、Android Software Development Kit (SDK)、Native Development Kit (NDK) をインストールする必要があります。
Unity Hub を使用して、Android Build Support と必要な依存関係 (Android SDK & NDK ツール、および OpenJDK) をインストールすることをお勧めします。SDK と NDK のインストール方法の詳細については、こちら のリンクをクリックしてください。
Unity MARS アプリケーションを Android 向けにビルドするための設定は、以下の手順で行います。
- Unity のビルド設定で、対象プラットフォームを
Android
に設定します。それには、File > Build Settings... に移動し、Android
を選択して、Switch Platform
ボタンをクリックします。 - Project Settings ウィンドウの
XR-Plugin Management
セクションで ARCore を有効にします。それには、Edit > Project Settings > XR-Plugin Management または File > Build Settings > Project Settings > XR-Plugin Management に移動して、プラグインプロバイダーをアクティベートします。 - Auto Graphics API を無効にして、Vulkan グラフィックス API が有効になっていないことを確認します。Edit > Project Settings に移動し、左側の Player セクションの Other Settings を展開して、Rendering ヘッダーの下の Auto Graphics API を無効にします。
- "Auto Graphics API" の Graphics APIs の一覧に "Vulkan" と表示されている場合は、一覧から "Vulkan" を選択し、一覧の右下にある "-" ボタンをクリックします。
ノート
Android の ARCore は、現在 Vulkan レンダリング API をサポートしておらず、アプリケーションのグラフィックス API が "Vulkan" だと適切に動作しません。
エラーが発生して ARCore
プラグインプロバイダーを有効にできない場合、おそらく ARFoundation と ARCore のバージョンが一致していません。ARCore パッケージのバージョンが、インストール済みの ARFoundation パッケージのバージョンと一致していることを Package Manager で確認してください。
HoloLens 2 & OpenXR 向けビルドを作成するための Unity の準備
Unity で HoloLens 2 を扱う方法はいろいろありますが、バージョン 2020 以降では、OpenXR の使用を Microsoft が推奨 しています。そこで、Unity の OpenXR パッケージと Microsoft の Mixed Reality OpenXR Plugin
が必要になります。前者は Package Manager から、後者は Mixed Reality Feature Tool を通じてインストールできます。また、メッシュを使用する予定がある場合は、Mixed Reality Scene Understanding
パッケージもインストールすることをお勧めします。
OpenXR でプロジェクトを HoloLens2 向けにビルドするために必要な手順は以下のとおりです。
ユニバーサル Windows プラットフォーム (UWP) 用にプロジェクトを設定する
Unity 2020 以降を使用していること、また、Universal Windows Platform Build Support および Windows Build Support (IL2CPP) コンポーネントがインストールされていることを確認します。
File > Build Settings… で、Universal Windows Platform に切り替えて以下のように設定します。
Visual Studio を設定する
Visual Studio インストーラーで、以下のワークロードがインストール されていることを確認します。
- C++ によるデスクトップ開発
- ユニバーサル Windows プラットフォーム (UWP) 開発
Unity によるゲーム開発
UWP ワークロード内で、以下のコンポーネントが選択されていることを確認します。
Windows 10 SDK バージョン 10.0.19041.0 または 10.0.18362.0
- USB Device Connectivity (USB での HoloLens に対する展開/デバッグに必要)
C++ (v142) ユニバーサル Windows プラットフォームツール (Unity を使用する際に必要)
まだ HoloLens を開発用に設定していない場合は、Microsoft のガイド に従ってください。
必要なパッケージをインストールする
Window > Package Manager で、Unity Registry から
AR Foundation
とOpenXR Plugin
パッケージを追加します。VisualElement
という型名についてのエラーが発生した場合、ビルトインパッケージからUIElements
パッケージも追加する必要があります。新しい入力システムのバックエンドを有効にするよう促された場合は、Yes をクリックするとエディターが再起動します。その後、Edit > Project Settings… > Player に移動して Active Input Handling を Both に設定してください (エディターが再起動します)。HoloLens OpenXR パッケージは Microsoft から配布されており、Mixed Reality Feature Tool を通じてインストールします。これを使って
Mixed Reality OpenXR プラグイン
(バージョン 1.0.0 以降) をインストールしてください。HoloLens でメッシュを使用するには、Mixed Reality Scene Understanding
パッケージもインストールする必要があります。OpenXR を設定する
Edit > Project Settings… > XR Plug-in Management で UWP タブを選択し、OpenXR と Microsoft HoloLens feature group を選択します。
次に、OpenXR セクションの Interaction Profiles の一覧に Microsoft Hand Interaction Profile を追加し、HoloLens 機能グループが有効になっていることを確認します。
黄色い警告記号が表示された場合、それをクリックすると、バリデーターウィンドウが開いて、プロジェクトの設定の修正案が表示されます。
ビルドして展開する
File > Build Settings… から Build ボタンを押します。プロジェクトのビルド先フォルダーの入力を求められます。ビルド後、
<project name>.sln
ファイルをダブルクリックすると、Visual Studio でプロジェクトが開きます。ビルド設定のアーキテクチャは必ず ARM64 に設定し、また、HoloLens への展開に USB ("Device") を使用するか WiFi ("Remote Machine" - 設定手順) を使用するかを選択します。
また、Solution Explorer で、(IL2CppOutputProject や Unity Data ではなく) 目的のプロジェクトがスタートアッププロジェクトとして強調表示されていることを確認します。されていなければ、プロジェクトを右クリックして、Set as Startup Project を選択します。
Debug > Start Without Debugging を選択すると、プロジェクトをビルドし、アタッチされている HoloLens に展開することができます。
Microsoft からも ドキュメント が提供されています。
HoloLens 2 におけるメッシュ
HoloLens 2 には、以下の 2 種類のメッシュが用意されています。
- 環境の単純なメッシュ。AR Foundation によってすぐに生成されてサポートされます。
Scene Understanding システムによって生成されるメッシュ。単純化された水密メッシュであり、サーフェスの種類で分類されます。
メッシュは更新後に維持されないので、更新間隔を >= 0 に設定した場合、更新のたびに既存のメッシュはすべて削除され、まったく新しいメッシュが追加されます。
デバイスビルドでのテスト用のシーンの作成
以上で、MARS アプリケーションに取り組む準備は完了です。それでは、実際のビルドでの可視化に使用できる簡単なものを何か作ってみましょう。
- File > New Scene をクリックして新しい Unity シーン を作成します。
- シーン を保存して (File > Save as…)、"Sample Scene" という名前を付けます。
- Hierarchy ビュー > MARS > Presets > Horizontal Plane を 右クリック して Horizontal Plane プロキシ を作成します。
- 作成した Horizontal Plane ゲームオブジェクトを Hierarchy 内でもう一度 右クリック し、3D Object > Sphere を選択して、そのスケールを調整します (10 立方センチメートル (0.1, 0.1, 0.1) 程度がいいでしょう)。スフィアが
Horizontal Plane
ゲームオブジェクトの子になっていることを確認します。 - 同様に、Hierarchy ビュー内を 右クリック して MARS > Data Visualizers > Plane Visualizer を選択し、Plane Visualizer を作成します。
以上で、Horizontal Plane ゲームオブジェクトは完成です。また、その子ゲームオブジェクトである Sphere、Planes Visualizer ゲームオブジェクト、そして MARS Session
ゲームオブジェクトが自動的に作成されているはずです。このシーンでは、スキャンしたサーフェスを見ることができ、水平面が検出されるとスフィアが出現します。
以上でプロジェクトをビルドする準備が整いました。
特定のプラットフォームを対象とするプロジェクトのビルド
最後に、対象とするプラットフォームに応じて Xcode プロジェクト (iOS ビルドの場合) または apk
ファイル (Android ビルドの場合) を生成することになります。ビルドターゲットに応じて、最終的なビルドを Xcode でコンパイルするか、生成された .apk ファイルを Android スマートフォンに移動しなければなりません。
Unity 側で必要になる操作は以下の手順のみです。
- File > Build Settings… に移動して、Build Settings ウィンドウ を開きます。
- 作成したシーンを追加します。シーンビルドの Add Open Scenes をクリックするか、Project ウィンドウからシーンをリストにドラッグします。
- Build をクリックします。
- 対象のデバイス向けにビルドするうえで別途必要な手順に従い、Xcode (iOS ビルドの場合) でビルドするか、生成された
apk
ファイル (Android ビルドの場合) をデバイスに移動します。
アプリケーションを起動すると、Unity のスプラッシュスクリーンの後、カメラの動画ストリームが表示されます。
デバイスを動かして、サーフェスをスキャンしてみましょう。スキャンされたサーフェスが六角形の模様とともに表示されます。これが今回追加した Plane Visualizer のデフォルトの効果です。水平面が検出されると、作成したスフィアが、図のように Horizontal Plane プロキシの子として表示されます。
トラブルシューティング
プロジェクトをビルドした後に黒い画面が表示される場合は、以下のパッケージがインストールされていることを確認してください。
com.unity.mars-ar-foundation-providers
com.unity.xr.arfoundation
加えて、以下のどちらかまたは両方がインストールされている必要があります。
com.unity.xr.arkit
com.unity.xr.arcore
それでも黒い画面が表示される場合は、FAQ で一般的な原因を確認してください。このステップバイステップガイドに従っていれば、問題は生じないはずです。
複数のコンパイルエラーが表示される場合は、ARFoundation
、ARCore
、ARKit
の各パッケージの メジャーバージョンとマイナーバージョンが同じ で、そのバージョンの AR Foundation をサポートする Unity のバージョンを使用していることを確認してください。古い Unity 2019.4 バージョンで ARFoundation を使用すると問題が発生する場合があります。
ビルド生成時にエラーが発生する場合は、ARCore
または ARKit
に指定したバージョンが SDK のバージョンでサポートされていることを確認してください。サポートされていない場合、対象デバイス向けにビルドすることはできません。