Unityプロジェクトの設定方法
このガイドでは、UnityでSnapdragon Spaces SDKを使用してDual Render Fusionを有効にする方法を詳しく紹介します。
前提条件
Snapdragon Spacesで動作するUnity Editorの推奨バージョンは2022.3 LTS(2022.3.62f2以降)です。他のバージョンのUnity Editorは十分にテストされていないため、不具合が発生する可能性があります。
.apkファイルをエクスポートするには、Unity Editorのインストール時にAndroid Build Supportモジュールを追加する必要があります。このモジュールはUnity Hubから追加することができます。
このガイドでは、Snapdragon SpacesプロジェクトがUnityセットアップガイドに従って設定されていることを前提としています。
OpenXR Pluginのバージョンの確認
Snapdragon Spacesが動作するOpenXR Pluginの推奨バージョンは1.15.0-pre.1です。
1.15.0-pre.1以降など他のバージョンは、Dual Render Fusionのアプリで、スマートフォンの画面が表示されない等の不具合が発生する可能性が高いです。
Window > Package ManagerからOpenXR Pluginのバージョンが1.6.0〜1.15.1の間であることを確認します。

- 1.12.1など他のバージョンである場合は、次の手順で1.15.0-pre.1を指定してOpenXR Pluginをインポートします。
OpenXR Pluginのバージョンの指定(v1.15.0-pre.1)
Package Managerの左上の「+▼」から「Add package by name...」を選択します。
- 以下のように1.15.0-pre.1のバージョンを指定して、OpenXR Pluginをインポートします。
- Name:
com.unity.xr.openxr - Version:
1.15.0-pre.1
- Name:
サンプルのインポート
Snapdragon Spaces SDKパッケージには、Dual Render Fusionの使い方を紹介するサンプルアセットが内包されています。
インポートするには、パッケージマネージャー(Window > Package Manager)でパッケージを選択し、Fusion Samplesのインポートをクリックします。
インポートすると、Dual Render Fusion機能の様々な特徴を紹介する以下のシーンが利用できます。

サンプルの内容に関する詳細は、「サンプル一覧」のページを確認してください。
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でDual Render Fusionにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)

プロジェクト設定の変更

メニューのSnapdragon Spaces > Dual Render Fusion > Configure Fusion projectを使用すると、Fusionのためのプロジェクト設定を簡単に行うことができます。
これにより、プロジェク ト設定が以下のように調整されます。
「Initialize XR on Startup」の無効化
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)の「Initialize XR on Startup」を無効にします。
Base Runtimeの設定
-
Project Settings > XR Plug-In Management > OpenXR > Base Runtime > Feature settings(歯車アイコン)で、- Launch App On Viewerを無効にします。
- Launch Controller on Hostを無効にします。
- Export Headlessを無効にします。

-
Project Settings > Player > Other Settings > ConfigurationのActive Input Handlingの値をbothに設定します。これにより、従来の入力システムと新しい入力システムを並行して使用することができます。 -
Project Settings > PlayerのProduct NameとVersionの値を調整し、末尾に-Fusionを追加します。これにより、Dual Render Fusionでビルドされたアプリは、開発中に識別しやすくなります。 -
Project Settings > Player > Other Settings > IdentificationのPackage Nameの値を調整し、末尾に.fusionを追加します。
Fusionに対応する前と対応した後のアプリをスマートフォンにインストールする場合、アプリ名の末尾に-Fusionが付くアプリと付かないアプリの2つが存在し、見分けが付きにくい可能性があります。
アプリを見分けるために、スマートフォンのホーム画面でアプリアイコンを長押ししてアプリ名の末尾まで確認することをお勧めします。
プロジェクト設定を手動で調整する場合、Product Name、Version、Package Nameを調整する必要はありません。
Active Input Handlingの変更は、ほとんどのユースケースで推奨されます。
Dual Render Fusionが正しく機能するために、その他の変更は必要です。
これらの設定を手動で(再)適用する必要があり、Initialize XR on Startupのチェックボックスを無効にできない場合は、Assets > XR > XRGeneralSettings > Android Settingsに移動します。

ここで、Init Manager On Startを無効にします。

Dual Render Fusionの設定を変更する
Project Settings > XR Plug-In Management > OpenXR > Dual Render Fusion > Feature settings(歯車アイコン) の順に選択し、Ignore Open XR Versionのチェックボックスを有効にしてください。

