導入事例 - 安定化平面を使用して holographic 乱気流を削減するにはCase study - Using the stabilization plane to reduce holographic turbulence

ホログラムで作業は、厄介なことがあります。Working with holograms can be tricky. 領域内を移動およびすべてのさまざまな角度から、ホログラムを参照してください。 できることのファクトは、通常のコンピューター画面では実現できない immersion のレベルを提供します。The fact that you can move around your space and see your holograms from all different angles provides a level of immersion that you can’t get with a normal computer screen. インプレースこれらホログラムを維持する方法と、現実的な検索は、Microsoft HoloLens のハードウェアと holographic アプリのインテリジェントなデザインの両方によって実現技術偉業です。Keeping these holograms in place and looking realistic is a technical feat accomplished by both the Microsoft HoloLens hardware and the intelligent design of holographic apps.

技術者The tech

ホログラムを実際には、領域を共有している場合と同様に表示するために、する必要がありますが正しくレンダリング、色の分離なし。To make holograms appear as though they're actually sharing the space with you, they should render properly, without color separation. これは、一部をホログラムいわゆるに固定の保持、HoloLens のハードウェアに組み込まれているテクノロジによって、安定化平面します。This is achieved, in part, by technology built-in to the HoloLens hardware which keeps holograms anchored on what we call a stabilization plane.

ポイントして、通常の平面が定義されているが、常にたいので、カメラに直面する平面、私たちは平面のポイントの設定を実際には考慮します。A plane is defined by a point and a normal, but since we always want the plane to face the camera, we're really just concerned with setting the plane's point. ポイントすべて固定を維持するには、その処理を集中している HoloLens を指示し、安定したこのフォーカス ポイントを設定する方法アプリに固有しできますしたりすることはコンテンツに応じて、アプリを中断します。We can tell HoloLens which point to focus its processing on to keep everything anchored and stable, but how to set this focus point is app-specific, and can make or break your app depending on the content.

ホログラムのときに最適に動作簡単に言うと、安定化平面が正しく適用されていますが、作成中のアプリケーションの種類に手段が実際に依存するどのような。In a nutshell, holograms work best when the stabilization plane is properly applied, but what that actually means depends on the type of application you’re creating. この問題に取り組む HoloLens で現在使用できるアプリのいくつかの方法を見てをみましょう。Let’s take a look at how some of the apps currently available for HoloLens tackle this problem.

しくみBehind the scenes

次のアプリを開発する場合、平面を使用していないときにオブジェクトが sway 頭の移動し、クイック ヘッドまたはホログラム動きによる色の分離がわかりますが検出されました。When developing the following apps, we noticed that when we didn't use the plane, objects would sway when our head moved and we'd see color separation with quick head or hologram movements. 開発期間の過程で、わかった試行錯誤を安定化プレーンを活用する方法に関する問題を修正できないことを会社のアプリを設計する方法。Over the course of the development timeframe, we learned through trial and error how to best use the stabilization plane and how to design our apps around the problems that it can't fix.

Galaxy エクスプ ローラー:静止したコンテンツ、3 D の対話機能Galaxy Explorer: Stationary content, 3D interactivity

Galaxy エクスプ ローラーシーン内の 2 つの主要な要素を持ちます。宇宙のコンテンツと、視線の先に続く小さな UI ツールバーのメイン ビュー。Galaxy Explorer has two major elements in the scene: The main view of the celestial content and the small UI toolbar that follows your gaze. 安定化のロジックと、現在の視線入力ベクトルと交差する指定された競合レイヤー上のすべてにヒットしたかどうかを判断するには、各フレームでに注目します。For the stabilization logic, we look at what your current gaze vector intersects with in each frame to determine if it hits anything on a specified collision layer. この場合は、関心のレイヤーは、惑星、安定化の平面がありますに配置して、視線の先が、地球上にある場合。In this case, the layers we’re interested in are the planets, so if your gaze falls on a planet, the stabilization plane is placed there. ターゲットの衝突レイヤー内のオブジェクトの [なし] に達すると、アプリは、セカンダリ「プラン B」レイヤーを使用します。If none of the objects in the target collision layer are hit, the app uses a secondary “plan B” layer. 何も問題で gazed されているが場合のコンテンツを gazing 時と同じ距離にある安定化平面は保持されます。If nothing is being gazed at, the stabilization plane is kept at the same distance as it was when gazing at the content. UI ツールはそのまま平面のターゲットとしての近くの間でのジャンプを検出し、はるかに全体的なシーンの安定性を削減します。The UI tools are left out as a plane target as we found the jump between near and far reduced the stability of the overall scene.

