ホログラムの安定性Hologram stability

概要Overview

安定したホログラムを実現するために、HoloLens にはイメージ安定化パイプラインが組み込まれています。To achieve stable holograms, HoloLens has a built-in image stabilization pipeline. 安定化パイプラインはバックグラウンドで自動的に動作するため、有効にするための追加の手順を実行する必要はありません。The stabilization pipeline works automatically in the background, so you don't need to take any extra steps to enable it. ただし、ホログラムの安定性を向上させ、安定性を低下させるシナリオを回避する手法を使用する必要があります。However, you should exercise techniques that improve hologram stability and avoid scenarios that reduce stability.

ホログラムの品質に関する用語Hologram quality terminology

ホログラムの品質は、優れた環境と優れたアプリ開発の結果となります。The quality of holograms is a result of good environment and good app development. HoloLens が周囲を追跡できる環境で、1秒あたりの定数60フレームで実行されるアプリは、ホログラムと照合座標系が同期されていることを保証します。ユーザーの観点からは、静止するホログラムは環境に対して相対的に移動しません。Apps running at a constant 60 frames-per-second in an environment where HoloLens can track the surroundings ensures the hologram and the matching coordinate system are in sync. From a user's perspective, holograms that are meant to be stationary won't move relative to the environment.

次の用語は、環境に関する問題を特定している場合や、表示速度が一貫していない場合、またはその他の場合に役立ちます。The following terminology can help you when you're identifying problems with the environment, inconsistent or low rendering rates, or anything else.

  • 精度.Accuracy. ホログラムが世界中にロックされ、実際の世界に配置されると、周囲の環境を基準とした相対的な場所を維持し、ユーザーの動きや小規模な環境の変化に依存しないようにする必要があります。Once the hologram is world-locked and placed in the real world, it should stay where it's placed relative to the surrounding environment and independent of user motion or small and sparse environment changes. 後でホログラムが予期しない場所に表示される場合は、精度の問題です。If a hologram later appears in an unexpected location, it's an accuracy problem. このようなシナリオは、2つの異なるルームが同一である場合に発生する可能性があります。Such scenarios can happen if two distinct rooms look identical.
  • ずれ.Jitter. ユーザーは、ぶれの高周波数のぶれとしてのジッターを観察します。これは、環境の追跡が低下した場合に発生する可能性があります。Users observe jitter as high frequency shaking of a hologram, which can happen when tracking of the environment degrades. ユーザーの場合、ソリューションはセンサーチューニングを実行しています。For users, the solution is running sensor tuning.
  • Judder.Judder. レンダリング周波数が低いと、ホログラムの動きとダブルイメージが不均一になります。Low rendering frequencies result in uneven motion and double images of holograms. Judder は、モーションを持つホログラムで特に顕著です。Judder is especially noticeable in holograms with motion. 開発者は、 60 FPS の定数を維持する必要があります。Developers need to maintain a constant 60 FPS.
  • 誤差.Drift. ユーザーは、最初に配置された場所から離れるように、ホログラムがずれていることを確認します。Users see drift as a hologram appears to move away from where it was originally placed. 特に、完全にマップされていない環境の一部で、ホログラムが空間アンカーから遠く離れた場合に、誤差が発生します。Drift happens when holograms are placed far away from spatial anchors, particularly in parts of the environment that aren't fully mapped. 空間アンカーの近くにホログラムを作成すると、誤差の可能性が低くなります。Creating holograms close to spatial anchors lowers the likelihood of drift.
  • Jumpiness.Jumpiness. ホログラムが位置をときどき "ポップ" または "ジャンプ" するとき。When a hologram "pops" or "jumps" away from its location occasionally. Jumpiness は、追跡によって、環境の最新の理解に一致するようにホログラムが調整されると発生する可能性があります。Jumpiness can occur as tracking adjusts holograms to match updated understanding of your environment.
  • スイム.Swim. ユーザーの頭の動きに対応する、ホログラムが sway に表示されるとき。When a hologram appears to sway corresponding to the motion of the user's head. スイムは、アプリケーションに再プロジェクションが完全に実装されていない場合、および HoloLens が現在のユーザーに対して調整されていない場合に発生します。Swim occurs when the application hasn't fully implemented reprojection, and if the HoloLens isn't calibrated for the current user. ユーザーは調整アプリケーションを再実行して問題を解決できます。The user can rerun the calibration application to fix the issue. 開発者は、安定化平面を更新して安定性をさらに向上させることができます。Developers can update the stabilization plane to further enhance stability.
  • 色の分離。Color separation. HoloLens のディスプレイは色分けされています。これは、60 Hz (個々の色フィールドは 240 Hz で表示されます) の赤、緑、青、緑の点滅色チャネルです。The displays in HoloLens are color sequential displays, which flash color channels of red-green-blue-green at 60 Hz (individual color fields are shown at 240 Hz). ユーザーが目の付いた可動ホログラムを追跡するたびに、そのホログラムの先頭および末尾のエッジは、その構成色で分離され、レインボー効果が生成されます。Whenever a user tracks a moving hologram with their eyes, that hologram's leading and trailing edges separate in their constituent colors, producing a rainbow effect. 分離の度合いは、ホログラムの速度に依存します。The degree of separation is dependent upon the speed of the hologram. 場合によっては、固定されたホログラムを見ながら1頭を移動すると、色の分離 と呼ばれるレインボー効果が得られることもあります。In some rarer cases, moving ones head rapidly while looking at a stationary hologram can also result in a rainbow effect, which is called color separation.

