案例研究 - 在實境中的的透視技術

當人們思考混合實境,以及他們可以使用Microsoft HoloLens時,他們通常會遵守「我可以新增至會議室的物件為何?」或「我可以將哪些物件分層在空間上?」之類的問題?我想要強調另一個您可以考慮的區域,基本上是一個魔術技巧,使用相同的技術來查看或透過您周圍的實際物件。

技術

如果您已在 RoboRaid中破壞牆、在 片段中解除鎖定牆安全,或很幸好在 2015 年 E3 的 Halo 5 體驗中看到 UNSC Infinity 掛鎖,則您已瞭解我所討論的內容。 視您的想像而定,此視覺技巧可用來將暫時性漏洞放在您的幹牆中,或隱藏鬆散底板底下的世界。

RoboRaid 會在您的牆後面新增三維管道和其他結構,只可透過建立為輸入器中斷的漏洞來看見。

RoboRaid 會在您的牆後面新增三維管道和其他結構,只可透過建立為輸入器中斷的漏洞來看見。

在 HoloLens 上使用其中一個唯一的全像投影,應用程式可以在牆後或透過您的樓層提供內容的假像,就像實境透過實際視窗呈現本身一樣。 將自己向左移動,您可以看到右側的任何專案。 更接近,您可以看到更多所有專案。 主要差異在於真正的漏洞可讓您通過,而您的樓層卻無法讓您跳到該神奇的全像攝影內容。 (我會將工作新增至待辦專案。)

在幕後

此技巧是兩種效果的組合。 首先,全像攝影內容會使用「空間錨點」釘選到世界。使用錨點讓該內容「世界鎖定」表示您查看的內容不會以視覺方式從其附近的實體物件漂移,即使您移動或基礎空間對應系統也會更新其會議室的 3D 模型。

其次,該全像攝影內容在視覺上僅限於非常特定的空間,因此您只能透過實境中的漏洞來查看。 需要查看邏輯孔、視窗或閘道,才能銷售訣竅的遮蔽。 在沒有封鎖大部分檢視的情況下,秘密 Jurassic 維度的空間破解可能看起來就像是放置不佳的恐龍。

這不是實際的螢幕擷取畫面,而是 MR Basics 101 中秘密下層如何查看 HoloLens 的圖例。黑色主機殼未顯示,但您可以透過虛擬孔看到內容。 (在查看實際裝置時,樓層看起來會更消失,因為您的眼睛會聚焦在更遠的距離,就像它不存在一樣。)

這不是實際的螢幕擷取畫面,而是來自 MR Basics 101 的秘密下層如何查看 HoloLens 的圖例。 黑色主機殼未顯示,但您可以透過虛擬孔看到內容。 (在查看實際裝置時,樓層似乎會消失更多,因為您的眼睛將焦點放在更遠的距離,就像它不存在一樣。)

世界鎖定全像攝影內容

在 Unity 中,造成全像攝影內容保持世界鎖定,就像新增 WorldAnchor 元件一樣簡單:

myObject.AddComponent<WorldAnchor>();

WorldAnchor 元件會持續調整其 GameObject (的位置和旋轉,因此階層中該物件下的任何其他專案都會) ,使其相對於附近的實體物件保持穩定。 撰寫內容時,請以此方式建立該內容,讓物件的根樞紐置中在這個虛擬孔中。 (如果您的物件樞紐位於牆內,其位置與旋轉的稍微調整會更明顯,而且空洞看起來可能不太穩定。)

遮蔽除了虛擬孔的一切

有各種方式可選擇性地封鎖檢視,以隱藏在牆內的內容。 最簡單的方法就是 HoloLens 使用加法顯示器,這表示完全黑色物件看起來不可見。 您可以在 Unity 中執行這項操作,而不需要執行任何特殊的著色器或材質技巧,只要建立黑色材質,並將它指派給內容中方塊的物件即可。 如果您不想要進行 3D 模型化,只要使用少數預設的 Quad 物件,並稍微重迭。 這種方法有一些缺點,但取得工作的最快方式,而且取得低精確度的概念證明非常實用,即使您懷疑稍後可能想要重構它也一樣。

