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