フレーム レートFrame rate

フレームレートは、ホログラムの安定性の最初の柱です。Frame rate is the first pillar of hologram stability. ホログラムが世界中で安定して表示されるようにするには、ユーザーに表示される各イメージに、正しい位置にホログラムが描画されている必要があります。For holograms to appear stable in the world, each image presented to the user must have the holograms drawn in the correct spot. では、HoloLens の更新時に240に1秒間隔で表示され、新たにレンダリングされたイメージごとに4つの色フィールドが表示されます。これにより、60 FPS (1 秒あたりのフレーム数) のユーザーエクスペリエンスが得られます。The displays on HoloLens refresh 240 times a second, showing four separate color fields for each newly rendered image, resulting in a user experience of 60 FPS (frames per second). アプリケーション開発者は、可能な限り最良の方法を提供するために、60 FPS を維持する必要があります。これにより、オペレーティングシステムに対して16ミリ秒ごとに新しいイメージが一貫して提供されます。To provide the best experience possible, application developers must maintain 60 FPS, which translates to consistently providing a new image to the operating system every 16 milliseconds.

60 FPSホログラムを実際の世界に座っているように描画するには、ユーザーの位置からイメージをレンダリングする必要があります。60 FPS To draw holograms to look like they're sitting in the real world, HoloLens needs to render images from the user's position. イメージのレンダリングには時間がかかるため、ディスプレイに画像が表示されたときのユーザーの頭の位置が HoloLens によって予測されます。Since image rendering takes time, HoloLens predicts where a user's head will be when the images are shown in the displays. ただし、この予測アルゴリズムは概数です。However, this prediction algorithm is an approximation. HoloLens には、レンダリングされたイメージを調整して、予測されるヘッド位置と実際のヘッド位置との違いを考慮するハードウェアがあります。HoloLens has hardware that adjusts the rendered image to account for the discrepancy between the predicted head position and the actual head position. この調整によって、ユーザーに表示される画像が、正しい位置から表示されるかのように見えるようになり、ホログラムは安定したものになります。The adjustment makes the image the user sees appear as if it's rendered from the correct location, and holograms feel stable. イメージの更新は、小さな変更によって最適に機能します。また、視差のようにレンダリングされたイメージ内の特定の項目を完全に修正することはできません。The image updates work best with small changes, and it can't completely fix certain things in the rendered image like motion-parallax.

60 FPS でレンダリングすることにより、安定したホログラムの作成に役立つ3つの作業を行います。By rendering at 60 FPS, you're doing three things to help make stable holograms:

  1. イメージのレンダリングと、そのイメージがユーザーに表示されるまでの全体的な待機時間を最小限に抑えます。Minimizing the overall latency between rendering an image and that image being seen by the user. ロックステップで実行されているゲームとレンダースレッドを含むエンジンでは、30FPS で実行すると、33.3 ミリ秒の余分な待機時間が追加される可能性があります。In an engine with a game and a render thread running in lockstep, running at 30FPS can add 33.3 ms of extra latency. 待機時間を減らすと、予測エラーが減少し、ホログラムの安定性が向上します。Reducing latency decreases prediction error and increases hologram stability.
  2. これにより、すべてのイメージがユーザーの目に到達するまでの待機時間が一貫しています。Making it so every image reaching the user's eyes have a consistent amount of latency. 30 fps でレンダリングした場合でも、画像は 60 FPS で表示されます。つまり、同じ画像が1行に2回表示されます。If you render at 30 fps, the display still displays images at 60 FPS, meaning the same image will be displayed twice in a row. 2番目のフレームには、最初のフレームよりも16.6 ミリ秒の待機時間があり、より顕著なエラーの数を修正する必要があります。The second frame will have 16.6-ms more latency than the first frame and will have to correct a more pronounced amount of error. このようなエラーの大きさが不整合になると、60 Hz の望ましくない judder が発生する可能性があります。This inconsistency in error magnitude can cause unwanted 60 Hz judder.
  3. 一様ではない動作と二重画像によって特徴付けられるジャダーの出現を減らします。Reducing the appearance of judder, which is characterized by uneven motion and double images. 高速なホログラムの動きと低いレンダリング レートは、顕著なジャダーに関連しています。Faster hologram motion and lower render rates are associated with more pronounced judder. 常に 60 FPS を維持しておくことは、特定の可動ホログラムの judder を回避するのに役立ちます。Striving to maintain 60 FPS at all times will help avoid judder for a given moving hologram.

