Unity でのカメラの設定

Mixed Reality ヘッドセットを装着すると、それがホログラフィックの世界の中心になります。 Unity の Camera コンポーネントは、ステレオスコピック レンダリングを自動的に処理し、頭の動きと回転を追跡します。 ただし、視覚効果とホログラムの安定性を完全に最適化するには、以下で説明するカメラ設定を設定する必要があります。

HoloLens と VR イマーシブ ヘッドセット

Unity の Camera コンポーネントの既定の設定は、従来の 3D アプリケーション用であり、現実世界を持たないため、スカイボックスのような背景を必要とします。

  • イマーシブ ヘッドセットで実行すると、ユーザーに表示されるすべてのものがレンダリングされるため、スカイボックスを維持することをお勧めします。
  • ただし、HoloLens のような ホログラフィック ヘッドセットで実行すると、カメラがレンダリングするすべての要素の背後に現実世界が表示されます。 スカイボックス テクスチャではなく、カメラの背景を透明 (HoloLens では、黒で透明としてレンダリング) に設定します。
    1. [階層] パネルで [メイン カメラ] を選択します
    2. [インスペクター] パネルで、Camera コンポーネントを見つけて、[フラグのクリア] ドロップダウンを [スカイボックス] から [単色] に変更します
    3. [背景] カラー ピッカーを選択し、[RGBA] の値を (0、0、0、0) に変更します
      1. これをコードから設定する場合は、Unity の Color.clear を使用できます

MRTK は、カメラ システム プロファイル の構成に基づいて、特定のカメラ設定を自動的に処理します。

名前空間:Microsoft.MixedReality.Toolkit.CameraSystem
種類:MixedRealityCameraSystem

カメラの不透明性を確認するために、MixedRealityCamera システムには IsOpaque プロパティがあります。

CoreServices.CameraSystem.IsOpaque;

カメラ設定

開発しているエクスペリエンスの種類に関係なく、メイン カメラは常にデバイスのヘッドマウント ディスプレイに接続されている主要なステレオ レンダリング コンポーネントです。 ユーザーの開始位置を (X: 0, Y: 0, Z: 0) に想定すると、アプリのレイアウトが簡単になります。 メイン カメラはユーザーの頭の移動を追跡するため、メイン カメラの開始位置を設定することで、ユーザーの開始位置を設定できます。

行う必要がある中心的な選択は、開発するヘッドセットが HoloLens 用と VR イマーシブ用のどちらであるかです。 それが完了したら、該当する設定セクションにスキップします。

HoloLens カメラの設定

HoloLens アプリの場合は、シーン環境にロックするオブジェクトに対してアンカーを使用する必要があります。 安定性を最大限に高め、複数の部屋にアンカーを作成するには、無制限空間を使用することをお勧めします。

このステップバイ ステップ チュートリアルに従って、Unity プロジェクトに新しい Mixed Reality ツールキットを追加して自動的に構成します。 Unity 用の MRTK の MixedRealityPlayspace クラスを直接操作して、[ターゲット スケール][ワールド] に設定することもできます。

MRTK 設定ウィンドウ

MRTK は、プレイスペースとカメラの位置を自動的に処理する必要がありますが、再確認することをお勧めします。

MRTK プレイスペース

  1. [階層] パネルで、[MixedRealityPlayspace] オブジェクトを展開し、[メイン カメラ] の子オブジェクトを検索します
  2. [インスペクター] パネルで [変換] コンポーネントを見つけて、[位置](X: 0、Y: 0、Z: 0) に変更します

VR カメラ設定

Windows Mixed Reality は、向き限定および座位のアプリからルーム スケールのアプリまで、広範なエクスペリエンスのスケールのアプリをサポートしています。 HoloLens では、さらに進んで、ユーザーが 5 m を超えて歩き、建物の床全体を探索できるワールド スケールのアプリを構築できます。

Unity で複合現実エクスペリエンスを構築する最初の手順は、アプリがターゲットとするエクスペリエンスのスケールを決定することです。

ルーム スケールまたはスタンディング エクスペリエンス

Note

HL2 用に構築する場合は、目の高さのエクスペリエンスを作成するか、シーンの理解を使用してシーンの床を推論することを検討することをお勧めします。

Unity 用の MRTK の MixedRealityPlayspace クラスを使用し、[ターゲット スケール][ルーム] または [スタンディング] に設定します。

MRTK 設定ウィンドウ

MRTK は、プレイスペースとカメラの位置を自動的に処理する必要がありますが、再確認することをお勧めします。

MRTK プレイスペース

  1. [階層] パネルで、[MixedRealityPlayspace] オブジェクトを展開し、[メイン カメラ] の子オブジェクトを検索します
  2. [インスペクター] パネルで [変換] コンポーネントを見つけて、[位置](X: 0、Y: 0、Z: 0) に変更します

