レンダリングRendering

Holographic のレンダリングを使用すると、アプリケーションは、物理的に物理的に配置されている場合でも、作成した仮想領域内にある場合でも、ユーザーを中心に世界中の正確な場所にホログラムを描画できます。Holographic rendering enables your application to draw a hologram at a precise location in the world around the user, whether it's precisely placed in the physical world or within a virtual realm you've created. ホログラム は、サウンドとライトで構成されるオブジェクトです。Holograms are objects made of sound and light. レンダリングを使用すると、アプリケーションでライトを追加できます。Rendering enables your application to add the light.

デバイス サポートDevice support

機能Feature HoloLens (第 1 世代)HoloLens (1st gen) HoloLens 2HoloLens 2 イマーシブ ヘッドセットImmersive headsets
レンダリングRendering ✔️✔️ ✔️✔️ ✔️✔️

ホログラフィック レンダリングHolographic rendering

Holographic レンダリングは、ユーザーが物理的な世界とホログラムの両方を表示できるようにするための HoloLens のような表示を表示するか、または世界をブロックする Windows Mixed Reality のイマーシブヘッドセットのような不透明なディスプレイを表示するかを認識します。Key to holographic rendering is knowing whether you are rendering to a see-through display like HoloLens that lets the user see both the physical world and your holograms together, or an opaque display like a Windows Mixed Reality immersive headset that blocks out the world.

HoloLens」などの表示を使用するデバイスでは、世界に光を追加します。Devices with see-through displays , such as HoloLens, add light to the world. 黒いピクセルは完全に透明ですが、より明るいピクセルは徐々に不透明になります。Black pixels are fully transparent, while brighter pixels are increasingly opaque. ディスプレイのライトは現実世界の光に追加されるため、白ピクセルは半透明になっています。Because the light from the displays is added to the light from the real world, white pixels are somewhat translucent.

ステレオスコピックのレンダリングでは、ホログラムに対して1つの深さの手掛かりが提供されますが、 接地効果 を追加すると、ホログラムの近くにある表面をより簡単に表示できます。While stereoscopic rendering provides one depth cue for your holograms, adding grounding effects can help users see more easily what surface a hologram is near. 1つの接地方法として、近くの表面にホログラムの周りに光彩を追加し、この光彩に対して影を描画します。One grounding technique is to add a glow around a hologram on the nearby surface, and then render a shadow against this glow. このようにして、影は環境から光を引くように見えます。In this way, your shadow appears to subtract light from the environment. 空間サウンド は、ユーザーがホログラムの距離と相対位置を理解できるようにするための、非常に重要なもう1つの深さの手掛かりです。Spatial sound is another extremely important depth cue, letting users reason about the distance and relative location of a hologram.

Windows Mixed Reality イマーシブヘッドセットなど、 不透明なディスプレイ を持つデバイスは、世界をブロックします。Devices with opaque displays , like Windows Mixed Reality immersive headsets, block out the world. 黒のピクセルは黒で塗りつぶされ、その他の色はユーザーにその色として表示されます。Black pixels are solid black, and any other color appears as that color to the user. アプリケーションは、ユーザーに表示されるすべてのものを表示する役割を担います。Your application is responsible for rendering everything the user sees. これにより、ユーザーに快適なエクスペリエンスを提供するために、一定のリフレッシュレートを維持することがさらに重要になります。This makes it even more important to maintain a constant refresh rate so that users have a comfortable experience.

予測される表示パラメーターPredicted rendering parameters

Mixed reality ヘッドセット (HoloLens とイマーシブヘッドセットの両方) は、ユーザーの周囲に対する相対的な位置と向きを継続的に追跡します。Mixed reality headsets (both HoloLens and immersive headsets) continually track the position and orientation of the user's head relative to their surroundings. アプリケーションで次のフレームの準備が開始されると、フレームがディスプレイに表示される瞬間に、ユーザーのヘッドが今後どのようになるかが予測されます。As your application begins preparing its next frame, the system predicts where the user's head will be in the future at the exact moment that the frame shows up on the displays. この予測に基づいて、システムは、そのフレームに使用するビューと射影変換を計算します。Based on this prediction, the system calculates the view and the projection transforms to use for that frame. アプリケーションで 正しい結果を得るには、これらの変換を使用する必要があり ます。システム指定の変換が使用されていない場合、結果として得られるイメージは実際の世界に配置されず、ユーザー不快感が発生します。Your application must use these transforms to produce correct results ; if system-supplied transforms are not used, the resulting image will not align with the real world, leading to user discomfort.

