VR アプリをWindows Mixed Realityに移植する
Windows 10には、イマーシブ ヘッドセットとホログラフィック ヘッドセットのサポートが含まれています。 Oculus Rift や HTC Vive などの他のデバイスは、オペレーティング システムのプラットフォーム API の上に存在するライブラリに依存関係があります。 既存の Win32 Unity VR アプリをWindows Mixed Realityするには、ベンダー固有の VR SDK の使用を、Unityのクロスベンダー VR API とプラグインに再ターゲットする必要があります。
VR アプリをWindows Mixed Realityに移植するには、次の大まかなプロセスが必要です。
- PC で、Windows 10バージョン 1709 (Fall Creator's Update) 以降、または Windows 11 が実行されていることを確認します。
- グラフィックスまたはゲーム エンジンの最新バージョンにアップグレードします。 ゲーム エンジンは、Windows 10 SDK バージョン 10.0.15063.0 以降をサポートする必要があります。
- ミドルウェア、プラグイン、およびコンポーネントをアップグレードします。 アプリにコンポーネントが含まれている場合は、最新バージョンにアップグレードします。
- 最新のUnityバージョンと OpenXR プラグインをターゲットにします。 重複する SDK に対する依存関係を削除します。 コンテンツの対象となるデバイスに応じて、その SDK を削除するか、条件付きでコンパイルします。
- アプリ、エンジン、およびコンポーネントの依存関係に固有のビルドの問題を解決します。
一般的な移植手順
次の一般的な移植手順から始めます。
適切な開発ハードウェアがあることを確認します。 VR 愛好家ガイドには、推奨される開発ハードウェアの一覧が示されています。
Windows 10の最新フライトにアップグレードします。
- Windows 10 Creators Updateをインストールする
- Windows Insider Program に参加します。
- 開発者モードを有効にする
- [設定] > [Update & Security] セクションで Windows Insider Fast フライトに切り替えます。
注:
Windows Mixed Reality プラットフォームはまだアクティブな開発中です。 Windows Insider Program に参加して、Windows Insider Fast フライトにアクセスします。 Insider Skip Ahead リングからプレビュー ビルドを取得しないでください。これらのビルドは Mixed Reality 開発で最も安定していないためです。
Visual Studio を使用している場合は、最新のビルドにアップグレードします。 「Visual Studio 2022 の ツールをインストール する」を参照してください。 Unity ワークロードを使用してゲーム開発をインストールしてください。
移植手順をUnityする
一般的な手順を確認して、開発環境が正しく設定されていることを確認します。 既存のUnity コンテンツを移植するには、次の手順に従います。
1. Windows MR サポートを使用して、Unityの最新のパブリック ビルドにアップグレードする
- 作業を開始する前に、プロジェクトのコピーを保存します。
- Windows Mixed Realityサポートを使用して、Unityの最新の推奨パブリック ビルドをダウンロードします。
- プロジェクトが古いバージョンのUnity上に構築されている場合は、Unityアップグレード ガイドを確認してください。
- Unityの自動 API アップデーターを使用する手順に従います。
- 他の変更を加えてプロジェクトを実行し、エラーや警告を処理する必要があるかどうかを確認します。
2. ミドルウェアを最新バージョンにアップグレードする
Unity更新では、ゲームまたはアプリケーションが依存する 1 つ以上のミドルウェア パッケージを更新する必要がある場合があります。 最新のミドルウェアに更新すると、移植プロセスの残りの部分を通じて成功する可能性が高まります。
3. Win32 で実行するようにアプリケーションをターゲットにする
Unity アプリケーション内から:
- [ File>Build Settings] に移動します。
- [ PC]、[Mac]、[Linux スタンドアロン] を選択します。
- ターゲット プラットフォームを Windows に設定 します。
- アーキテクチャを x86 に設定します。
- [ プラットフォームの切り替え] を選択します。
注:
Steam からのマッチメイキングなど、アプリケーションがデバイス固有のサービスに依存している場合は、今すぐ無効にします。 Windows と同等のサービスは後でフックできます。
4. Mixed Reality OpenXR プラグインのサポートを追加する
Unity バージョンと XR プラグインを選択してインストールします。 Mixed Reality OpenXR プラグインを使用した Unity 2020.3 LTS は、Mixed Reality開発に最適ですが、他のUnity構成のアプリを構築することもできます。
別の VR SDK に固有のライブラリ サポートを削除するか、条件付きでコンパイルします。 これらのアセットは、Windows Mixed Realityと互換性のない方法でプロジェクトの設定とプロパティを変更する可能性があります。
たとえば、プロジェクトが SteamVR SDK を参照している場合は、代わりに Windows Mixed Reality と SteamVR の両方をサポートするUnityの一般的な VR API を使用するようにプロジェクトを更新します。
Unity プロジェクトで、Windows 10 SDKをターゲットにします。
シーンごとに、 カメラを設定します。
5. Windows Mixed Reality ハードウェアを設定する
- イマーシブ ヘッドセットのセットアップの手順を確認します。
- Windows Mixed Reality シミュレーターを使用し、Windows Mixed Realityホームに移動する方法について説明します。
6. ステージを使用してコンテンツをフロアに配置する
さまざまなエクスペリエンス スケールでMixed Realityエクスペリエンスを構築できます。 着席スケール エクスペリエンスを移植する場合は、Unityが固定追跡空間の種類に設定されていることを確認します。
XRDevice.SetTrackingSpaceType(TrackingSpaceType.Stationary);
このコードは、Unityのワールド座標系を設定して、固定参照フレームを追跡します。 静止追跡モードでは、エディターでカメラの既定の場所のすぐ前に配置したコンテンツ (前方は -Z) が、アプリの起動時にユーザーの前に表示されます。 ユーザーの着席した配信元を最新の情報に更新するには、Unityの XR を呼び出します。InputTracking.Recenter メソッド。
スタンディング スケール エクスペリエンスまたはルーム スケール エクスペリエンスを移植する場合は、フロアを基準にしてコンテンツを配置します。 ユーザーが定義したフロア レベルの配信元を表す 空間ステージを使用して、ユーザーのフロアについて説明します。 空間ステージには、最初の実行時に設定したオプションの会議室境界を含めることができます。
これらのエクスペリエンスでは、Unityが RoomScale 追跡空間の種類に設定されていることを確認します。 RoomScale は既定ですが、明示的に設定し、 true
に戻ることを確認します。 この方法では、ユーザーが自分のコンピューターを調整した部屋から離れた場所に移動した状況をキャッチします。
if (XRDevice.SetTrackingSpaceType(TrackingSpaceType.RoomScale))
{
// RoomScale mode was set successfully. App can now assume that y=0 in Unity world coordinate represents the floor.
}
else
{
// RoomScale mode was not set successfully. App can't make assumptions about where the floor plane is.
}
アプリで RoomScale 追跡空間の種類が正常に設定されると、y=0 平面に配置されたコンテンツがフロアに表示されます。 原点 (0, 0, 0) は、ユーザーが部屋のセットアップ中に立っていたフロアの特定の場所であり、-Z はセットアップ中に直面した前方方向を表します。
スクリプト コードでは、UnityEngine.Experimental.XR.Boundary
型で TryGetGeometry
メソッドを呼び出して境界ポリゴンを取得し、境界の種類を指定TrackedArea
。 ユーザーが境界を定義した場合は、頂点の一覧を取得します。 その後、ユーザーが作成したシーンを歩き回ることができる 、部屋規模のエクスペリエンス をユーザーに提供できます。
ユーザーが境界に近づくと、自動的に境界がレンダリングされます。 アプリでは、このポリゴンを使用して境界自体をレンダリングする必要はありません。
結果の例:
詳細については、「Unityの座標系」を参照してください。
7. 入力モデルを操作する
既存のヘッドマウント ディスプレイ (HMD) を対象とする各ゲームまたはアプリケーションには、処理する一連の入力、エクスペリエンスに必要な入力の種類、およびそれらの入力を取得するために呼び出す特定の API があります。 Windows Mixed Realityで利用できる入力を利用するのは簡単で簡単です。
Windows Mixed Realityが入力を公開する方法と、入力がアプリケーションの現在の動作にマップされる方法の詳細については、Unityの入力移植ガイドを参照してください。
重要
HP Reverb G2 コントローラーを使用する場合は、Unityの HP Reverb G2 コントローラーに関するページを参照してください。
8. パフォーマンスをテストして調整する
Windows Mixed Realityは、ハイエンドゲームPCから広範な市場メインストリームPCまで、多くのデバイスで利用できます。 これらのデバイスでは、アプリケーションで使用できるコンピューティングとグラフィックスの予算が大幅に異なります。
重要なコンピューティングとグラフィックスの予算で Premium PC を使用してアプリを移植した場合は、ターゲット 市場を表すハードウェアでアプリをテストしてプロファイリングしてください。 詳細については、「最小 PC ハードウェア互換性ガイドラインWindows Mixed Reality」を参照してください。
Unityと Visual Studio の両方にパフォーマンス プロファイラーが含まれており、Microsoft と Intel の両方がパフォーマンス プロファイルと最適化に関するガイドラインを公開しています。
パフォーマンスの詳細については、「Mixed Realityのパフォーマンスを理解する」を参照してください。 Unityの詳細については、「Unityのパフォーマンスに関する推奨事項」を参照してください。
入力マッピング
入力マッピングの情報と手順については、「Unityの入力移植ガイド」を参照してください。
重要
HP Reverb G2 コントローラーを使用する場合は、Unityの HP Reverb G2 コントローラーに関するページを参照してください。