ケーススタディ-実際の穴を見るCase study - Looking through holes in your reality

混合現実と、Microsoft HoloLens で実行できることを考える人は、通常、「どのオブジェクトをどのようにしてルームに追加できるか」といった質問になります。When people think about mixed reality and what they can do with Microsoft HoloLens, they usually stick to questions like "What objects can I add to my room?" または、「どのようにして自分のスペースにレイヤーを持たせることができますか」ということです。or “What can I layer on top of my space?" ここでは、同じテクノロジを使用して、実際の物理的なオブジェクトを検索したり、そこから見たりすることができる別の領域を強調することができます。I’d like to highlight another area you can consider—essentially a magic trick—using the same technology to look into or through real physical objects around you.

技術The tech

壁面を克服するように、エイリアンした試合かどうか RoboRaid 、壁に安全にロックを解除 フラグメント 、運が発生しました。UNSC 無限大格納庫を表示する、 E3 2015 で Halo 5 経験 、話の内容を見ています。If you've fought aliens as they break through your walls in RoboRaid, unlocked a wall safe in Fragments, or were lucky enough to see the UNSC Infinity hangar in the Halo 5 experience at E3 in 2015, then you've seen what I'm talking about. 想像に応じて、この視覚的なトリックを使用して、drywall に一時的な穴を置いたり、疎 floorboard でワールドを隠したりすることができます。Depending on your imagination, this visual trick can be used to put temporary holes in your drywall or to hide worlds under a loose floorboard.

RoboRaid は、3次元パイプと、壁の背後にあるその他の構造を追加します。これは、侵入の中断として作成された穴によってのみ表示されます。

RoboRaid は、3次元パイプと、壁の背後にあるその他の構造を追加します。これは、侵入の中断として作成された穴によってのみ表示されます。RoboRaid adds three-dimensional pipes and other structure behind your walls, visible only through holes created as the invaders break through.

HoloLens でこれらの固有のホログラムの1つを使用すると、アプリでは、実際のウィンドウを通じて自然に表示されるのと同じ方法で、壁の背後やフロアを介してコンテンツの錯覚を提供できます。Using one of these unique holograms on HoloLens, an app can provide the illusion of content behind your walls or through your floor in the same way that reality presents itself through an actual window. 左側に移動すると、右側に何があるかを確認できます。Move yourself left, and you can see whatever is on the right side. 詳細については、さらに詳しく見ていきましょう。Get closer, and you can see a bit more of everything. 大きな違いは、実際の穴によって、魔法の holographic コンテンツに stubbornly ことができないことです。The major difference is that real holes allow you through, while your floor stubbornly won't let you climb through to that magical holographic content. (バックログにタスクを追加します)。(I'll add a task to the backlog.)

しくみBehind the scenes

このトリックは、2つの効果を組み合わせたものです。This trick is a combination of two effects. まず、holographic コンテンツが "空間アンカー" を使用して世界にピン留めされます。First, holographic content is pinned to the world using "spatial anchors." アンカーを使用してそのコンテンツを "世界ロック" にすることは、移動したり、基になる空間マッピングシステムが部屋の3D モデルを更新したりしても、周囲の物理的なオブジェクトからは視覚的にずれないことを意味します。Using anchors to make that content "world-locked" means that what you're looking at doesn't visually drift away from the physical objects near it, even as you move or the underlying spatial mapping system updates its 3D model of your room.

2つ目は、holographic コンテンツが非常に特殊な領域に視覚的に限定されているので、実際にはその穴だけを見ることができるからです。Secondly, that holographic content is visually limited to a very specific space, so you can only see through the hole in your reality. このオクルージョンは、トリックを販売する論理的な穴、ウィンドウ、または入室を探す必要があるために必要です。That occlusion is necessary to require looking through a logical hole, window, or doorway, which sells the trick. ほとんどのビューがブロックされていなくても、secret Jurassic ディメンションへの領域の亀裂は、適切に配置されていない恐竜のように見えます。Without something blocking most of the view, a crack in space to a secret Jurassic dimension might just look like a poorly placed dinosaur.

これは実際のスクリーンショットではありませんが、MR 基本101の secret 黄泉が HoloLens を検索する方法を示しています。

