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に移植するには、次の大まかなプロセスが必要です。

  1. PC で、Windows 10、バージョン 1709 (Fall Creator's Update) 以降、またはWindows 11が実行されていることを確認します。
  2. グラフィックスまたはゲーム エンジンの最新バージョンにアップグレードします。 ゲーム エンジンは、Windows 10 SDK バージョン 10.0.15063.0 以降をサポートする必要があります。
  3. ミドルウェア、プラグイン、コンポーネントをアップグレードします。 アプリにコンポーネントが含まれている場合は、最新バージョンにアップグレードします。
  4. 最新の Unity バージョンと OpenXR プラグインをターゲットにします。 重複する SDK の依存関係を削除します。 コンテンツの対象となるデバイスに応じて、その SDK を削除するか、条件付きでコンパイルします。
  5. アプリ、エンジン、およびコンポーネントの依存関係に固有のビルドの問題を処理します。

一般的な移植手順

次の一般的な移植手順から始めます。

  1. 適切な開発ハードウェアがあることを確認します。 VR 愛好家ガイドには、推奨される開発ハードウェアが一覧表示されています。

  2. Windows 10の最新のフライトにアップグレードします。

    1. Windows 10 Creators Update をインストールする
    2. Windows Insider プログラムに参加します
    3. 開発者モードを有効にする
    4. [設定>] [更新プログラム] & [セキュリティ] セクションを使用して、Windows Insider ファースト フライトに切り替えます

    注意

    Windows Mixed Reality プラットフォームは、まだ開発中です。 Windows Insider プログラムに参加して、Windows Insider ファースト フライトにアクセスします。 Insider Skip Ahead リングからプレビュー ビルドを取得しないでください。これらのビルドは Mixed Reality 開発で最も安定していないためです。

  3. Visual Studio を使用している場合は、最新のビルドにアップグレードします。 「Visual Studio 2022 の ツールをインストール する」を参照してください。 Unity を使用した ゲーム開発 ワークロードをインストールしてください。

Unity の移植手順

一般的な手順を確認して、開発環境が正しく設定されていることを確認します。 既存の Unity コンテンツを移植するには、次の手順に従います。

1. Windows MR サポートを使用して Unity の最新のパブリック ビルドにアップグレードする

  1. 作業を開始する前に、プロジェクトのコピーを保存します。
  2. Windows Mixed Realityサポートを使用して、Unity の最新の推奨パブリック ビルドをダウンロードします。
  3. プロジェクトが以前のバージョンの Unity 上に構築されている場合は、 Unity アップグレード ガイドを確認してください。
  4. Unity の 自動 API アップデーターを使用する手順に従います。
  5. プロジェクトを実行し、エラーや警告を処理するために、他の変更を行う必要があるかどうかを確認します。

2. ミドルウェアを最新バージョンにアップグレードする

Unity の更新プログラムでは、ゲームまたはアプリケーションが依存する 1 つ以上のミドルウェア パッケージを更新することが必要になる場合があります。 最新のミドルウェアに更新すると、移植プロセスの残りの部分で成功する可能性が高くなります。

3. Win32 で実行するようにアプリケーションをターゲットにする

Unity アプリケーション内部から:

  1. [ファイル の>ビルド設定] に移動します。
  2. [ PC]、[Mac]、[Linux スタンドアロン] を選択します。
  3. ターゲット プラットフォームを Windows に設定 します
  4. アーキテクチャを x86 に設定します。
  5. [Switch Platform](プラットフォームの切り替え) を選択します。

注意

アプリケーションにデバイス固有のサービス (Steam からの一致作成など) への依存関係がある場合は、ここで無効にします。 Windows と同等のサービスは後でフックできます。

4. Mixed Reality OpenXR プラグインのサポートを追加する

  1. Unity バージョンと XR プラグインを選択してインストールしますMixed Reality OpenXR プラグインを使用した Unity 2020.3 LTS はMixed Reality開発に最適ですが、他の Unity 構成でアプリをビルドすることもできます。

  2. 別の VR SDK に固有のライブラリ サポートを削除するか、条件付きでコンパイルします。 これらのアセットは、プロジェクトの設定とプロパティを、Windows Mixed Realityと互換性のない方法で変更する可能性があります。

    たとえば、プロジェクトが SteamVR SDK を参照している場合は、代わりに、Windows Mixed Realityと SteamVR の両方をサポートする Unity の一般的な VR API を使用するようにプロジェクトを更新します。

  3. Unity プロジェクトで、Windows 10 SDKをターゲットにします

  4. シーンごとに、 カメラを設定します

5. Windows Mixed Reality ハードウェアを設定する

  1. イマーシブ ヘッドセットのセットアップの手順を確認します。
  2. 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」を参照してください。

UnityVisual Studio の両方にパフォーマンス プロファイラーが含まれ、パフォーマンスのプロファイリングと最適化に関する MicrosoftIntel の両方に関する発行ガイドラインがあります。

パフォーマンスの詳細については、「Mixed Realityのパフォーマンスを理解する」を参照してください。 Unity の詳細については、「Unity の パフォーマンスに関する推奨事項」を参照してください。

入力マッピング

入力マッピングの情報と手順については、「 Unity の入力移植ガイド」を参照してください。

重要

HP Reverb G2 コントローラーを使用する場合は、 Unity の HP Reverb G2 コントローラーに 関するページを参照してください。

こちらもご覧ください