空間錨點
空間錨點代表系統經過一段時間追蹤的世界重要點。 每個錨點都有一個可 調整的座標系統,以根據其他錨點或參考框架,以確保錨定全像投影能夠精確地就地保持原位。 在錨點座標系統中轉譯全像投影可讓您在任何指定時間最精確的全像投影位置。 這代價是隨著全像投影位置的一段時間而進行小調整,因為系統會根據真實世界持續將它移回原位。
您也可以跨應用程式會話保存和共用空間錨點:藉由將本機空間錨點儲存到磁碟,並在稍後再載入,您的應用程式可以在單一 HoloLens 上跨多個應用程式會話在真實世界中計算相同的位置。
對於固定縮放或室內規模體驗,將停留在 5 公尺直徑內的固定桌面頭戴式裝置,您通常 可以使用參考 階段框架,而不是空間錨點,以提供單一座標系統來轉譯所有內容。 不過,如果您的應用程式可讓使用者在 HoloLens 中游蕩超過 5 公尺,或許在建築物的整個樓層運作,則需要空間錨點來保持內容穩定。
雖然空間錨點對於在真實世界中應保持固定的全像投影非常有用,但是一旦將錨點放至定位,就無法移動它。 除了錨點,更適合與使用者一起標記的動態全像投影。 最好使用固定參考框架來定位動態全像投影(Unity 世界座標的基礎)或附加的參照框架。
最佳作法
這些空間錨點指南將協助您轉譯穩定、且能準確追蹤現實世界的全像投影。
建立使用者放置的空間錨點
一般而言,用戶是明確放置空間錨點的使用者。
例如,在 HoloLens 上,應用程式可以將使用者的 注視 光線與 空間對應 網格交集,讓使用者決定放置全像投影的位置。 當使用者點選以放置該全像投影時,請在交集點建立空間錨點,然後將全像投影放在該錨點座標系統的原點。
本機空間錨點很容易且高效能建立。 如果多個錨點可以共用其基礎感測器數據,系統會結合內部數據。 我們建議為使用者明確放置的每個全像投影建立新的本機空間錨點,但以下概述的情況除外,例如全像投影的固定群組。
一律轉譯位於錨點 3 公尺範圍內的錨定全像投影
空間錨點可穩固錨點原始位置附近的座標系統。 如果您轉譯距離原點超過 3 公尺的全像投影,全像投影可能會因為左臂效果而與距離該原點的距離成比例發生明顯的位置錯誤。 如果使用者站在錨點附近,這會正常運作,因為全像投影也離使用者很遠。 換句話說,遠距全像投影的角誤差會很小。 不過,如果使用者走到那個遙遠的全像投影上,就會大到他們的觀點,使遠離錨點原點的槓桿臂效果明顯。
應形成固定叢集的群組全像投影
如果應用程式預期這些全像投影彼此維護固定關聯性,多個全像投影可以共用相同的空間錨點。
例如,如果您要在房間里建立全像攝影太陽系的動畫效果,最好將所有太陽系對象系結到中央的單一錨點。 如此一來,他們就會根據彼此順暢地移動。 在此情況下,它是一個整體的太陽系錨定,即使其元件元件在錨點周圍動態移動。
維護全像投影穩定性的關鍵注意事項是遵循上述 3 米規則。
使用靜止的參考架構而不是本機空間錨點來轉譯高動態全像投影
如果您有高度動態的全像投影,例如在房間周圍行走的字元或沿著使用者附近的牆邊浮動 UI,最好略過本機空間錨點,並直接在固定參考框架提供的座標系統中轉譯這些全像投影。 在 Unity 中,您可以直接將全像投影放在沒有 WorldAnchor 的世界座標中來達成此目的。 當使用者遠離全像投影時,固定參考框架中的全像投影可能會發生漂移。 但是對於動態全像投影來說,這不太可能明顯:全像投影會持續移動,或者其動作會持續保持接近使用者,而漂移將會最小化。
動態全像投影的一個有趣的例子是一個物件從某個錨定座標系統移動至另一個座標系統的動畫。 例如,您可能有兩座城堡相距 10 公尺,每個城堡都位於自己的空間錨點上,另一座城堡向另一座城堡發射炮彈。 發射炮彈時,您可以在固定參考框架的適當位置轉譯它,以配合第一座城堡錨定座標系統中的炮彈。 然後它可以在靜止的參考架構中追蹤砲彈在空中飛行 10 公尺的軌跡。 當炮彈到達另一座城堡時,您可以將它移到第二座城堡的錨定座標系統,以便使用該城堡的剛性身體進行物理計算。
如果您要跨裝置共用高度動態全像投影,請挑選一些雲端空間錨點作為其父系,因為無法跨裝置共用固定的參考框架。 不過,您應該確定動態全像投影或檢視該全像投影的裝置會停留在錨點的 3 米半徑內,讓全像投影在所有裝置上都保持穩定。
避免建立空間錨點的網格
當使用者四處走動時,您可能會想要讓應用程式卸載空間錨點的一般網格線,在動態物件四處移動時,將動態物件從錨點轉換成錨點。 不過,這牽涉到應用程式的更多管理,而不需要系統本身在內部維護的深層感測器數據的好處。 在這些情況下,您會將全像投影放在靜止的參考框架中,如上一節所述,以達到更好的結果。 當您在靜態空間周圍預先定位一組雲端空間錨點時,請考慮將空間錨點放在用戶根據上述原則所遇到的主要全像投影位置,而不是建立任意的錨點網格線。 這可確保您能夠讓那些關鍵的全像投影獲得最高的穩定性。
釋出您不再需要的本機空間錨點
當本機空間錨點作用中時,系統會優先保留接近該錨點的感測器數據。 如果您不再使用空間錨點,請停止存取其座標系統。 這可視需要移除其基礎感測器數據。
對於您保存至空間錨點存放區的本機錨點來說,這特別重要。 這些錨點背後的感測器數據將會永久保留,讓您的應用程式在未來會話中找到該錨點,以減少追蹤其他錨點的空間。 只有在未來的會話中,您才需要再次尋找的本機錨點。 我們建議當使用者不再對使用者有意義時,從市集移除它們。
對於雲端空間錨點,您的儲存體可以依照案例需要調整規模。 您可以視需要儲存盡可能多的雲端錨點,當您知道您的使用者不再需要錨點時釋放它們。