新しいフレームがディスプレイに到着するタイミングを正確に予測するために、システムは、アプリケーションのレンダリングパイプラインの有効なエンドツーエンドの待機時間を絶えず測定します。Note that to accurately predict when a new frame will reach the displays, the system is constantly measuring the effective end-to-end latency of your application's rendering pipeline. システムはレンダリングパイプラインの長さに合わせて調整されますが、そのパイプラインをできるだけ短くすることで、ホログラムの安定性を向上させることができます。While the system adjusts to the length of your rendering pipeline, you can improve hologram stability by keeping that pipeline as short as possible.

システム予測を強化する高度な手法を使用するアプリケーションでは、システムビューと射影変換をオーバーライドできます。Applications that use advanced techniques to augment the system prediction can override the system view and projection transforms. これらのアプリケーションは、意味のある結果を生成するために、カスタム変換の基礎としてシステム提供の変換を使用する必要があります。These applications must still use system-supplied transforms as a basis for their custom transforms in order to produce meaningful results.

その他の表示パラメーターOther rendering parameters

フレームをレンダリングする場合、システムは、アプリケーションが描画する必要があるバックバッファービューポートを指定します。When rendering a frame, the system specifies the back-buffer viewport in which your application should draw. このビューポートは、多くの場合、フレームバッファーの最大サイズよりも小さくなります。This viewport is often smaller than the full size of the frame buffer. ビューポートのサイズに関係なく、アプリケーションによってフレームがレンダリングされると、システムによってイメージが拡張され、ディスプレイ全体がいっぱいになります。Regardless of the viewport size, once the frame is rendered by the application, the system upscales the image to fill the entirety of the displays.

必要なリフレッシュレートでレンダリングできないアプリケーションの場合、 システムレンダリングパラメーターを構成して 、メモリ負荷とレンダリングコストを削減できます。これは、ピクセルの別名が高くなります。For applications that find themselves unable to render at the required refresh rate, system rendering parameters can be configured to reduce memory pressure and rendering cost at the cost of increased pixel aliasing. バックバッファー形式を変更することもできます。この場合、一部のアプリでは、メモリ帯域幅とピクセルスループットの向上に役立ちます。The back buffer format can also be changed, which for some apps can help to improve memory bandwidth and pixel throughput.

アプリがレンダリングするように求められている表示の視錐、解像度、フレームレートは、フレームごとに変化する可能性があり、左右に異なる場合があります。The rendering frustum, resolution, and framerate in which your app is asked to render might also change from frame to frame, and might differ across the left and right eye. たとえば、 mixed reality キャプチャ (MRC) がアクティブで、 フォト/ビデオカメラビューの構成 がオプトインされていない場合、1つ目の目がより大きな視界や解像度でレンダリングされる可能性があります。For example, when mixed reality capture (MRC) is active and the photo/video camera view configuration is not opted-into, one eye might be rendered with a larger FOV or resolution.

特定のフレームに対して、アプリケーションは、システムによって提供されるビュー変換、プロジェクション変換、およびビューポートの解決を使用してレンダリング する必要があり ます。For any given frame, your app must render using the view transform, projection transform, and viewport resolution provided by the system. また、アプリケーションでは、レンダリングまたは表示パラメーターがフレーム間で固定されたままであると想定することはできません。Additionally, your application must never assume that any rendering or view parameter remains fixed from frame-to-frame. Unity のようなエンジンは、これらすべての変換を独自のカメラオブジェクトで処理するので、ユーザーの物理的な動きとシステムの状態が常に尊重されます。Engines like Unity handle all these transforms for you in their own camera objects so that the physical movement of your users and the state of the system is always respected. アプリケーションで世界中のユーザーの仮想移動が許可されている場合 (ゲームパッドでのサムスティックの使用など)、そのオブジェクトを移動する、カメラの上に親のリモート処理オブジェクトを追加できます。If your application allows for virtual movement of the user through the world (e.g. using the thumbstick on a gamepad), you can add a parent rig object above the camera that moves it around. これにより、カメラにユーザーの仮想と物理の両方の動きが反映されます。This causes the camera to reflect both the user's virtual and physical motion. アプリケーションで、システムによって提供されるビュー変換、プロジェクション変換、またはビューポートの各ディメンションを変更する場合は、適切な OVERRIDE APIを呼び出すことによってシステムに通知する必要があります。If your application modifies the view transform, projection transform, or viewport dimension provided by the system, it must inform the system by calling the appropriate override API.

