Unity のカメラCamera in Unity

Mixed reality ヘッドセットを使用すると、holographic 世界の中心になります。When you wear a mixed reality headset, it becomes the center of your holographic world. Unityカメラコンポーネントは、ステレオスコピックレンダリングを自動的に処理します。プロジェクトで "Windows Mixed reality" がデバイスとして選択されている場合 (他の設定の場合)、ヘッドの移動とローテーションに従います。」を参照してください。The Unity Camera component will automatically handle stereoscopic rendering and will follow your head movement and rotation when your project has "Virtual Reality Supported" selected with "Windows Mixed Reality" as the device (in the Other Settings section of the Windows Store Player Settings). 以前のバージョンの Unity では、"Windows Holographic" として表示される場合があります。This may be listed as "Windows Holographic" in older versions of Unity.

ただし、ビジュアルの品質とホログラムの安定性を完全に最適化するには、以下で説明するカメラの設定を設定する必要があります。However, to fully optimize visual quality and hologram stability, you should set the camera settings described below.

注意

これらの設定は、アプリの各シーンのカメラに適用する必要があります。These settings need to be applied to the Camera in each scene of your app.

既定では、Unity で新しいシーンを作成すると、カメラコンポーネントを含むメインのカメラのユーザーオブジェクトが階層に含まれますが、次の設定は適切に適用されません。By default, when you create a new scene in Unity, it will contain a Main Camera GameObject in the Hierarchy which includes the Camera component, but does not have the settings below properly applied.

混合 Reality Toolkit v2 を使用した自動シーンおよびカメラ設定。Automatic Scene and Camera Setup with Mixed Reality Toolkit v2.

ステップバイステップガイドに従って Unity プロジェクトに Mixed Reality Toolkit v2 を追加すると、プロジェクトが自動的に構成されます。Follow the step-by-step guide to add Mixed Reality Toolkit v2 to your Unity project and it will configure your project automatically.

また、次のセクションのガイドを使用して、MRTK なしでプロジェクトを手動で構成することもできます。You can also manually configure the project without MRTK with the guide in the section below.

Holographic とイマーシブヘッドセットHolographic vs. immersive headsets

Unity カメラコンポーネントの既定の設定は、従来の3D アプリケーション用であり、実際の環境がないため、スカイボックスのような背景が必要です。The default settings on the Unity Camera component are for traditional 3D applications which need a skybox-like background as they don't have a real world.

  • イマーシブヘッドセット で実行すると、ユーザーに表示されるすべてのものが表示されるため、スカイボックスを保持することをお勧めします。When running on an immersive headset, you are rendering everything the user sees, and so you'll likely want to keep the skybox.
  • ただし、 HoloLensなどのholographic ヘッドセットで実行する場合、カメラがレンダリングするすべての要素の背後に実際の世界が表示されます。However, when running on a holographic headset like HoloLens, the real world should appear behind everything the camera renders. これを行うには、スカイボックステクスチャではなく、カメラの背景を透明に設定します (HoloLens では、黒は透明としてレンダリングされます)。To do this, set the camera background to be transparent (in HoloLens, black renders as transparent) instead of a Skybox texture:
    1. [階層] パネルでメインカメラを選択します。Select the Main Camera in the Hierarchy panel
    2. [インスペクター] パネルでカメラコンポーネントを見つけて、[クリアフラグ] ドロップダウンを [スカイボックス] から [純色] に変更します。In the Inspector panel, find the Camera component and change the Clear Flags dropdown from Skybox to Solid Color
    3. 背景色ピッカーを選択し、RGBA 値を (0, 0, 0, 0) に変更します。Select the Background color picker and change the RGBA values to (0, 0, 0, 0)

スクリプトコードを使用して、HolographicSettings をチェックすることによって、ヘッドセットがイマーシブであるか holographic であるかを実行時に判断することができます。You can use script code to determine at runtime whether the headset is immersive or holographic by checking HolographicSettings.IsDisplayOpaque.

カメラの配置Positioning the Camera