座位のエクスペリエンス

Unity 用の MRTK の MixedRealityPlayspace クラスを使用し、[ターゲット スケール][座位] に設定します。

MRTK 設定ウィンドウ

MRTK は、プレイスペースとカメラの位置を自動的に処理する必要がありますが、再確認することをお勧めします。

MRTK プレイスペース

  1. [階層] パネルで、[MixedRealityPlayspace] オブジェクトを展開し、[メイン カメラ] の子オブジェクトを検索します
  2. [インスペクター] パネルで [変換] コンポーネントを見つけて、[位置](X: 0、Y: 0、Z: 0) に変更します

カメラの背景の設定

MRTK を使用している場合、カメラの背景は自動的に構成および管理されます。 XR SDK または従来の WSA プロジェクトでは、HoloLens でカメラの背景を黒一色に設定し、スカイボックスを VR 用にしておくことをお勧めします。

複数のカメラの使用

シーンに複数の Camera コンポーネントがある場合、Unity は、MainCamera タグがある GameObject に基づいてステレオスコピック レンダリングに使用するカメラを認識します。 従来の XR では、このタグを使用してヘッド トラッキングも同期します。 XR SDK では、ヘッド トラッキングは、カメラにアタッチされている TrackedPoseDriver スクリプトによって行われます。

深度バッファーの共有

アプリの深度バッファーを Windows の各フレームで共有すると、レンダリングするヘッドセットの種類に基づいて、アプリのホログラムの安定性において 2 つのいずれかが向上します。

  • VR イマーシブ ヘッドセットは、深度バッファーが指定されると位置の再投影を処理し、位置と向きの両方で予測ミスがないようにホログラムを調整できます。
  • HoloLens ヘッドセットには、いくつかの異なる方法があります。 HoloLens 1 は、深度バッファーが指定されるとフォーカス ポイントを自動的に選択し、ほとんどのコンテンツと交差する平面に沿ったホログラムの安定性を最適化します。 HoloLens 2 は、Depth LSR (「解説」を参照) を使用してコンテンツを安定させます。

MRTK の構成ダイアログは、XR SDK と従来の WSA の両方に対して深度バッファー設定を試みますが、これらのタブをチェックし、Unity の設定を確認することをお勧めします。

クリッピング平面の使用

ユーザーに近すぎるコンテンツのレンダリングは、複合現実では不快に感じられる可能性があります。 Camera コンポーネントでは、近距離と遠距離のクリッピング平面を調整できます。

  1. [階層] パネルで [メイン カメラ] を選択します
  2. [インスペクター] パネルで、Camera コンポーネントの [クリッピング平面] を見つけて、[近距離] テキスト ボックスを [0.3] から [0.85] に変更します。 さらに近くにレンダリングされたコンテンツは、ユーザーに不快感を与える可能性があるため、レンダリング距離のガイドラインに従って回避する必要があります。

カメラをもう一度中心に置く

座位のエクスペリエンスを構築する場合は、レガシ XR では XR.InputTracking.Recenter メソッド、または XR SDK では XRInputSubsystem.TryRecenter を呼び出すことによって、ユーザーの現在の頭の位置で Unity のワールド原点をもう一度中心に置くことができます。

テレポーテーション

この機能は、通常、VR エクスペリエンス用に予約されています。

MRTK には、多関節ハンドとコントローラーをまたいで自動的に機能する、組み込みのテレポート システムが用意されています。

再投影モード

HoloLens とイマーシブ ヘッドセットはどちらも、アプリがレンダリングする各フレームを再投影して、フォトンが放出されたときのユーザーの実際の頭の位置の予測ミスを調整します。

既定では:

  • アプリが特定のフレームに深度バッファーを提供する場合、VR イマーシブ ヘッドセットは位置の再投影を処理します。 イマーシブ ヘッドセットでは、位置と向きの両方で予測ミスが発生しないようにホログラムの調整も行われます。 深度バッファーが指定されていない場合、システムは向きの予測ミスのみを修正します。
  • HoloLens 2 のようなホログラフィック ヘッドセットは、アプリがその深度バッファーを提供するかどうかに関係なく、位置の再投影を処理します。 レンダリングは現実世界によって提供される安定した背景でまばらであることが多いため、HoloLens の深度バッファーなしで位置の再投影が可能です。

MRTK には、現時点では再投影モード用のヘルパーはありません。 詳細については、その他のタブのいずれかを参照してください。

次の開発チェックポイント

ここで述べる MRTK の主要機能の説明は、Microsoft による Unity 開発ガイドの一部です。 ここから、次の構成要素を続けることができます。

または、Mixed Reality プラットフォームの機能と API に移動します。

いつでも Unity 開発チェックポイントに戻ることができます。

関連項目