Galaxy エクスプ ローラーの設計安定に保つことと、色の分離の影響を軽減するのにも役立ちます。The design of Galaxy Explorer lends itself well to keeping things stable and reducing the effect of color separation. 歩き回りとコンテンツを軌道ではなく、並列沿いに移動する、ユーザーが推奨され、惑星の色の分離が顕著ではないことできるほどゆっくり移動されます。The user is encouraged to walk around and orbit the content rather than move along it from side to side, and the planets are orbiting slowly enough that the color separation isn’t noticeable. さらに、色の分離の発生を防止するうえで長いようになるが、定数 60 FPS が維持されます。Additionally, a constant 60 FPS is maintained, which goes a long way in preventing color separation from happening.

自分でこれをチェックする LSRPlaneModifier.cs という名前のファイルの検索、 Galaxy エクスプ ローラーの GitHub のコードします。To check this out yourself, look for a file called LSRPlaneModifier.cs in the Galaxy Explorer code on GitHub.

HoloStudio:UI フォーカスのあるコンテンツが静止しています。HoloStudio: Stationary content with a UI focus

HoloStudio では、同じモデルを見てでの作業時間の大半を費やします。In HoloStudio, you spend most of your time looking at the same model you’re working on. 新しいツールを選択するか、単純な平面設定ロジックを保持しますできますので、UI を移動するときに、視線の先以外の膨大な量を移動しません。Your gaze doesn’t move a significant amount, except for when you select a new tool or want to navigate the UI, so we can keep the plane setting logic simple. UI を見たときに、平面は、視線の先をスナップにどのような UI 要素に設定されます。When looking at the UI, the plane is set to whatever UI element your gaze snaps to. モデルを調べる場合と、モデルの既定の距離に対応する、設定された距離は、平面。When looking at the model, the plane is a set distance away, corresponding with the default distance between you and the model.

安定化平面の視覚化にホーム ボタンのユーザーとして HoloStudio gazes

HoloTour と 3D のビューアー:アニメーションとムービーに関するコンテンツが静止しています。HoloTour and 3D Viewer: Stationary content with animation and movies

HoloTour と 3D のビューアーでの表示されている単独のアニメーション化されたオブジェクトや映画の 3D 効果の上に追加します。In HoloTour and 3D Viewer, you’re looking at a solitary animated object or movie with 3D effects added on top of it. これらのアプリの安定化は、どの表示している現在に設定されます。The stabilization in these apps is set to whatever you’re currently viewing.

HoloTour 防ぐことも固定の場所ではなくを移動することにより、仮想の世界から離れすぎて straying します。HoloTour also prevents you from straying too far away from your virtual world by having it move with you instead of staying in a fixed location. これにより、十分な安定性の問題が生じる可能性の他のホログラムからの取得されません。This ensures that you won’t get far enough away from other holograms for stability issues to creep in.

HoloTour からこの例では、安定化平面はハドリアヌスの Pantheon のこのムービーに設定されます。

RoboRaid:動的なコンテンツおよび環境的な対話RoboRaid: Dynamic content and environmental interactions