フレームレートの一貫性フレームレートの一貫性は、1秒あたりの高フレーム数と同様に重要です。Frame-rate consistency Frame rate consistency is as important as a high frames-per-second. 場合によっては、コンテンツが豊富なアプリケーションでフレームが破棄されることはありません。また、HoloLens は、不定期に発生した障害から復旧するための高度なアルゴリズムを実装します。Occasionally dropped frames are inevitable for any content-rich application, and the HoloLens implements some sophisticated algorithms to recover from occasional glitches. ただし、絶えず変動するフレームレートは、ユーザーにとって、より低いフレームレートで一貫して実行するよりもはるかに顕著です。However, a constantly fluctuating framerate is a lot more noticeable to a user than running consistently at lower frame rates. たとえば、5つのフレーム (これらの5つのフレームの間は 60 FPS) に対してスムーズにレンダリングし、次の10フレーム (10 フレームの間は 30 FPS) に対して他のフレームをすべてドロップするアプリケーションは、30 FPS で一貫してレンダリングされるアプリケーションよりも不安定になります。For example, an application that renders smoothly for five frames (60 FPS for the duration of these five frames) and then drops every other frame for the next 10 frames (30 FPS for the duration of these 10 frames) will appear more unstable than an application that consistently renders at 30 FPS.

関連する注意事項として、混合の現実のキャプチャを実行しているときに、オペレーティングシステムによってアプリケーションが 30 FPS にスロットルされます。On a related note, the operating system throttles down applications to 30 FPS when mixed reality capture is running.

パフォーマンス分析アプリケーションのフレームレートのベンチマークに使用できるツールには、次のような種類があります。Performance analysis There are different kinds of tools that can be used to benchmark your application frame rate, such as:

  • GPUViewGPUView
  • Visual Studio Graphics DebuggerVisual Studio Graphics Debugger
  • Unity などの3D エンジンに組み込まれたプロファイラーProfilers built into 3D engines such as Unity

ホログラムのレンダリング距離Hologram render distances

人間のビジュアルシステムでは、オブジェクトを固定し、オブジェクトに焦点を当てたときに、複数の距離に依存する信号を統合します。The human visual system integrates multiple distance-dependent signals when it fixates and focuses on an object.

  • 宿泊施設-個々の視点の焦点。Accommodation - The focus of an individual eye.
  • 収束-オブジェクトの中心に向かって、または外側に移動する2つの目。Convergence - Two eyes moving inward or outward to center on an object.
  • 付い双眼鏡格差は、オブジェクトの距離に依存している、左側と右目の画像との間の距離を示します。Binocular vision - Disparities between the left- and right-eye images that are dependent on an object's distance away from your fixation point.
  • 網掛け、相対角度のサイズ、およびその他の monocular (単一目) のキュー。Shading, relative angular size, and other monocular (single eye) cues.

収束と特別設備は、目が変化して異なる距離でオブジェクトを認識する方法に関連する余分な網膜手掛かりによって一意になります。Convergence and accommodation are unique because their extra-retinal cues related to how the eyes change to perceive objects at different distances. 自然な表示では、収束と設備がリンクされています。In natural viewing, convergence and accommodation are linked. 目が近く (たとえば、鼻) で表示されている場合、目は交差し、近くに配置されます。When the eyes view something near (for example, your nose), the eyes cross and accommodate to a near point. 目が無限に表示されると、目は並列になり、目は無限大になります。When the eyes view something at infinity, the eyes become parallel and the eye accommodates to infinity.

Hololens がユーザーから約 2.0 m 離れた場所で固定されているため、HoloLens を装着したユーザーは、常に 2.0 m に対応して明確なイメージを維持します。Users wearing HoloLens will always accommodate to 2.0 m to maintain a clear image because the HoloLens displays are fixed at an optical distance approximately 2.0 m away from the user. アプリ開発者は、さまざまな深度でコンテンツとホログラムを配置することで、ユーザーの目がどのようになるかを制御します。App developers control where users' eyes converge by placing content and holograms at various depths. ユーザーがさまざまな距離に対応して収束すると、2つのキュー間の自然なリンクが解除されます。これにより、特に競合の大きさが大きい場合に、visual 不快感や疲労が発生する可能性があります。When users accommodate and converge to different distances, the natural link between the two cues is broken, which can lead to visual discomfort or fatigue, especially when the magnitude of the conflict is large.