本ステップを実施しない場合、次ステップでProject Validaterによる修正を適用したとしてもエラーが出力されビルドすることができません。
確実にチェックボックスが有効になっていることをご確認ください。

MiRZA Configuration Toolを使用しOpenXR Pluginのバージョン設定を行った場合、ツール側で自動的に設定を行います。
Project Validatorの修正を適用する
Project Settings > XR Plug-In Management > OpenXR > Dual Render Fusion > Feature settings(歯車アイコン) の順に選択し、Validate Open Sceneのチェックボックスを有効にしてください。
Validate Open Sceneを有効にすると、現在のシーンに対してプロジェクトの検証を実行します。
このステップを終えたら、Validate Open Sceneを無効にしてください。
この設定を有効にしたままにしておくと、自動ビルド環境で問題が発生する可能性があります。詳細は、Dual Render Fusionの設定を参照してください。
Dual Render Fusionの横にある赤い「!」をクリックし、Project Validationウィンドウを開きます。

Project Validationウィンドウには、Unityプロジェクトと現在開いているシーンの両方を更新するためのいくつかのFixオプションが表示されるので、正しいシーンをプロジェクトで開いていることを確認してください。
これらの問題は、シーンのセットアップやプロジェクトの設定によって異なる場合があります。

Dual Render Fusionは、これらのオプションを自動的に入力します。
Dual Render Fusion機能に「!」マークが表示されているにもかかわらず、関連するオプションが表示されない場合は、Packages > Snapdragon Spaces > Runtime > Fusion > FusionFeature.FeatureValidatorsのスクリプトを再インポートして、プロジェクト検証のファイルを完全に再処理してください。

この時点で、Dual Render Fusionは正しく起動できるようになっているはずです。
新規プロジェクトの場合、シーンのHierarchyにゲームオブジェクトが追加されているはずです。

これらのゲームオブジェクトと付属のコンポーネントに関する追加情報は、コンポーネントのページにあります。
既存のSnapdragon SpacesプロジェクトにDual Render Fusion機能を追加したい開発者の方は、アプリの機能を変更することなく簡単に開始できるCompanion Controllerのセクションを参照してください。
Dual Render Fusionの設定
Dual Render Fusion機能で使用可能な設定は以下の通りです。
- Validate Open Scene
- 有効にすると、
Project Validationウィンドウで、現在のシーンがDual Render Fusionで動作するように正しく設定されているかどうかチェックされます。 - プロジェクトのビルドシステムにフル機能のシーン(追加のシーンなど)がない場合は、ビルドブロッカーを避けるために、この設定を無効にしてください。
- 有効にすると、
- Ignore OpenXR Version
- 有効にすると、
Project Validationウィンドウで、どのバージョンのOpenXRプラグインでも使用できるようになります。 - Snapdragon SpacesでのOpenXRの推奨バージョンは1.15.0-pre.1です。
- OpenXRのバージョンが上記以外の場合、レンダリングの問題が発生する可能性があります。
- 有効にすると、
Unityの画面レイアウト
Dual Render Fusionでは、ARグラスの画面に加えてスマートフォンの画面も使用します。 そのため、Unity Editor上でも2つの画面を確認する必要があります。
2つの画面を確認するためにGameビューのタブを2つに増やし、それぞれのTarget DisplayをDisplay 1とDisplay 2に変更することをおすすめします。

シーンを再生する前はDisplay 2には何も表示されませんが、シーンを再生することでコンテンツが表示されるようになります。
Companion Controller(ポインター)のシミュレート
Editor内でシーンを再生しても、ポインターを動かすことは出来ません。
これは実機上で使用するジャイロセンサーを、Editor上では使えないためです。

そこで、Editor内でもポインターを動かす方法を紹介します。
- 以下のように、キー入力でポインターの向きを変えるスクリプトを用意します。
using UnityEngine;
public class SimulatePointer : MonoBehaviour
{
[SerializeField]
private float speed = 50.0f;
private Vector2 eulerAngles = Vector2.zero;
private void Update()
{
if (Input.GetKey(KeyCode.UpArrow))
{
eulerAngles.x -= speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.DownArrow))
{
eulerAngles.x += speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.RightArrow))
{
eulerAngles.y += speed * Time.deltaTime;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
eulerAngles.y -= speed * Time.deltaTime;
}
transform.rotation = Quaternion.Euler(eulerAngles.x, eulerAngles.y, 0);
}
}