Dual Render Fusionのセットアップガイド
このガイドでは、UnityでSnapdragon Spaces SDKを使用してDual Render Fusionを有効にする方法を詳しく紹介します。
前提条件
Snapdragon Spacesでは2021.3 LTSが推奨されていますが、対象デバイスのアプリを開発する場合は2022.3.11f1を推奨しています。それ以外のバージョンは十分にテストされていないため、不具合が発生する可能性があります。
このガイドは、「Snapdragon Spaces SDK for Unity」のバージョンが0.23.0以降であることを前提としています。
.apkファイルをエクスポートするには、Unity Editorのインストール時にAndroid Build Supportモジュールを追加する必要があります。このモジュールはUnity Hubから追加することができます。
このガイドでは、Snapdragon SpacesプロジェクトがUnityセットアップガイドに従って設定されていることを前提としてい ます。
サンプルのインポート
Snapdragon Spaces SDKパッケージには、Dual Render Fusionの使い方を紹介するサンプルアセットが内包されています。
インポートするには、パッケージマネージャー(Window > Package Manager
)でパッケージを選択し、Fusion Samples
のインポートをクリックします。
インポートすると、Dual Render Fusion機能の様々な特徴を紹介する以下のシーンが利用できます。
-
Controller Prefab Sample Scene
- Android Companion Controller for Snapdragon SpacesをUnityプレハブに適合させるためのサンプルシーンで、設定と終了ボタンを制御できます。詳細はCompanion Controllerを参照してください。
-
LandscapeUISampleScene
- スマートフォンを横向きにしてUIを操作するサンプルシーンです。UIでキューブを操作できます。
-
OpenXRLoadingTest
- スマートフォンでアプリを即座に起動し、ARグラスとの接続を確立するとOpenXRを有効にすることを示すシーンです。詳しくは、Dynamic OpenXR Loaderを参照してください。
-
PortraitUISampleScene
- スマートフォンを縦向きにしてUIを操作するサンプルシーンです。UIでキューブを操作できます。
機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でDual Render Fusionにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)
プロジェクト設定の変更
メニューのSnapdragon Spaces > Dual Render Fusion > Configure Fusion project
を使用すると、Fusionのためのプロジェクト設定を簡単に行うことができます。
これにより、プロジェクト設定が以下のように調整されます。
-
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)
の「Initialize XR on Startup」を無効にします。 -
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を無効にします。
Project Validatorの修正を適用する
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)
に移動します。
Dual Render Fusion (Experimental) 機能の歯車のアイコンをクリックして、設定を開きます。
Validate Open Sceneを有効にすると、現在のシーンに対してプロジェクトの検証を実行します。
このステップを終えたら、Validate Open Sceneを無効にしてください。
この設定を有効にしたままにしておくと、自動ビルド環境で問題が発生する可能性があります。詳細は、Dual Render Fusionの設定を参照してください。
Dual Render Fusionの横にある赤い「!」をクリックし、Project Validationウィンドウを開きます。
Project Validationウィンドウには、Unityプロジェクトと現在開いているシーンの両方を更新するためのいくつかのFixオプションが表示されるので、正しいシーンをプロジェクトで開いて いることを確認してください。
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で動作するように正しく設定されているかどうかチェックされます。
プロジェクトのビルドシステムにフル機能のシーン(追加のシーンなど)がない場合は、ビルドブロッカーを避けるために、この設定を無効にしてください。
- 有効にすると、Project Validationウィンドウで、現在のシーンがDual Render Fusionで動作するように正しく設定されているかどうかチェックされます。
-
Simulate Fusion Device
- 有効の場合、プレイモード時に、エディターは2つの有効なスクリーンがあるかのように動作します。
- Display 1:スマートフォンの画面 (Dual Render Fusionのホスト画面)
- Display 2:ARグラスの画面
- 無効の場合、プレイモード時に、接続されたデバイスはXRコンテンツしか表示できないかのように動作します。
- この設定には、シーンにFusion Simulatorコンポーネントが必要です。詳しくはFusion Simulatorコンポーネントをご覧ください。
- 有効の場合、プレイモード時に、エディターは2つの有効なスクリーンがあるかのように動作します。
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);
}
}