Vergence は、収束コンテンツをできるだけ 2.0 m の近くに保持することによって、不快感の競合を回避または最小化できます (つまり、可能な場合は、最も多くの分野が m の2.0 近くに配置されているシーンで)。Discomfort from the vergence-accommodation conflict can be avoided or minimized by keeping converged content as close to 2.0 m as possible (that is, in a scene with lots of depth place the areas of interest near 2.0 m, when possible). コンテンツを 2.0 m の近くに配置することはできませんが、ユーザーの距離が異なる場合は、vergence の競合の不快感が最大になります。When content can't be placed near 2.0 m, discomfort from the vergence-accommodation conflict is greatest when user’s gaze back and forth between different distances. 言い換えると、時間の経過と共に移動するホログラム 50 cm を離れた状態で、50 cm のままになっている静止したホログラムを見た方がはるかに快適です。In other words, it's much more comfortable to look at a stationary hologram that stays 50 cm away than to look at a hologram 50 cm away that moves toward and away from you over time.

2つのディスプレイがこの距離で完全に重複するように設計されているため、2.0 m にコンテンツを配置することも便利です。Placing content at 2.0 m is also advantageous because the two displays are designed to fully overlap at this distance. この平面から離れた画像については、holographic フレームの辺から離れたときに、他の画面に表示されている間、1つのディスプレイから表示されます。For images placed off this plane, as they move off the side of the holographic frame they'll appear from one display while still being visible on the other. この付い双眼鏡 rivalry、holorgam の深さの知覚に悪影響を及ぼす可能性があります。This binocular rivalry can be disruptive to the depth perception of the holorgam.

ユーザーからホログラムを配置する位置までの最適な距離Optimal distance for placing holograms from the user

ユーザーからホログラムを配置する位置までの最適な距離

クリッププレーン最大限に快適にするために、1 m でコンテンツをフェードアウトして、85 cm でレンダリング距離をクリッピングすることをお勧めします。Clip Planes For maximum comfort, we recommend clipping render distance at 85 cm with fade out of content starting at 1 m. ホログラムとユーザーの両方が静止しているアプリケーションでは、ホログラムを 50 cm の近くに表示できます。このような場合、アプリケーションでは、クリップ平面を 30 cm 以下にし、フェードアウトをクリッププレーンから少なくとも 10 cm 離れた位置に配置する必要があります。In applications where holograms and users are both stationary, holograms can be viewed comfortably as near as 50 cm. In those cases, applications should place a clip plane no closer than 30 cm and fade out should start at least 10 cm away from the clip plane. コンテンツが 85 cm を超える場合は常に、ユーザーがホログラムから近い場所に移動したり、ホログラムから遠くに移動したりしないようにすることが重要です。このような状況では、vergence の競合から不快感が発生する可能性が高いためです。Whenever content is closer than 85 cm, it's important to ensure that users don't frequently move closer or farther from holograms or that holograms don't frequently move closer to or farther from the user as these situations are most likely to cause discomfort from the vergence-accommodation conflict. コンテンツは、ユーザーからの 85 cm よりも近くの操作の必要性を最小限に抑えるように設計する必要がありますが、コンテンツが 85 cm より近い状態でレンダリングされる必要がある場合は、開発者にとっての経験則として、ユーザーやホログラムが25% 以上の時間で移動しないようなシナリオを設計します。Content should be designed to minimize the need for interaction closer than 85 cm from the user, but when content must be rendered closer than 85 cm, a good rule of thumb for developers is to design scenarios where users and/or holograms don't move in depth more than 25% of the time.

ベストプラクティスホログラムを 2 m に配置できず、収束と宿泊の間の競合を回避できない場合、ホログラムの配置に最適なゾーンは 1.25 m ~ 5 m です。Best practices When holograms can't be placed at 2 m and conflicts between convergence and accommodation can't be avoided, the optimal zone for hologram placement is between 1.25 m and 5 m. どのような場合でも、デザイナーは、ユーザーが 1 + m を操作できるようにコンテンツを構成する必要があります (たとえば、コンテンツサイズと既定の配置パラメーターを調整します)。In every case, designers should structure content to encourage users to interact 1+ m away (for example, adjust content size and default placement parameters).

再プロジェクションReprojection