RoboRaid で安定化平面を設定することは、最も突然の動きを必要とするアプリであるにもかかわらず、驚くほど簡単です。Setting the stabilization plane in RoboRaid is surprisingly simple, despite being the app that requires the most sudden movement. 平面がについて言えば、壁に特化したまたは周囲オブジェクトしそれらから十分に離れているときにする前に一定の距離に配置されます。The plane is geared towards sticking to the walls or the surrounding objects and will float at a fixed distance in front of you when you’re far enough away from them.

RoboRaid 安定化面を考慮して設計されました。RoboRaid was designed with the stabilization plane in mind. Head ロックであるため、ほとんどの移動、十字線は、赤と青の色の最先端を最小限に抑えますのみを使用してこれを回避できます。The reticle, which moves the most since it’s head-locked, circumvents this by using only red and blue which minimizes any color bleeding. ちょっとした深さは、既に予期される視差効果をマスクすることで発生するすべての色裁ち落としを最小限に抑え、各部分の間も含まれています。It also contains a small bit of depth between the pieces, minimizing any color bleed that would occur by masking it with an already expected parallax effect. ロボットは非常に高速に移動して、一定の間隔で短い距離を移動するだけしないでください。The robots don’t move very quickly and only travel short distances in regular intervals. 既定では、安定化が設定されている、前に約 2 m 離れたを維持する傾向があります。They tend to stay around 2 meters in front of you, where the stabilization is set by default.

フラグメントと若い Conker:環境とのやり取りを動的なコンテンツFragments and Young Conker: Dynamic content with environmental interaction

Asobo Studio によって書き込まれるC++、フラグメントと Young Conker は、別のアプローチが安定化平面を設定します。Written by Asobo Studio in C++, Fragments and Young Conker take a different approach to setting the stabilization plane. 関心 (地点 POI) のポイントは、コードで定義されているし、優先度の観点から順序付けします。Points of interest (POI) are defined in the code and ordered in terms of priority. Poi は Young Conker、メニューの狙いを定める目盛り、およびロゴに Conker モデルなど、ゲーム内のコンテンツです。POIs are in-game content such as the Conker model in Young Conker, menus, the aiming reticle, and logos. ユーザーの視線入力と交差、Poi され、平面は最高の優先順位を持つオブジェクトの中心に設定されます。The POIs are intersected by the user’s gaze and the plane is set to the center of the object with the highest priority. 積集合が発生しない場合は、平面が既定の間隔に設定されます。If no intersection occurs, the plane is set to the default distance.

フラグメントと Young Conker、プレイ領域として以前スキャンされて、内容の外部に移動する場合、アプリを一時停止して、ホログラムから離れすぎて straying 周囲設計もできます。Fragments and Young Conker also design around you straying too far from the holograms by pausing the app if you move outside of what’s been previously scanned as your play space. そのため、するは、最も安定したエクスペリエンスを提供する境界内で維持します。As such, they keep you within the boundaries that are found to provide the most stable experience.

自分で行うDo it yourself

HoloLens あり説明した概念をいろいろしたい場合は、テスト シーンをダウンロードし、次の演習を試します。If you have a HoloLens and would like to play around with the concepts I've discussed, you can download a test scene and try out the exercises below. Unity の組み込みの商品 API を使用して、面が設定されているを視覚化することは必要があります。It uses Unity’s built-in gizmo API and it should help you visualize where your plane is being set. このコードは、このケース スタディのスクリーン ショットをキャプチャするでも使用されていました。This code was also used to capture the screenshots in this case study.

  1. 最新バージョンの同期MixedRealityToolkit Unityします。Sync the latest version of MixedRealityToolkit-Unity.
  2. 開く、 HoloToolkit-Examples/Utilities/Scenes/StabilizationPlaneSetting.unityシーンです。Open the HoloToolkit-Examples/Utilities/Scenes/StabilizationPlaneSetting.unity scene.
  3. 構築し、生成されたプロジェクトを構成します。Build and configure the generated project.
  4. デバイスで実行します。Run on your device.

手順 1Exercise 1