Holographic レンダリングの安定性を向上させるには、アプリで、レンダリングに使用した深度バッファーを各フレームに Windows に提供する必要があります。To enhance the stability of your holographic rendering, your app should provide to Windows each frame the depth buffer it used for rendering. アプリが深度バッファーを提供している場合は、カメラからの深さをメートル単位で表した、一貫した深さの値を持つ必要があります。If your app does provide a depth buffer, it should have coherent depth values, with depth expressed in meters from the camera. これにより、ユーザーのヘッドが予測された位置から少しずれている場合に、システムがピクセルごとの深度データを使用して、コンテンツの安定化を向上させることができます。This enables the system to use your per-pixel depth data to better stabilize content if the user's head ends up slightly offset from the predicted location. 深度バッファーを提供できない場合は、フォーカスポイントと法線を提供して、コンテンツの大部分を切削する平面を定義することができます。If you are not able to provide your depth buffer, you can provide a focus point and normal, defining a plane that cuts through most of your content. 深度バッファーとフォーカスプレーンの両方が指定されている場合、システムは両方を使用する可能性があります。If both the depth buffer and a focus plane are provided, the system might use both. 特に、アプリケーションで動きがあるホログラムを表示する場合は、深度バッファーと、速度ベクトルを含むフォーカスポイントの両方を提供すると便利です。In particular, it is helpful to provide both the depth buffer and a focus point that includes a velocity vector when your application displays holograms that are in motion.

トピックの下位レベルの詳細については、 DirectX でのレンダリング に関する記事をご覧ください。Refer to Rendering in DirectX article for low-level details about his topic.

Holographic カメラHolographic cameras

Windows Mixed Reality では、 holographic カメラ の概念が導入されています。Windows Mixed Reality introduces the concept of a holographic camera . Holographic カメラは、3D グラフィックステキストにある従来のカメラに似ています。外部 (位置と向き) と固有のカメラプロパティの両方を定義します。Holographic cameras are similar to the traditional camera found in 3D graphics texts; they define both the extrinsic (position and orientation) and intrinsic camera properties. (例: ビューのフィールドは、仮想3D シーンを表示するために使用されます)。従来の3D カメラとは異なり、アプリケーションはカメラの位置、向き、および組み込みプロパティを制御していません。(For example:, field-of-view is used to view a virtual 3D scene.) Unlike traditional 3D cameras, the application is not in control of the position, orientation, and intrinsic properties of the camera. 代わりに、holographic カメラの位置と向きは、ユーザーの移動によって暗黙的に制御されます。Rather, the position and orientation of the holographic camera is implicitly controlled by the user's movement. ユーザーの移動は、ビュー変換を使用してフレーム単位でアプリケーションにリレーされます。The user's movement is relayed to the application on a frame-by-frame basis via a view transform. 同様に、カメラの組み込みプロパティはデバイスの調整された光によって定義され、射影変換を介してフレーム単位でリレーされます。Likewise, the camera's intrinsic properties are defined by the device's calibrated optics and relayed frame-by-frame via the projection transform.

一般に、1つのステレオカメラ用にアプリケーションがレンダリングされます。In general, your application will render for a single stereo camera. ただし、堅牢なレンダリングループでは、複数のカメラがサポートされ、mono カメラとステレオカメラの両方がサポートされます。However, a robust rendering loop will support multiple cameras, and will support both mono and stereo cameras. たとえば、問題のヘッドセットの形状に応じて、ユーザーが mixed reality capture (MRC) などの機能をアクティブ化した場合に、別の観点からアプリケーションを表示するように要求することがあります。For example, the system might ask your application to render from an alternate perspective when the user activates a feature like mixed reality capture (MRC), depending on the shape of the headset in question. 複数のカメラをサポートするアプリケーションでは、サポートできるカメラの種類オプトインすることによって、それらを取得できます。Applications that can support multiple cameras get them by opting-in to the kind of cameras they can support.

ボリューム レンダリングVolume rendering