HoloLens は、reprojection と呼ばれる高度なハードウェア支援型の holographic 安定化手法を実行します。HoloLens performs a sophisticated hardware-assisted holographic stabilization technique known as reprojection. シーンがアニメーション化され、ユーザーが頭を動かしたときに、再プロジェクションでは、視点 (CameraPose) の動きと変化が考慮されます。Reprojection takes into account motion and change of the point of view (CameraPose) as the scene animates and the user moves their head. アプリケーションでは、reprojection を最大限に活用するために、特定のアクションを実行する必要があります。Applications need to take specific actions to best use reprojection.

再プロジェクションには主に4種類あります。There are four main types of reprojection

  • 深さの再投影: アプリケーションの作業量を最小限に抑えて最適な結果を生成します。Depth Reprojection: Produces the best results with the least amount of effort from the application. レンダリングされたシーンのすべての部分は、ユーザーからの距離に基づいて、個別に安定化されます。All parts of the rendered scene are independently stabilized based on their distance from the user. 一部のレンダリングアイテムは、詳細な変更がある場所で表示される場合があります。Some rendering artifacts may be visible where there are sharp changes in depth. このオプションは、HoloLens 2 とイマーシブヘッドセットでのみ使用できます。This option is only available on HoloLens 2 and Immersive Headsets.
  • 平面の再プロジェクション: アプリケーションが安定化を厳密に制御できるようにします。Planar Reprojection: Allows the application precise control over stabilization. 平面はアプリケーションによって設定され、その平面上のすべてのものがシーンの最も安定した部分になります。A plane is set by the application and everything on that plane will be the most stable part of the scene. さらに、ホログラムは平面から離れているので、安定性は低くなります。The further a hologram is away from the plane, the less stable it will be. このオプションは、すべての Windows MR プラットフォームで使用できます。This option is available on all Windows MR platforms.
  • 自動平面再プロジェクション: システムは、深度バッファーの情報を使用して安定化平面を設定します。Automatic Planar Reprojection: The system sets a stabilization plane using information in the depth buffer. このオプションは、HoloLens generation 1 および HoloLens 2 で使用できます。This option is available on HoloLens generation 1 and HoloLens 2.
  • なし: アプリケーションが何も実行しない場合、平面の再投影は、2メートルで固定されている、ユーザーの頭部の方向に固定された安定化平面と共に使用されます。通常、サブ標準の結果が生成されます。None: If the application does nothing, Planar Reprojection is used with the stabilization plane fixed at 2 meters in the direction of the user's head gaze, usually producing substandard results.

アプリケーションは、さまざまな種類の再プロジェクションを可能にするために、特定のアクションを実行する必要があります。Applications need to take specific actions to enable the different types of reprojection

  • 深さの再投影: アプリケーションは、描画されたすべてのフレームの深度バッファーをシステムに送信します。Depth Reprojection: The application submits their depth buffer to the system for every rendered frame. Unity では、[ XR Plugin Management] の下にある [ Windows Mixed Reality の設定] ウィンドウにある [共有深度バッファー ] オプションを使用して深さの再投影が行われます。On Unity, Depth Reprojection is done with the Shared Depth Buffer option in the Windows Mixed Reality Settings pane under XR Plugin Management. DirectX アプリは CommitDirect3D11DepthBuffer を呼び出します。DirectX apps call CommitDirect3D11DepthBuffer. アプリケーションで SetFocusPoint を呼び出すことはできません。The application shouldn't call SetFocusPoint.
  • 平面の再プロジェクション: すべてのフレームで、アプリケーションは、安定する平面の場所をシステムに伝えます。Planar Reprojection: On every frame, applications tell the system the location of a plane to stabilize. Unity アプリケーションは SetFocusPointForFrame を呼び出し、共有深度バッファーを無効にする必要があります。Unity applications call SetFocusPointForFrame and should have Shared Depth Buffer disabled. DirectX アプリは SetFocusPoint を呼び出しますが、CommitDirect3D11DepthBuffer を呼び出すことはできません。DirectX apps call SetFocusPoint and shouldn't call CommitDirect3D11DepthBuffer.
  • 自動平面再プロジェクション: を有効にするには、アプリケーションが深さの再投影の場合と同じように、システムに深度バッファーを送信する必要があります。Automatic Planar Reprojection: To enable, the application needs to submit their depth buffer to the system as they would for Depth Reprojection. HoloLens 2 では、アプリケーションは、すべてのフレームに対して0のポイント (0) を SetFocusPoint する必要があります。On HoloLens 2, the application then needs to SetFocusPoint with a point of 0,0 for every frame. HoloLens のジェネレーション1の場合、アプリケーションは SetFocusPoint を呼び出すことはできません。For HoloLens generation 1, the application shouldn't call SetFocusPoint.

再プロジェクション技法の選択Choosing Reprojection Technique