ユーザーの開始位置を想定している場合、アプリのレイアウトが簡単になります (X:0、Y:0、Z:0)。It will be easier to lay out your app if you imagine the starting position of the user as (X: 0, Y: 0, Z: 0). メインカメラはユーザーのヘッドの移動を追跡しているため、ユーザーの開始位置を設定することによって、メインカメラの開始位置を設定できます。Since the Main Camera is tracking movement of the user's head, the starting position of the user can be set by setting the starting position of the Main Camera.

  1. [階層] パネルの [メインカメラ] を選択します。Select Main Camera in the Hierarchy panel

  2. [インスペクター] パネルで変換コンポーネントを見つけて、位置を (X:0、Y:1、Z:-10) から (X:0、Y:0、Z:0In the Inspector panel, find the Transform component and change the Position from (X: 0, Y: 1, Z: -10) to (X: 0, Y: 0, Z: 0)

    Unity の [インスペクター] ウィンドウの [カメラ]Camera in the Inspector pane in Unity
    Unity の [インスペクター] ウィンドウの [カメラ]Camera in the Inspector pane in Unity

クリッププレーンClip planes

ユーザーに近いコンテンツのレンダリングは、mixed reality で不快に感じられる可能性があります。Rendering content too close to the user can be uncomfortable in mixed reality. カメラコンポーネントでは、近距離と遠くのクリップ平面を調整できます。You can adjust the near and far clip planes on the Camera component.

  1. [階層] パネルでメインカメラを選択します。Select the Main Camera in the Hierarchy panel
  2. [インスペクター] パネルでカメラコンポーネントのクリッピング平面を見つけ、[Near] ボックスを0.3 から. 85 に変更します。In the Inspector panel, find the Camera component Clipping Planes and change the Near textbox from 0.3 to .85. さらに近いコンテンツは、ユーザーの不快感につながる可能性があります。レンダリング距離のガイドラインに従って回避する必要があります。Content rendered even closer can lead to user discomfort and should be avoided per the render distance guidelines.

複数のカメラMultiple Cameras

シーンに複数のカメラコンポーネントがある場合、Unity は、どのステレオスコピックオブジェクトに MainCamera タグがあるかを確認することによって、レンダリングとヘッドトラッキングに使用するカメラを認識します。When there are multiple Camera components in the scene, Unity knows which camera to use for stereoscopic rendering and head tracking by checking which GameObject has the MainCamera tag.

装着済みエクスペリエンスを入力するRecentering a seated experience

固定スケールのエクスペリエンスを構築している場合は、XR を呼び出すことによって、ユーザーの現在の位置に Unity の recenter を持たせることができ ます。InputTracking. Recenter メソッド。If you're building a seated-scale experience, you can recenter Unity's world origin at the user's current head position by calling the XR.InputTracking.Recenter method.

再プロジェクションモードReprojection modes

HoloLens とイマーシブヘッドセットはどちらも、photons が出力されたときにユーザーの実際のヘッド位置の misprediction を調整するために、アプリがレンダリングする各フレームを再プロジェクトします。Both HoloLens and immersive headsets will reproject each frame your app renders to adjust for any misprediction of the user's actual head position when photons are emitted.

既定では、次のようになります。By default:

  • アプリが特定のフレームに対して深度バッファーを提供する場合、イマーシブヘッドセットは位置の再プロジェクションを実行し、位置と向きの両方で misprediction のホログラムを調整します。Immersive headsets will perform positional reprojection, adjusting your holograms for misprediction in both position and orientation, if the app provides a depth buffer for a given frame. 深度バッファーが指定されていない場合、システムは mispredictions の向きのみを修正します。If a depth buffer is not provided, the system will only correct mispredictions in orientation.
  • HoloLens のようなHolographic ヘッドセットは、アプリが深度バッファーを提供するかどうかに関係なく、位置指定再プロジェクションを実行します。Holographic headsets like HoloLens will perform positional reprojection whether the app provides its depth buffer or not. レンダリングは、実際には安定した背景でスパースになることが多いため、HoloLens で深度バッファーを使用せずに位置指定リポジトリを使用できます。Positional reprojection is possible without depth buffers on HoloLens as rendering is often sparse with a stable background provided by the real world.

固定本文でロックされたコンテンツ (たとえば、360度のビデオコンテンツ) を使用して向きのみのエクスペリエンスを構築していることがわかっている場合は、を設定するだけで、reprojection モードを明示的に方向に設定することができます。HolographicSettings ReprojectionMode HolographicReprojectionMode. OrientationOnly.If you know that you are building an orientation-only experience with rigidly body-locked content (e.g. 360-degree video content), you can explicitly set the reprojection mode to be orientation only by setting HolographicSettings.ReprojectionMode to HolographicReprojectionMode.OrientationOnly.

Windows での深度バッファーの共有Sharing your depth buffers with Windows

アプリの深度バッファーを Windows に共有すると、アプリは、レンダリングするヘッドセットの種類に基づいて、ホログラムの安定性の2つのブーストのうちの1つを提供します。Sharing your app's depth buffer to Windows each frame will give your app one of two boosts in hologram stability, based on the type of headset you're rendering for:

  • イマーシブヘッドセットは、深度バッファーが指定されている場合に位置指定再投影を実行でき、位置と向きの両方で misprediction のホログラムを調整します。Immersive headsets can perform positional reprojection when a depth buffer is provided, adjusting your holograms for misprediction in both position and orientation.
  • Holographic のようなヘッドセットは、深度バッファーが指定されると自動的にフォーカスポイントを選択します。これにより、ほとんどのコンテンツと交差する平面に沿ったホログラムの安定性が最適化されます。Holographic headsets like HoloLens will automatically select a focus point when a depth buffer is provided, optimizing hologram stability along the plane that intersects the most content.

Unity アプリで Windows に深度バッファーを提供するかどうかを設定するには、次のようにします。To set whether your Unity app will provide a depth buffer to Windows:

  1. Edit > Project settings > PlayerユニバーサルWindowsプラットフォームtabXRsettingsにアクセスします > 。 > Go to Edit > Project Settings > Player > Universal Windows Platform tab > XR Settings.
  2. [Windows Mixed REALITY SDK] 項目を展開します。Expand the Windows Mixed Reality SDK item.
  3. [深度バッファーの共有を有効にする] チェックボックスをオンまたはオフにします。Check or uncheck the Enable Depth Buffer Sharing check box. この機能は Unity に追加された後に作成された新しいプロジェクトでは既定でチェックされ、アップグレードされた以前のプロジェクトでは既定でオフになります。This will be checked by default in new projects created since this feature was added to Unity and will be unchecked by default for older projects that were upgraded.

Windows に深度バッファーを指定すると、Windows がメインカメラで Unity に設定した近距離および遠方を使用して、深度バッファー内の正規化されたピクセルごとの深度値をメートル単位の距離に正確にマップできる限り、視覚品質が向上します。Providing a depth buffer to Windows can improve visual quality so long as Windows can accurately map the normalized per-pixel depth values in your depth buffer back to distances in meters, using the near and far planes you've set in Unity on the main camera. 通常の方法でレンダリングがハンドルの深さの値を渡す場合は、通常、ここで問題ありません。ただし、既存のカラーピクセルに対してを使用している間に深度バッファーに書き込む半透明のレンダリングパスは、再プロジェクションを混乱させる可能性があります。If your render passes handle depth values in typical ways, you should generally be fine here, though translucent render passes that write to the depth buffer while showing through to existing color pixels can confuse the reprojection. レンダリングパスによって、最終的な深度ピクセルの多くが正確でない深さの値になることがわかっている場合は、[深度バッファーの共有を有効にする] をオフにすると、表示品質が向上する可能性があります。If you know that your render passes will leave many of your final depth pixels with inaccurate depth values, you are likely to get better visual quality by unchecking "Enable Depth Buffer Sharing".

関連項目See also