これは実際のスクリーンショットではありませんが、 MR 基本 101のシークレットが HoloLens でどのように見えるかを示しています。This is not an actual screenshot, but an illustration of how the secret underworld from the MR Basics 101 looks on HoloLens. 黒いエンクロージャは表示されませんが、仮想の穴でコンテンツを見ることができます。The black enclosure doesn’t show up, but you can see content through a virtual hole. (実際のデバイスを参照している場合、フロアはそれ以上に見えなくなるように見えます。これは、それほど離れているように見えます。(When looking through an actual device, the floor would seem to disappear even more because your eyes focus at a further distance as if it’s not even there.)

ワールド-holographic コンテンツのロックWorld-locking holographic content

Unity では、WorldAnchor コンポーネントを追加するのと同じように、holographic コンテンツを世界中にロックしたままにすることができます。In Unity, causing holographic content to stay world-locked is as easy as adding a WorldAnchor component:

myObject.AddComponent<WorldAnchor>();

WorldAnchor コンポーネントは、近くの物理オブジェクトとの間で安定した状態を維持するために、そのオブジェクト (階層内のそのオブジェクトの下) の位置と回転を絶えず調整します。The WorldAnchor component will constantly adjust the position and rotation of its GameObject (and thus anything else under that object in the hierarchy) to keep it stable relative to nearby physical objects. コンテンツを作成するときは、オブジェクトのルートピボットがこの仮想ホールの中央に配置されるように作成します。When authoring your content, create it in such a way that the root pivot of your object is centered at this virtual hole. (オブジェクトのピボットが壁の中で深い場合、位置と回転の微妙な微調整ははるかに目立つようになり、穴が非常に安定していない可能性があります)。(If your object's pivot is deep in the wall, its slight tweaks in position and rotation will be much more noticeable, and the hole may not look very stable.)

仮想ホールを除いてすべてを OccludingOccluding everything but the virtual hole

ビューを選択的にブロックして、壁面で非表示にする方法はさまざまです。There are a variety of ways to selectively block the view to what is hidden in your walls. 最も簡単なのは、HoloLens が加法ディスプレイを使用するという事実を利用することです。つまり、完全に黒のオブジェクトは非表示になります。The simplest one takes advantage of the fact that HoloLens uses an additive display, which means that fully black objects appear invisible. これは、特殊なシェーダーや素材を使用せずに Unity で行うことができます。黒の素材を作成して、コンテンツ内のボックスを持つオブジェクトに割り当てるだけです。You can do this in Unity without doing any special shader or material tricks— just create a black material and assign it to an object that boxes in your content. 3D モデリングを実行したくない場合は、いくつかの既定の Quad オブジェクトを使用して、わずかに重なります。If you don't feel like doing 3D modeling, just use a handful of default Quad objects and overlap them slightly. このアプローチにはいくつかの欠点がありますが、動作を実現するための最も簡単な方法ですが、後でリファクタリングする可能性があると思われる場合でも、非常に忠実度の高い概念実証を利用することができます。There are a number of drawbacks to this approach, but it is the fastest way to get something working, and getting a low-fidelity proof of concept working is great, even if you suspect you might want to refactor it later.

上記の "ブラックボックス" アプローチの大きな欠点の1つは、写真が適切ではないことです。One major drawback to the above "black box" approach is that it doesn't photograph well. お客様の影響は HoloLens の表示によって完璧に見える場合がありますが、どのスクリーンショットを使用しても、壁やフロアの残りの部分ではなく、大きな黒のオブジェクトが表示されます。While your effect might look perfect through the display of HoloLens, any screenshots you take will show a large black object instead of what remains of your wall or floor. その理由は、物理的なハードウェアとスクリーンショットは、複合ホログラムと現実が異なることです。The reason for this is that the physical hardware and screenshots composite holograms and reality differently. それでは、いくつかの偽の数値に迂回てみましょう。Let's detour for a moment into some fake math...

偽の算術アラートです。これらの数値と数式は、正確なメトリックではなく、ポイントを示すことを目的としています。Fake math alert! These numbers and formulas are meant to illustrate a point, not to be any sort of accurate metric!

HoloLens を通じて表示するもの:What you see through HoloLens:

( Reality * darkening_amount ) + Holograms

スクリーンショットとビデオには次のような内容が表示されます。What you see in screenshots and video:

( Reality * ( 1 - hologram_alpha ) ) + Holograms * hologram_alpha

英語:HoloLens を通じて表示される内容は、(サングラスを通じてのように) 暗くなった現実と、アプリが表示しようとしているホログラムの単純な組み合わせです。In English: What you see through HoloLens is a simple combination of darkened reality (like through sunglasses) and whatever holograms the app wants to show. しかし、スクリーンショットを撮ると、ピクセルごとの透明度の値に応じて、カメラのイメージがアプリのホログラムとブレンドされます。But when you take a screenshot, the camera's image is blended with the app's holograms according to the per-pixel transparency value.

この問題を回避する方法の1つとして、"ブラックボックス" の素材を変更して、深度バッファーに書き込むだけで、他の不透明な素材をすべて使用して並べ替えることができます。One way to get around this is to change the "black box" material to only write to the depth buffer, and sort with all the other opaque materials. この例については、GitHub のMixedRealityToolkit ファイルを確認してください。For an example of this, check out the WindowOcclusion.shader file in the MixedRealityToolkit on GitHub. 関連する行がここにコピーされます。The relevant lines are copied here:

"RenderType" = "Opaque"
"Queue" = "Geometry"
ColorMask 0

("Offset 50, 100" という行は、関連のない問題に対処するものであるため、そのままにしておくとよいでしょう)。(Note the "Offset 50, 100" line is to deal with unrelated issues, so it'd probably make sense to leave that out.)

そのような非表示の遮蔽物を実装すると、アプリでは、画面と mixed reality のスクリーンショットで適切に見える箱を描くことができます。Implementing an invisible occlusion material like that will let your app draw a box that looks correct in the display and in mixed-reality screenshots. ボーナスポイントについては、このボックスのパフォーマンスをさらに向上させることができます。これには、少しの見えないピクセルを描画することができますが、それは雑草になる可能性があり、通常は必要ありません。For bonus points, you can try to improve the performance of that box even further by doing clever things to draw even fewer invisible pixels, but that can really get into the weeds and usually won't be necessary.

次に示すのは、occluding ボックスの外側の部分を除いて、Unity によって描画される MR の基本101のシークレットです。

次に示すのは、occluding ボックスの外側の部分を除いて、Unity によって描画されるMR の基本 101のシークレットです。Here is the secret underworld from MR Basics 101 as Unity draws it, except for the outer parts of the occluding box. 黄泉の方のために、この図は箱の中央にあります。これにより、穴をできるだけ安定した状態に保つことができます。Note that the pivot for the underworld is at the center of the box, which helps keep the hole as stable as possible relative to your actual floor.

自分で実行するDo it yourself

HoloLens を所有していて、その効果を試す必要がある場合は、Have a HoloLens and want to try out the effect for yourself? 最も簡単な方法は (コーディングが不要)、無料の3D ビューアーアプリをインストールし、 GitHub で提供した fbx ファイルをダウンロードして、部屋に花ポットモデルを表示することです。The easiest thing you can do (no coding required) is to install the free 3D Viewer app and then load the download the.fbx file I've provided on GitHub to view a flower pot model in your room. これを HoloLens に読み込んで、仕事ができていることを確認できます。Load it on HoloLens, and you can see the illusion at work. モデルの前にいる場合は、小さな穴だけを見ることができます。他のすべての要素は非表示になります。When you're in front of the model, you can only see into the small hole—everything else is invisible. モデルを他の側から見ると、完全に消えます。Look at the model from any other side and it disappears entirely. 3D ビューアーの移動、回転、およびスケールのコントロールを使用して、いくつかのアイデアを生成するために考えられる垂直方向の表面に仮想ホールを配置します。Use the movement, rotation, and scale controls of 3D Viewer to position the virtual hole against any vertical surface you can think of to generate some ideas!

Unity エディターでこのモデルを表示すると、flowerpot の周りに大きな黒いボックスが表示されます。

Unity エディターでこのモデルを表示すると、flowerpot の周りに大きな黒いボックスが表示されます。Viewing this model in your Unity editor will show a large black box around the flowerpot. HoloLens では、ボックスが消え、マジックウィンドウ効果が提供されます。On HoloLens, the box disappears, giving way to a magic window effect.

この手法を使用するアプリをビルドする場合は、「 Mixed Reality チュートリアル」のMR 基本101チュートリアルをご覧ください。If you want to build an app that uses this technique, check out the MR Basics 101 tutorial in the Mixed Reality tutorials. 第7章は、隠れている (上の図のように) 隠れた黄泉を示すフロアの爆発で終わります。Chapter 7 ends with an explosion in your floor that reveals a hidden underworld (as pictured above). チュートリアルを行ったのは退屈ですか。Who said tutorials had to be boring?

ここでは、次のアイデアを参考にしてください。Here are some ideas of where you can take this idea next:

  • 仮想ホール内のコンテンツを対話形式で作成する方法について考えてみましょう。Think of ways to make the content inside the virtual hole interactive. ユーザーが壁を越える影響を与えることで、このトリックによって得られる不思議な意義を高めることができます。Letting your users have some impact beyond their walls can really improve the sense of wonder that this trick can provide.
  • オブジェクトを使用して既知の領域に戻る方法を考えてみましょう。Think of ways to see through objects back to known areas. たとえば、holographic 穴をコーヒーテーブルに配置し、その下にフロアを表示するにはどうすればよいでしょうか。For example, how can you put a holographic hole in your coffee table and see your floor beneath it?

作成者についてAbout the author

Picture of Eric Rehmeyer Eric RehmeyerEric Rehmeyer
シニアソフトウェアエンジニア@MicrosoftSenior Software Engineer @Microsoft

関連項目See also