安定化の種類Stabilization Type イマーシブヘッドセットImmersive Headsets HoloLens の生成1HoloLens generation 1 HoloLens 2HoloLens 2
深さの再投影Depth Reprojection 推奨Recommended 該当なしN/A 推奨Recommended

Unity アプリケーションでは、Unity 2018.4.12 以降または Unity 2019.3 以降を使用する必要があります。Unity applications must use Unity 2018.4.12 or later or Unity 2019.3 or later. それ以外の場合は、自動平面 Reprojection を使用します。Otherwise use Automatic Planar Reprojection.
自動平面再プロジェクションAutomatic Planar Reprojection 該当なしN/A 推奨される既定値Recommended default 深さの再プロジェクションで最適な結果が得られない場合に推奨Recommended if Depth Reprojection isn't giving the best results

Unity アプリケーションは、Unity 2018.4.12 以降または Unity 2019.3 以降を使用することをお勧めします。Unity applications are recommended to use Unity 2018.4.12 or later or Unity 2019.3 or later. 以前のバージョンの Unity は、わずかに低下した再プロジェクション結果で動作します。Previous Unity versions will work with slightly degraded reprojection results.
平面の再プロジェクションPlanar Reprojection 推奨されませんNot Recommended 自動平面が最適な結果を得られない場合に推奨Recommended if Automatic Planar isn't giving the best results いずれの深さのオプションでも目的の結果が得られない場合は、を使用します。Use if neither of the depth options give desired results

深さが正しく設定されていることを確認していますVerifying Depth is Set Correctly

Reprojection メソッドが深度バッファーを使用する場合は、深度バッファーの内容がアプリケーションのレンダリングされたシーンを表すことを確認することが重要です。When a reprojection method uses the depth buffer, it's important to verify the contents of the depth buffer represent the application's rendered scene. さまざまな要因によって問題が発生する可能性があります。A number of factors can cause problems. たとえば、ユーザーインターフェイスのオーバーレイをレンダリングするために使用される2番目のカメラがある場合は、実際のビューからすべての深度情報が上書きされる可能性があります。If there's a second camera used to render user interface overlays, for example, it's likely to overwrite all the depth information from the actual view. 多くの場合、透明なオブジェクトは深さを設定しません。Transparent objects often don't set depth. 一部のテキスト表示では、既定で深さが設定されません。Some text rendering won't set depth by default. 描画に表示される異常は、深度がレンダリングされたホログラムと一致しない場合に表示されます。There will be visible glitches in the rendering when depth does not match the rendered holograms.

HoloLens 2 には、デバイスポータルから有効にできる深さと設定されていない場所を示すビジュアライザーがあります。HoloLens 2 has a visualizer to show where depth is and isn't being set, which can be enabled from Device Portal. [ビューの > ホログラムの安定性] タブで、[ヘッドセットの深さの視覚エフェクトを表示する] チェックボックスをオンにします。On the Views > Hologram Stability tab, select the Display depth visualization in headset checkbox. 深度が適切に設定されている領域は青色になります。Areas that have depth set properly will be blue. 深度が設定されていないレンダリング項目は赤でマークされ、修正する必要があります。Rendered items that don't have depth set are marked in red and need to be fixed.

注意

詳細の視覚化は、Mixed Reality のキャプチャでは表示されません。The visualization of the depth will not show up in Mixed Reality Capture. デバイスでのみ表示されます。It is only visible through the device.

一部の GPU 表示ツールでは、深度バッファーを視覚化できます。Some GPU viewing tools will allow visualization of the depth buffer. アプリケーション開発者は、これらのツールを使用して、深さが適切に設定されていることを確認できます。Application developers can use these tools to make sure depth is being set properly. アプリケーションのツールのドキュメントを参照してください。Consult the documentation for the application's tools.

平面の再プロジェクションの使用Using Planar Reprojection

注意

デスクトップのイマーシブヘッドセットの場合、通常は安定化平面を設定します。これは、アプリの深度バッファーをシステムに提供してピクセル単位の深さベースの再プロジェクションを有効にするよりも、ビジュアルの品質が低下するためです。For desktop immersive headsets, setting a stabilization plane is usually counter-productive, as it offers less visual quality than providing your app's depth buffer to the system to enable per-pixel depth-based reprojection. HoloLens で実行しない限り、通常は安定化平面の設定を避ける必要があります。Unless running on a HoloLens, you should generally avoid setting the stabilization plane.

3D オブジェクトの安定化平面