3D で医療 Mri やエンジニアリングボリュームをレンダリングする場合、多くの場合、 ボリュームレンダリング 手法が使用されます。When rendering medical MRIs or engineering volumes in 3D, volume rendering techniques are often used. これらの手法は、特に、ユーザーが頭を移動するだけで、キーの角度からそのようなボリュームを自然に表示できる mixed reality で特に興味深いものです。These techniques can be particularly interesting in mixed reality, where users can naturally view such a volume from key angles, simply by moving their head.

HoloLens でサポートされている解像度 (第1世代)Supported resolutions on HoloLens (1st gen)

  • ビューポートの最大サイズは、 HolographicDisplayのプロパティです。The max viewport size is a property of the HolographicDisplay. HoloLens は、既定では、ビューポートの最大サイズ (720p (1268x720)) に設定されています。HoloLens is set to the maximum viewport size, which is 720p (1268x720), by default.
  • ビューポートのサイズは、HolographicCamera で ViewportScaleFactor を設定することによって変更できます。The viewport size can be changed by setting the ViewportScaleFactor on the HolographicCamera. このスケール係数は 0 ~ 1 の範囲内です。This scale factor is in the range of 0 to 1.
  • HoloLens (第1世代) でサポートされる最も低いビューポートのサイズは、720p の50% です。これは 360p (634x360) です。The lowest supported viewport size on HoloLens (1st gen) is 50% of 720p, which is 360p (634x360). これは0.5 の ViewportScaleFactor です。This is a ViewportScaleFactor of 0.5.
  • 視覚の劣化によって540p より低いものは推奨されませんが、ピクセルフィルレートのボトルネックを特定するために使用できます。Anything lower than 540p is not recommended due to visual degradation, but can be used to identify bottlenecks in pixel fill rate.

HoloLens 2 でサポートされている解像度Supported resolutions on HoloLens 2

  • サポートされているレンダーターゲットの最大サイズは、 ビュー構成のプロパティです。The current and maximum supported render target sizes are properties of the view configuration. HoloLens 2 は、既定では1440x936 という最大レンダーターゲットサイズに設定されています。HoloLens 2 is set to the maximum render target size, which is 1440x936, by default.
  • アプリでは、RequestRenderTargetSize メソッドを呼び出して新しいレンダーターゲットサイズを要求することによって、レンダーターゲットバッファーのサイズを変更できます。Apps can change the size of render target buffers by calling the RequestRenderTargetSize method to request a new render target size. 新しいレンダーターゲットサイズが選択されます。これは、要求されたレンダーターゲットサイズ以上になります。A new render target size will be chosen, which meets or exceeds the requested render target size. この API はレンダーターゲットバッファーのサイズを変更します。これにより、GPU でのメモリの再割り当てが必要になります。This API changes the size of the render target buffer, which requires memory reallocation on the GPU. この場合の影響: レンダーターゲットのサイズをスケールダウンして GPU のメモリ不足を減らすことができます。また、このメソッドを高頻度で呼び出すことはできません。The implications of this include: The render target size can be scaled down to reduce memory pressure on the GPU, and this method should not be called at high frequency.
  • アプリでは、HoloLens 1 と同じ方法でビューポートのサイズを変更することもできます。Apps can still change the viewport size in the same way that they did for HoloLens 1. これにより、GPU でのメモリの再割り当ては発生しません。そのため、高い頻度で変更できますが、GPU のメモリ負荷を軽減するために使用することはできません。This does not cause memory reallocation on the GPU, so it can be changed at high frequency, but it cannot be used to reduce memory pressure on the GPU.
  • HoloLens 2 でサポートされている最も低いビューポートのサイズは634x412 です。The lowest supported viewport size on HoloLens 2 is 634x412. これは、既定のレンダーターゲットサイズが使用されている場合、約0.44 の ViewportScaleFactor になります。This is a ViewportScaleFactor of approximately 0.44 when the default render target size is in use.
  • サポートされている最も低いビューポートのサイズよりも少ないレンダーターゲットサイズが指定されている場合、ビューポートのスケールファクターは無視されます。If a render target size is provided which is smaller than the lowest supported viewport size, the viewport scale factor will be ignored.
  • 視覚の劣化によって540p より低いものは推奨されませんが、ピクセルフィルレートのボトルネックを特定するために使用できます。Anything lower than 540p is not recommended due to visual degradation, but can be used to identify bottlenecks in pixel fill rate.

関連項目See also