Snapdragon Spaces SDK V1.0.0(V1.0.1)を使った開発環境構築
V1.0.0V1.0.1 リリース
祝!Snapdragon Spaces SDK Snapdragon Spaces Platformを利用する為のSDKがついに V1.0.1なりました。V1になり、これまでExperimentalとなっていた多くの機能が正式なものになっています。この影響なのか前バージョンであるV0.23.2から破壊的アップデートが入っている部分が少しあります。遭遇したものについては後半で紹介したいと思います。
今回はV1.0.1での空プロジェクトにSnapdragon Spaces V1.0.1をインポートしてベースのシーン作成まで。V1.0.1からは手動設定を楽にするためのツールが提供されており今回はそれをつかった手順を紹介します。
【目次】
- 開発環境
- Unityプロジェクトの作成~SDKのインポート
- Configuration Toolを利用したプロジェクトとシーンの設定
3.1. Augmented Reality(ThinkRealityA3, MiRZA)
3.2. Mixed Reality(VRX,SRH-S1) - V1.0.1でのDual Render Fusionの注意点
- V0.23.2 → V1.0.1変更時の非互換点
1.開発環境
Snapdragon Spaces SDK V1.0.1 を使った開発環境については以下の通りです。
- Unity 2022.3.36f1 or later
- Android Build Support
- OpenJDK
- Android SDK&NDK Tools
- Android Build Support
- Snapdragon Spaces SDK V1.0.1
Snapdragon Spaces SDKについては公式サイトからダウンロードします。ダウンロードにはユーザ登録(無料)が必要です。
2. Unityプロジェクトの作成~SDKのインポート
最初に空のUnityプロジェクトを作成します。
新規プロジェクト作成
Unity Hubから新規プロジェクトを作成します。Unityのバージョンは2022.3.36f1です。
SDKのダウンロード
次にSnapdragon Spaces SDKの準備を行います。サイトからダウンロードしたSDKはZip圧縮されているので展開します。展開すると以下のようなファイル構成になっています。
[path]:.
│ Activities_Android_Project_1_0_1.zip --スマホコントローラ用Androidプロジェクト
│ NOTICE.txt
│ README.txt
│ SnapdragonSpacesServices_0_22_0_11.apk -- 対応するSnapdragon Spaces Service用APK
│ SnapdragonSpaces_Unity_Samples_1_0_1.apk -- Snapdragon Spaces SDKのサンプルAPK
│
└─Unity Package
com.qualcomm.qcht.unity.interactions-4.1.12.tgz
com.qualcomm.snapdragon.spaces-1.0.1.tgz--Snapdragon Spaces ハンドトラッキング用SDK
SnapdragonSpaces_Unity_Samples_1_0_1.apk -- Snapdragon Spaces SDKのサンプルAPK -- (被ってる気がする...)
各ファイルについて
com.qualcomm.snapdragon.spaces-X.X.X.tgzがSDK本体です。最低限これをインポートする必要があります。
Snapdragon Spaces プラットフォームはARグラス型については現状スマートホンをコントローラにして利用する形が基本形になっています。このコントローラ用アプリはAndroid Naitiveのアプリとして提供されており、外観を変更したい場合はActivities_Android_Project_X_X_X.zipを利用して変更することが可能です。
提供されるSDKのバージョンによっては SnapdragonSpacesServices_X_X_X_X.apk が含まれていることがあります。これはスマホ上で動くバックグラウンドサービスでSnapdragon Spacesを利用する為に必要です。SDKのバージョンを挙げた場合は合わせて変更します。基本的にこのサービスは後方互換があるため新しいSDKに合わせて更新する形で問題ありません。逆にうまく動作しない場合はこのサービスが古いかどうか確認してください。
com.qualcomm.qcht.unity.interactions-X.X.X.tgz はSnapdragon Spacesでハンドトラッキング系の機能を利用する場合に必要です。他のプラットフォームのInteraction(XRI等)を利用する場合はセットアップしなくてもハンドトラッキング可能です。検証したところThinkReality A3,MiRZAともにOpenXRの機能であるXR HandsをサポートしているためOpenXRで提供される機能で十分であればセットアップは不要です。
SDKのインポート
最初に導入するUnityプロジェクトにSDKをコピーします。コピーするファイルは以下の2つです
- com.qualcomm.snapdragon.spaces-1.0.0.tgz
- com.qualcomm.qcht.unity.interactions-4.1.12.tgz(任意)
上記2つのファイルを以下のフォルダを作成してコピーします。
- [Unity Project Path]\Packages\SnapdragonSpaces
コピーが完了したUnity Editorに戻ります。メニューから[Window]-[Package Manager]を選択してPckage Managerウィンドウを開きます。左上の[+]ボタンを押して[Add package from tarball]を選択し、先ほどコピーしたcom.qualcomm.snapdragon.spaces-1.0.0.tgzをインポートします。
3. Configuration Toolを利用したプロジェクトとシーンの設定
インポートが完了すると自動的にSnapdragon Spacesのconfiguration Toolが表示されます。表示されない場合はメニューから[Window]-[XR]-[Snapdragon Spaces]-[Configration Tool]を選択することで表示されます。以降はこのツールで初期設定を行います。利用するデバイスによって多少設定項目が異なります。
3.1. Augmented Reality(ThinkRealityA3, MiRZA)
ARグラス向けの設定手順です。最初にコンボボックスがあるので、AugmentedRealityを選択し作業を進めてきます。
Step.1 Snapdragon SpacesのOpenXR Plug-in設定の有効化
最初にSnapdragon SpacesのOpenXRの設定を有効にするためにプラットフォームの変更やプロジェクト設定を行います。全ての設定が問題なく行われている状態で[Next]ボタンが押せるようになります。
- Switch Build Target To Android
Build Settingsで行うPlatformをAndroidに変更します。ボタンが活性化している場合は押下することでAndoroidプラットフォームに変更されます。非活性の場合はすでに設定が完了しています。 - Open XR Plug-in Management under Project Settings
AndroidプラットフォームにおけるOpenXR Plug-inの設定を変更します。ボタンを押すと[Project Settings]-[OpenXR Plug-in Management]の項目が開きます。 - Switch to the Android tab,and enable the OpenXR plug-in
表示されたOpenXR Plug-in ManagementについてAndroidタブを選択しOpenXRのチェックを入れてOpenXRを有効化します。 - Under the OpenXR plug-in, enable the Snapdragon Spaces feature group(s)
Open XR plug-inの下にあるSnapdragon Spaces関連の機能をチェックし有効化します。
Step 2. Project Settings
次はAndoroidでビルドを行う際のPuroject設定を最適化します。全てチェックして[Apply]ボタンを押して反映します。開いた時点で設定が異なる部分がチェック可能です。設定済みはグレーアウトされます。こちらもすべての設定を行うと[Next]を押すことができるようになります。
Step 3. Enable Snapdragon Spaces Features
次に利用したいSnapdragon Spacesの機能を選択します。この設定は[Project Settings]-[OpenXR plug-in Management]-[OpenXR]で設定する項目と同じになります。必要なものをチェックしたら[Next]を押して次に進みます。
step 4. Dual Render Fusion Setup
Dual Render Fusionの利用に必要な環境設定を行います。[Configure project for Dual Resner Fusion]ボタンをおして必要なプロジェクト設定を反映させることができます。正しく設定が反映されると[Next]を押して次の設定に進めることができます。
Step 5. Import Snapdragon Spaces Samples
任意ですがSnapdragon Spacesの機能の確認するためのサンプルコードをインポートすることができます。インポートしたい場合はそれぞれのボタンを押します。
Step 6. AR Foundation Scene Setup
現在開いているシーンに対する設定を行います。手順通りに設定を行っていくとSnapdragon Spaces必要なコンポーネント設定が行われたシーンが完成します。
- Remove the Main Camera from the scene
Hierarchyに初期に設置されているMain Cameraを削除します。 - Add AR Session to the scene
AR Sessionオブジェクトをシーンに追加します。 - Add XR Origin and Main Camera to the scene
ヘッドセットのカメラやコントローラのコンポーネントが含まれるXR Originをシーンに追加します。 - Disable AR Camera Manager component from the Main Camera
パフォーマンに影響のあるAR Camera Managerを無効化します。注意書きにもありますが、起動時はOFFにしておき必要になる時にロジックで有効化します。 - Disable AR Camera Background component from the Main Camera
Main Cameraに含まれるAR Camera Backgroundを無効化します。基本的にはARグラスの背景は不要なためこの設定を無効化しておきます。
Step 7. Dual Render Fusion Scene Validation
このプロジェクトに関する検証を実施します。タイトルにはDual Render Fusionとは書かれているのですが、おそらく間違いで最終的なUnityプロジェクトの検証を行い設定の不備などを解消します。
- Enable scene validation for the current scene.
現在開いているシーンの検証を有効化します。 - Open the Project Validation Window.
Project Validation Windowを表示します。 - Apply the fixes shown in the project validation window.
Project Validation Windowで表示される警告やエラーを[Fix All]を押して解消します。一部の警告については残るかもしれませんが内容を確認し対応不用であればOKです。 - Disable Scene Validation.
現在開いているシーンの検証を無効化します。
以上の設定までを行うと現在開いているシーンでARグラスのコンテンツ開発が可能になります。
3.2. Mixed Reality(VRX,SRH-S1)
Mixed Realityデバイス向けの設定手順です。最初にコンボボックスがあるので、MixedRealityを選択し作業を進めてきます。
Step.1 Snapdragon SpacesのOpenXR Plug-in設定の有効化
最初にSnapdragon SpacesのOpenXRの設定を有効にするためにプラットフォームの変更やプロジェクト設定を行います。全ての設定が問題なく行われている状態で[Next]ボタンが押せるようになります。
- Switch Build Target To Android
Build Settingsで行うPlatformをAndroidに変更します。ボタンが活性化している場合は押下することでAndoroidプラットフォームに変更されます。非活性の場合はすでに設定が完了しています。 - Open XR Plug-in Management under Project Settings
AndroidプラットフォームにおけるOpenXR Plug-inの設定を変更します。ボタンを押すと[Project Settings]-[OpenXR Plug-in Management]の項目が開きます。 - Switch to the Android tab,and enable the OpenXR plug-in
表示されたOpenXR Plug-in ManagementについてAndroidタブを選択しOpenXRのチェックを入れてOpenXRを有効化します。 - Under the OpenXR plug-in, enable the Snapdragon Spaces feature group(s)
Open XR plug-inの下にあるSnapdragon Spaces関連の機能をチェックし有効化します。
Step 2. Project Settings
次はAndoroidでビルドを行う際のPuroject設定を最適化します。全てチェックして反映します。開いた時点で設定が異なる部分がチェック可能です。設定済みはグレーアウトされます。こちらもすべての設定を行うと[Next]を押すことができるようになります。
Step 3. Enable Snapdragon Spaces Features
次に利用したいSnapdragon Spacesの機能を選択します。この設定は[Project Settings]-[OpenXR plug-in Management]-[OpenXR]で設定する項目と同じになります。必要なものをチェックしたら[Next]を押して次に進みます。
Step 4. Import Snapdragon Spaces Samples
任意ですがSnapdragon Spacesの機能の確認するためのサンプルコードをインポートすることができます。インポートしたい場合はそれぞれのボタンを押します。
Step 5. AR Foundation Scene Setup
現在開いているシーンに対する設定を行います。手順通りに設定を行っていくとSnapdragon Spaces必要なコンポーネント設定が行われたシーンが完成します。
- Remove the Main Camera from the scene
Hierarchyに初期に設置されているMain Cameraを削除します。 - Add AR Session to the scene
AR Sessionオブジェクトをシーンに追加します。 - Add XR Origin and Main Camera to the scene
ヘッドセットのカメラやコントローラのコンポーネントが含まれるXR Originをシーンに追加します。 - Disable AR Camera Manager component from the Main Camera
パフォーマンに影響のあるAR Camera Managerを無効化します。注意書きにもありますが、起動時はOFFにしておき必要になる時にロジックで有効化します。 - Disable AR Camera Background component from the Main Camera
Main Cameraに含まれるAR Camera Backgroundを無効化します。基本的にはARグラスの背景は不要なためこの設定を無効化しておきます。
Step 6. Passthrough
MixedRealityデバイスのパススルーの設定を行います。パススルーを有効にするためには背景の透過度を0にして透過しておく必要があります。
以上でMixedRealityデバイス向けのSnapdragon Spaces適用済みのベースが完成します。後はそのまま開発を進めることができます。
4. V1.0.1でのDual Render Fusionの注意点
Snapdragon Spaces V1.0.1(以前のバージョンから)でDual Render Fusionを利用する場合OpenXR pluginパッケージのバージョンを1.10.0にする必要があります。Unity 2022.3.36f1ではこのパッケージのバージョンはデフォルトがV1.11.0となっているためDual Render Fusionを有効にしているとバージョンが合っていないという指摘が入るようになります。
解消方法は、バージョンをV1.10.0に変更する事です。バージョンを変えるにはPackage Managerを開いて該当プラグインのバージョンを変更して上書きインポートします。
5. V0.23.2 → V1.0.1変更時の非互換点
Snapdragon SpacesのSDKにおいてV0.23.2からV1.0.1に変更するといくつか非互換点がでています。主に試験的な機能の統廃合や名前の修正といったものです。特にファイル名変更や削除になっている部分を抜粋すると以下のようなものがあります。これら機能を利用していた場合は手動で実装内容を見直す必要があります。
- Changed the Configure Fusion project helper menu item to not add a prefix to the project name and application bundle.
- Removed the Fusion Simulator setting. For Snapdragon Spaces Editor simulation check the Spaces XR Simulator component.
- Removed Dual Render Fusion screen orientation validator. Is no longer required landscape orientation for Dual Render Fusion builds.
- Removed Spaces AR Mesh Manager.
- Removed the QCOM plane detection extension implementation.
そのほか、完全な変更点リストは以下になります。
Discussion
1.0.1がリリースされてChangelogにもMiRZAの問題修正が載っていました