デバイスは自動的にこの平面を選択しようとしますが、アプリケーションはシーンでフォーカスポイントを選択して支援する必要があります。The device will automatically attempt to choose this plane, but the application should assist by selecting the focus point in the scene. HoloLens で実行されている Unity アプリでは、シーンに基づいて最適なポイントを選択し、 SetFocusPoint ()に渡す必要があります。Unity apps running on a HoloLens should choose the best focus point based on your scene and pass it into SetFocusPoint(). DirectX でフォーカスポイントを設定する例は、既定のスピンキューブテンプレートに含まれています。An example of setting the focus point in DirectX is included in the default spinning cube template.

Unity は Windows に深度バッファーを送信し、デスクトップ PC に接続されたイマーシブヘッドセットでアプリを実行するときに、ピクセルごとの再プロジェクションを有効にします。これにより、アプリによる明示的な作業を必要とすることなく、より優れたイメージ品質が提供されます。Unity will submit your depth buffer to Windows to enable per-pixel reprojection when you run your app on an immersive headset connected to a desktop PC, which provides even better image quality without explicit work by the app. アプリが HoloLens で実行されている場合、またはピクセルごとの再プロジェクションがオーバーライドされる場合にのみ、フォーカスポイントを提供する必要があります。You should only provide a Focus Point when your app is running on a HoloLens, or the per-pixel reprojection will be overridden.

// SetFocusPoint informs the system about a specific point in your scene to
// prioritize for image stabilization. The focus point is set independently
// for each holographic camera.
// You should set the focus point near the content that the user is looking at.
// In this example, we put the focus point at the center of the sample hologram,
// since that is the only hologram available for the user to focus on.
// You can also set the relative velocity and facing of that content; the sample
// hologram is at a fixed point so we only need to indicate its position.
renderingParameters.SetFocusPoint(
    currentCoordinateSystem,
    spinningCubeRenderer.Position
    );

フォーカスポイントの配置は、多くの場合、ホログラムが見ている内容によって異なります。Placement of the focus point largely depends on what the hologram is looking at. アプリには、参照用の宝石ベクトルがあり、アプリデザイナーはユーザーに対して確認するコンテンツを認識します。The app has the gaze vector for reference and the app designer knows what content they want the user to observe.

ホログラムを安定させるために開発者が実行できる最も重要な1つの点は、60 FPS でレンダリングすることです。The single most important thing a developer can do to stabilize holograms is to render at 60 FPS. 60 FPS を下回ると、安定化平面の最適化に関係なく、ホログラムの安定性が大幅に減少します。Dropping below 60 FPS will dramatically reduce hologram stability, whatever the stabilization plane optimization.

ベストプラクティス安定化平面を設定するための汎用的な方法はなく、アプリに固有のものです。Best practices There's no universal way to set up the stabilization plane and it's app-specific. 主に、お客様のシナリオに最も適していることを試してみることをお勧めします。Our main recommendation is to experiment and see what works best for your scenario. ただし、この平面上のすべてのコンテンツが完全に安定しているため、できるだけ多くのコンテンツを安定化平面に揃えるようにしてください。However, try to align the stabilization plane with as much content as possible because all the content on this plane is perfectly stabilized.

次に例を示します。For example:

  • 平面コンテンツ (アプリの読み取り、ビデオ再生アプリ) のみがある場合は、安定化平面をコンテンツを持つ平面に揃えます。If you have only planar content (reading app, video playback app), align the stabilization plane with the plane that has your content.
  • 世界中にロックされている小さな球体が3つある場合は、ユーザーのビューに現在存在するすべての球体の中心を "切り取り" にします。If there are three small spheres that are world-locked, make the stabilization plane "cut" though the centers of all the spheres that are currently in the user's view.
  • シーンの深さが大きく異なる場合は、さらにオブジェクトを優先します。If your scene has content at substantially different depths, favor further objects.
  • ユーザーが見ているホログラムと一致するように、すべてのフレームの安定化ポイントを調整してください。Make sure to adjust the stabilization point every frame to coincide with the hologram the user is looking at

回避すべきこと安定化平面は安定したホログラムを実現するための優れたツールですが、誤用されると、イメージが不安定になる可能性があります。Things to Avoid The stabilization plane is a great tool to achieve stable holograms, but if misused it can result in severe image instability.

  • "火災と忘れる" ことは避けてください。Don't "fire and forget". 最終的には、ユーザーの背後にある安定化面を使用したり、ユーザーのビューに存在しなくなったオブジェクトにアタッチしたりすることができます。You can end up with the stabilization plane behind the user or attached to an object that is no longer in the user's view. 安定化平面の法線が反対のカメラに設定されていることを確認します (例:-camera. forward)Ensure the stabilization plane normal is set opposite camera-forward (for example, -camera.forward)
  • 安定した平面を極端に逆方向に変更しないDon't rapidly change the stabilization plane back and forth between extremes
  • 安定化平面を固定距離/向きに設定したままにしないDon't leave the stabilization plane set to a fixed distance/orientation
  • 安定化平面をユーザーに対して切り取ることを許可しないDon't let the stabilization plane cut through the user
  • HoloLens ではなくデスクトップ PC で実行する場合は、フォーカスポイントを設定しないでください。代わりに、ピクセルごとの深度ベースの再プロジェクションに依存します。Don't set the focus point when running on a desktop PC rather than a HoloLens, and instead rely on per-pixel depth-based reprojection.