上述「黑色方塊」方法的其中一個主要缺點是無法妥善相片。 雖然您的效果可能透過 HoloLens 的顯示看起來完美,但您採用的任何螢幕擷取畫面都會顯示大型黑色物件,而不是牆或樓層的剩餘專案。 這是因為實體硬體和螢幕擷取畫面會以不同的方式複合全像投影和實境。 讓我們一下子到一些假數學...

假數學警示! 這些數位和公式旨在說明某個點,而不是任何類型的精確計量!

透過 HoloLens 看到的內容:

( Reality * darkening_amount ) + Holograms

您在螢幕擷取畫面和影片中看到的內容:

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

英文:您透過 HoloLens 看到的內容是透過太陽鏡) ,以及應用程式想要顯示的任何全像投影,簡單結合深色實境 (。 但是當您擷取螢幕擷取畫面時,相機的影像會根據每個圖元的透明度值,與應用程式的全像投影混合。

其中一種方法是變更「黑色方塊」材質,只寫入深度緩衝區,並使用所有其他不透明材質排序。 如需此範例,請查看 GitHub 上 MixedRealityToolkit 中的 WindowOcclusion.shader 檔案。 此處會複製相關行:

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

(請注意,「位移 50,100」這一行是處理不相關的問題,因此,離開該位移可能很合理。)

實作不可見的遮蔽材質,如下所示,讓您的 app 繪製在顯示器和混合實境螢幕擷取畫面中看起來正確的方塊。 對於獎勵點,您可以嘗試更進一步改善該方塊的效能,方法是執行聰明的動作來繪製較少的不可見圖元,但這真的可以進入我們,而且通常不需要。

以下是 MR Basics 101 中的秘密下層,因為 Unity 會繪製它,但遮蔽方塊的外部部分除外。請注意,下層的樞紐位於方塊的中心,有助於盡可能保持與實際樓層相對的漏洞穩定。

以下是 MR Basics 101 中的秘密下層,因為 Unity 會繪製它,但遮蔽方塊的外部部分除外。 請注意,下層的樞紐位於方塊的中心,有助於盡可能保持與實際樓層相對的漏洞穩定。

親自完成

有 HoloLens 並想要自行試用效果嗎? 您可以 (不需要撰寫任何程式碼) 最簡單的作法是安裝免費的 3D Viewer 應用程式,然後載入 GitHub 上提供的下載.fbx 檔案 ,以檢視會議室中的花花花樣模型。 在 HoloLens 上載入它,您可以看到運作中的假像。 當您在模型前面時,只能看到小孔,其他所有專案都看不到。 從任何其他端查看模型,並完全消失。 使用 3D 檢視器的移動、旋轉和縮放控制項,將虛擬孔置於您可以考慮的任何垂直表面,以產生一些想法!

在 Unity 編輯器中檢視此模型時,將會在花花周圍顯示大型黑色方塊。在 HoloLens 上,方塊會消失,並給予魔術視窗效果。

在 Unity 編輯器中檢視此模型時,將會在花花周圍顯示大型黑色方塊。 在 HoloLens 上,方塊會消失,並給予魔術視窗效果。

如果您想要建置使用此技術的應用程式,請參閱Mixed Reality教學課程中的MR Basics 101教學課程。 第 7 章結尾為樓層的暴增,顯示隱藏的下層 (,如上圖所示) 。 誰說教學課程必須無聊?

以下是您可以接下來採取此想法的一些概念:

  • 請考慮讓虛擬孔內的內容成為互動式的方式。 讓使用者在牆外有一些影響,可以真正改善這種技巧可以提供的奇感。
  • 想一下透過物件回到已知區域的方式。 例如,如何將全像攝影孔放在咖啡桌上,並查看其下方的樓層?

關於作者

Eric Rehmeyer 的圖片 Eric Rehmeyer
資深軟體工程師@Microsoft

另請參閱