異なる向きで周囲のいくつか白いドットが表示されます。You'll see several white dots around you at different orientations. 前に、別の深さで 3 つのドットが表示されます。In front of you, you’ll see three dots at different depths. ドット (.)、平面を変更するエア タップに設定されます。Air tap to change which dot the plane is set to. この演習では、および他の 2 つは、ドットで gazing 中に、スペースを移動します。For this exercise, and for the other two, move around your space while gazing at the dots. 上下に、ヘッドの左、右を有効にします。Turn your head left, right, up, and down. 点から近くに配置し、父親を移動します。Move closer to and father from the dots. 安定化の平面が別のターゲットに設定されている場合の対処方法を参照してください。See how they react when the stabilization plane is set to different targets.

手順 2Exercise 2

次に、水平方向のパスと垂直方向のパスに 1 つで不安定な 1 つ、2 つの移動ドットが表示されるまでは直接に有効にします。Now, turn to your right until you see two moving dots, one oscillating on a horizontal path and one on a vertical path. 繰り返しますが、エア タップ平面に設定されているどのドットを変更します。Once again, air-tap to change which dot the plane is set to. 色の分離を軽減する方法に注意してくださいでは、面に接続されているドットが表示されます。Notice how color separation is lessened appears on the dot that is connected to the plane. 平面設定関数のドットの速度を使用するには、もう一度タップします。Tap again to use the dot’s velocity in the plane setting function. このパラメーターは、目的のオブジェクトの動きについて、HoloLens にヒントを示します。This parameter gives a hint to HoloLens about the object’s intended motion. 重要なことは 1 つのドットで velocity を使用するときにわかる、これを使用する場合については、他の移動のドットが色分離を表示します。It’s important to know when to use this, as you’ll notice when velocity is used on one dot, the other moving dot will show greater color separation. このアプリを設計する際に注意してください注意: 成果物が表示されないようにヘルプ、オブジェクトの動きをまとまりのあるフローがあることができます。Keep this in mind when designing your apps—having a cohesive flow to the motion of your objects can help prevent artifacts from appearing.

手順 3Exercise 3

ドットの新しい構成が表示されるまで 1 回以上、右側にします。Turn to your right once more until you see a new configuration of dots. ここでは、距離にあるドットと 1 つのドットを前に、サインアウト迫ったりです。In this case there are dots in the distance and one dot spiraling in and out in front of them. エア タップして、プレーンは背面にドットとドットは、モーションが交互に設定するドットを変更します。Air tap to change which dot the plane is set to, alternating between the dots in the back and the dot in motion. 成果物のすべての場所を表示でどのように行うプロペラ ドットの面の位置と速度の設定に注意してください。Notice how setting the plane position and the velocity to that of the spiraling dot makes artifacts appear everywhere.


  • 平面設定ロジックはシンプルにします。Keep your plane setting logic simple. で説明したように魅力的なエクスペリエンスを複素平面の設定のアルゴリズムは不要です。As you’ve seen, you don’t need complex plane setting algorithms to make an immersive experience. 安定化平面は、パズルのピースを 1 つだけです。The stabilization plane is only one piece of the puzzle.
  • すべての可能なときに常に平面を移動ターゲット間で円滑にします。When at all possible, always move the plane between targets smoothly. 瞬時に離れた場所にあるターゲットの切り替えとシーンを視覚的に中断されることができます。Instantly switching distant targets can visually disrupt the scene.
  • 非常に特定のターゲットにロックする平面設定ロジックでのオプションのことを検討します。Consider having an option in your plane setting logic to lock onto a very specific target. そのように、必要な場合は、ロゴまたはタイトルの画面などのオブジェクトでロックされているプレーンことができます。That way, you can have the plane locked on an object, such as a logo or title screen, if needed.

執筆者紹介About the author

Picture of Ben Strukus Ben StrukusBen Strukus
ソフトウェア エンジニア @MicrosoftSoftware Engineer @Microsoft

関連項目See also