色の分離Color separation

HoloLens ディスプレイの性質により、"カラー分離" と呼ばれるアーティファクトが認識されることがあります。Due to the nature of HoloLens displays, an artifact called "color-separation" can sometimes be perceived. これは、個々の基本色 (赤、緑、および青) に分割するイメージとしてマニフェストを持ちます。It manifests as the image separating into individual base colors - red, green, and blue. アイテムは、赤、緑、および青が非常に多いため、白いオブジェクトを表示するときに特に表示できます。The artifact can be especially visible when displaying white objects, since they have large amounts of red, green, and blue. これは、ユーザーが holographic フレーム間を移動しているホログラムを高速で視覚的に追跡する場合に最も顕著になります。It's most pronounced when a user visually tracks a hologram that is moving across the holographic frame at high speed. アーティファクトでマニフェストを実行するもう1つの方法は、オブジェクトのワープ/変形です。Another way the artifact can manifest is warping/deformation of objects. オブジェクトのコントラストやピュア色 (赤、緑、青など) が高い場合、色の分離は、オブジェクトのさまざまな部分のワープとして認識されます。If an object has high contrast and/or pure colors such as red, green, blue, color-separation will be perceived as warping of different parts of the object.

ヘッドロックされた白いラウンドカーソルの色の分離の例は、ユーザーが頭を左右に回転させると、次のようになります。Example of what the color separation of a head-locked white round cursor could look like as a user rotates their head to the side:

ヘッドロックされた白いラウンドカーソルの色の分離の例は、ユーザーが頭を左右に回転させた場合のようになります。

色の分離を完全に回避することは困難ですが、それを軽減するために使用できる手法がいくつかあります。Though it's difficult to completely avoid color separation, there are several techniques available to mitigate it.

色の分離は次のようになります。Color-separation can be seen on:

  • カーソルなどのヘッドロックオブジェクトを含む、すばやく移動するオブジェクト。Objects that are moving quickly, including head-locked objects such as the cursor.
  • 安定化平面からかなり遠く離れたオブジェクト。Objects that are substantially far from the stabilization plane.

色の分離の効果を弱めるには、次のようにします。To attenuate the effects of color-separation:

  • オブジェクトをユーザーの宝石にラグさせる。Make the object lag the user's gaze. これは、慣性があるかのように表示され、宝石の "スプリング" にアタッチされます。It should appear as if it has some inertia and is attached to the gaze "on springs". この方法では、カーソルの速度が低下し (分離距離が短縮されます)、ユーザーの考えられるポイントの背後に配置されます。This approach slows the cursor (reducing separation distance) and puts it behind the user's likely gaze point. ユーザーが宝石の移動を止めたときにすぐに追いつくのであれば、自然な感じです。So long as it quickly catches up when the user stops shifting their gaze it feels natural.
  • ホログラムを移動する場合は、ユーザーが目を見ていくことが予想される場合は、移動速度を5°/秒未満にしてください。If you do want to move a hologram, try to keep its movement speed below 5 degrees/second if you expect the user to follow it with their eyes.
  • カーソルには、 geometryではなくlightを使用します。Use light instead of geometry for the cursor. 見つめに接続されている仮想照明のソースは、対話型ポインターとして認識されますが、色の分離は行われません。A source of virtual illumination attached to the gaze will be perceived as an interactive pointer but won't cause color-separation.
  • ユーザーが行っているホログラムと一致するように安定化平面を調整します。Adjust the stabilization plane to match the holograms the user is gazing at.
  • オブジェクトを赤、緑、または青にします。Make the object red, green, or blue.
  • ぼやけたバージョンのコンテンツに切り替えます。Switch to a blurred version of the content. たとえば、丸い白のカーソルを、動きの方向に少しぼやけた線に変更することができます。For example, a round white cursor could be changed to a slightly blurred line oriented in the direction of motion.

前と同様に、60 FPS でのレンダリングと安定化平面の設定は、ホログラムの安定性を確保するための最も重要な手法です。As before, rendering at 60 FPS and setting the stabilization plane are the most important techniques for hologram stability. 色の区別が目立つ場合は、まず、フレームレートが期待どおりであることを確認します。If facing noticeable color separation, first make sure the frame rate meets expectations.

関連項目See also