座標系統

在核心上,混合實境應用程式會將 全像投影 放在您的世界中,看起來就像和聲音真實物件一樣。 這牽涉到將這些全像投影精確定位和導向于世界有意義的位置,無論是世界是其實體空間或您已建立的虛擬領域。 Windows 提供各種真實全局座標系統來表示幾何,這些稱為 空間座標系統。 您可以使用這些系統來推斷全像投影位置、方向、 注視 光線或 手部位置


裝置支援

功能 HoloLens (第 1 代) HoloLens 2 沉浸式頭戴裝置
固定參考框架 ✔️ ✔️ ✔️
附加的參考框架 ✔️ ✔️ ✔️
參考階段框架 尚不支援 尚不支援 ✔️
空間錨點 ✔️ ✔️ ✔️
空間對應 ✔️ ✔️
場景理解 ✔️

混合實境體驗調整

您可以針對各種使用者體驗設計混合實境應用程式,從使用頭戴式裝置方向的 360 度視訊檢視器,到使用空間對應和空間錨點的完整世界規模應用程式和遊戲:


體驗規模 規格需求 範例體驗
僅限方向 頭戴式裝置方向 (重力對齊) 360° 影片檢視器
基座縮放比例 上方加上以零位置為基礎的頭戴式裝置位置 賽車遊戲或太空模擬器
常設規模 上方加上 階段樓層原點 動作遊戲,您可以在其中就地擷耙和擷
會議室規模 上方加上 階段界限多邊形 您在其中逐步解說遊戲的解說遊戲
全球規模 空間錨點 (,通常是 空間對應) 具有來自真實牆的客體遊戲,例如 RoboRaid

上述體驗會遵循「巢狀 Dolls」模型。 Windows Mixed Reality的主要設計準則是:指定的頭戴式裝置支援專為目標體驗規模和所有較小規模所建置的應用程式。


6DOF 追蹤 已定義樓層 360° 追蹤 定義的界限 空間錨點 最大體驗
- - - - 僅限方向
- - -
- - 常設 - 向前
- 常設 - 360°
房間
世界

HoloLens 尚不支援參考階段框架。 HoloLens 上的會議室縮放應用程式目前需要使用 空間對應場景瞭解 來尋找使用者樓層和牆。

空間座標系統

所有 3D 圖形應用程式都會使用 笛卡兒座標系統 來推斷虛擬物件的位置和方向。 這些座標系統會建立三個垂直軸:X、Y 和 Z。您新增至場景的每個物件都會在其座標系統中具有 XYZ 位置。 Windows 會呼叫在實體世界中具有實際 意義的座標系統 ,以公尺表示其座標值。 這表示在 X、Y 或 Z 軸上放置兩個單位的物件會在混合實境中呈現時,彼此相隔兩公尺。 瞭解這一點,您可以輕鬆地以真實世界規模轉譯物件和環境。

一般而言,笛卡兒座標系統稱為「右手」或「左手」,因為您可以使用手部位置來指出 XYZ 軸的方向。 在這兩個座標系統中,正 X 軸指向右邊,而正 Y 軸會指向上。 這兩者之間的差異在於,在右手座標系統中,Z 軸會指向 您,而在左側座標系統中,Z 軸會指向 您。

顯示右手座標系統的某人右手圖片

示範左手座標系統的某人左側圖片

Windows (上的空間座標系統,因此,Windows Mixed Reality) 一律是靠右手。

[!NOTES]

  • Unity 和 Unreal 使用左側座標系統。
  • 雖然左手和右手座標是最常見的系統,但在 3D 軟體中使用其他座標系統。 例如,3D 模型化應用程式使用座標系統,其中 Y 軸指向檢視器或離開檢視器,而 Z 軸指向上。

建置僅限方向或基座的縮放體驗

全像攝影 轉譯 的關鍵在於變更應用程式的全像投影檢視,當使用者四處移動時每個畫面,以符合其預測的頭部動作。 您可以使用固定的參考框架,建置遵守使用者頭部位置和頭部方向變更的基座規模體驗

某些內容必須忽略頭部位置更新,並一律固定在所選標題和使用者之間的距離。 主要範例是 360 度視訊:因為視訊是從單一固定的觀點擷取,所以即使檢視方向隨著使用者外觀而變更,檢視位置還是會根據內容移動而改變。 您可以使用附加的參考框架來建置這類僅限方向的體驗

固定參考框架

固定式參考框架所提供的座標系統的運作方式是盡可能根據世界將物件的位置保持穩定,同時遵守使用者頭部位置的變更。

對於 Unity等遊戲引擎中的基座縮放體驗,固定的參考框架是定義引擎「世界原點」的內容。放置於特定全局座標的物件會使用固定的參考框架,使用這些相同的座標在真實世界中定義其位置。 即使在使用者逐步解說的情況下,仍會保留在世界中的內容稱為 已鎖定 的內容。

應用程式通常會在啟動時建立一個固定的參考框架,並在應用程式的存留期內使用其座標系統。 身為 Unity 中的應用程式開發人員,您可以根據來源開始放置內容,這會位於使用者的初始頭部位置和方向。 如果使用者移至新位置,並想要繼續其基座規模體驗,您便可以在該位置最近使用世界原點。

隨著時間,隨著系統深入瞭解使用者的環境,它可能會判斷真實世界中各種點之間的距離比先前認為的系統還要短或更長。 如果您在 HoloLens 上的應用程式在固定的參考框架中轉譯全像投影,而使用者漫遊超過大約 5 公尺寬的區域,您的應用程式可能會觀察到這些全像投影觀察到的位置漂移。 如果您的體驗讓使用者漫遊超過 5 公尺,您要建置 世界規模體驗,這需要其他技術才能讓全像投影保持穩定,如下所述。

附加的參考框架

附加的參考框架會在使用者逐步流覽時移動,並定義應用程式第一次建立框架時定義的固定標題。 這可讓使用者輕鬆查看該參考框架內的內容。 以這個使用者相對方式呈現的內容稱為 主體鎖定 內容。

當頭戴式裝置無法找出世界的位置時,附加的參考框架提供唯一的座標系統,可用來轉譯全像投影。 這非常適合用來顯示後援 UI,告知使用者他們的裝置在世界中找不到它們。 基座縮放或更高的應用程式應該包含僅限方向的後援,以協助使用者再次進入,UI 類似于Mixed Reality首頁中顯示的 UI。

建置常設規模或會議室規模體驗

若要超越沉浸式頭戴式裝置的基座規模,並建置 常設規模體驗,您可以使用 階段參考框架

若要提供 會議室規模體驗,讓使用者在預先定義的 5 公尺界限內逐步解說,您也可以檢查 階段界限

參考階段框架

第一次設定沉浸式頭戴式裝置時,使用者會定義 階段,代表他們會遇到混合實境的空間。 階段會以最小方式定義 階段原點,這是以使用者所選樓層位置為中心的空間座標系統,以及他們想要使用裝置的向前方向。 藉由將此階段座標系統的內容放在 Y=0 樓層平面上,您可以確保全像投影在使用者位於樓層,為使用者提供 常設規模體驗

階段界限

使用者也可以選擇性地定義 階段界限,這是他們清除的會議室內區域,以在混合實境中四處移動。 若是如此,應用程式可以使用這些界限來建置 會議室規模體驗,以確保全像投影一律放在使用者可觸達這些體驗的位置。

因為階段參考框架提供單一固定座標系統,用來放置樓層相對內容,所以移植針對虛擬實境頭戴式裝置所開發的常設規模和會議室規模應用程式,是最簡單的路徑。 不過,與這些 VR 平臺一樣,單一座標系統只能在大約 5 公尺 (16 英呎) 直徑內穩定內容,而左手效果會導致距離中央的內容明顯轉移,因為系統會進行調整。 若要超過 5 公尺,需要空間錨點。

建置全球規模體驗

HoloLens 允許真正的 世界規模體驗 ,讓使用者漫遊超過 5 公尺。 若要建置全球規模應用程式,您需要超出用於會議室規模體驗的新技術。

為何無法超過 5 公尺使用單一固定座標系統

現今,撰寫遊戲、資料視覺效果應用程式或虛擬實境應用程式時,典型的方法是建立一個絕對全局座標系統,讓所有其他座標都能可靠地對應回。 在該環境中,您一律可以找到穩定轉換,以定義該世界中任何兩個物件之間的關聯性。 如果您未移動這些物件,其相對轉換一律會維持不變。 在轉譯純虛擬世界時,這種全域座標系統很適合您事先知道所有幾何。 現今的會議室規模 VR 應用程式通常會建立這種絕對房間縮放座標系統,其原點位於樓層。

相反地,HoloLens 之類的未系結混合實境裝置具有動態感應器驅動的世界理解能力,隨著使用者周遭環境一段時間持續調整其知識,因為他們在建築物的整個樓層上逐步執行許多公尺。 在世界規模體驗中,如果您將所有全像投影放在單一固定座標系統中,這些全像投影一定會隨著時間而漂移,不論是根據世界還是彼此。

例如,頭戴式裝置目前可能認為世界有兩個位置相隔 4 公尺,之後再精簡該瞭解,瞭解位置實際上相隔 3.9 公尺。 如果這些全像投影一開始在單一固定座標系統中放置 4 公尺,其中一個全像投影一律會從真實世界顯示 0.1 公尺。

空間錨點

Windows Mixed Reality可讓您建立空間錨點來標示使用者放置全像投影的世界中的重要點,以解決上一節中所述的問題。 空間錨點代表系統在一段時間中應該於真實世界中追蹤的一個重要時間點。

當裝置瞭解世界時,這些空間錨點可以視需要彼此調整其位置,以確保每個錨點都能精確地根據真實世界放置的位置。 藉由將空間錨點放在使用者放置全像投影的位置,然後根據空間錨點放置該全像投影,您可以確保全像投影維持最佳穩定性,即使使用者漫遊超過數十公尺也一樣。

根據空間錨點的這個連續調整,是座標系統與空間錨點和固定參考框架之間的主要差異:

  • 放置於固定參照框架中的全像投影,都會保持彼此的固定關聯性。 不過,當使用者逐步執行長距離時,該框架的座標系統可能會根據世界漂移,以確保使用者旁邊的全像投影看起來穩定。

  • 置於參考階段框架中的全像投影也會保持彼此的固定關聯性。 相對於固定框架,階段框架一律會根據其定義的實體原點就地固定。 不過,在階段座標系統中呈現超過其 5 公尺界限的內容只會在使用者位於該界限內時顯示穩定。

  • 使用某個空間錨點放置的全像投影可能會根據使用另一個空間錨點放置的全像投影而漂移。 這可讓 Windows 進一步瞭解每個空間錨點的位置,例如,即使某個錨點需要向左調整,另一個錨點也需要向右調整。

相較于固定的參考框架,它一律會針對使用者附近的穩定性進行優化,參考和空間錨點的階段框架可確保其原點附近的穩定性。 這可協助這些全像投影在經過一段時間後保持正確位置,但也表示轉譯的全像投影與座標系統原點太遠,將會經歷越來越嚴重的 Lever-arm 效果。 這是因為小調整階段或錨點的位置和方向會與該錨點的距離成正比。

良好的經驗法則是確保您根據遠距空間錨點座標系統呈現的任何專案,都位於其原點的大約 3 公尺內。 對於附近的階段原點,轉譯遠距內容是正常的,因為任何增加的位置錯誤只會影響不會在使用者檢視中移動太多小型全像投影。

空間錨點持續性

即使應用程式暫停或裝置關閉,空間錨點也可以讓您的 app 記住重要的位置。

您可以將應用程式建立的空間錨點儲存到磁片,然後稍後再將其載入應用程式 的空間錨點存放區,以將它們保存在您的應用程式的空間錨點存放區中。 儲存或載入錨點時,您會提供對應用程式有意義的字串索引鍵,以便稍後識別錨點。 請將此機碼視為錨點的檔案名。 如果您想要將其他資料與該錨點產生關聯,例如使用者在該位置放置的 3D 模型,請將該模型儲存到您應用程式的本機儲存體,並將它與您所選擇的金鑰產生關聯。

藉由將錨點保存到市集,您的使用者可以放置個別全像投影,或放置一個工作區,讓應用程式放置其各種全像投影,然後在您應用程式的許多用途之後找到這些全像投影。

您也可以使用 Azure Spatial Anchors 跨 HoloLens、iOS 和 Android 裝置進行非同步全像投影持續性。 藉由共用永久性雲端空間錨點,多個裝置可以觀察一段時間的相同保存全像投影,即使這些裝置同時不存在也一樣。

空間錨點共用

您的應用程式也可以與其他裝置即時共用空間錨點,以允許即時共用體驗。

藉由使用 Azure Spatial Anchors,您的應用程式可以在多個 HoloLens、iOS 和 Android 裝置之間共用空間錨點。 透過讓每個裝置使用同一個空間錨點轉譯全像投影,所有使用者將會看到全像投影出現在真實世界中的相同位置。

避免前端鎖定的內容

我們強烈建議不要轉譯頭部鎖定的內容,這會保留在顯示器 (的固定位置,例如 HUD) 。 一般而言,頭部鎖定的內容對使用者而言很不方便,而且不像其世界的自然部分。

頭部鎖定的內容通常應該以附加至使用者的全像投影取代,或放在世界本身。 例如, 資料指標 通常應該推送到世界,並自然調整以反映使用者注視下物件的位置和距離。

處理追蹤錯誤

在某些環境中,例如深色門道,使用內部追蹤的頭戴式裝置可能無法在世界中正確找到自己。 這可能會導致全像投影在未正確處理時顯示或出現在不正確的位置。 我們現在討論可能發生的情況、其對使用者體驗的影響,以及最佳處理這種情況的秘訣。

由於感應器資料不足,頭戴式裝置無法追蹤

有時候,頭戴式裝置的感應器無法找出頭戴式裝置的位置。 這會在符合下列情形時發生:

  • 房間很深
  • 如果感應器被毛髮或手部遮蔽
  • 如果周圍沒有足夠的紋理。

發生這種情況時,頭戴式裝置將無法使用足夠的精確度來追蹤其位置,以轉譯世界鎖定的全像投影。 您無法瞭解空間錨點、固定框架或階段框架是以裝置為基礎的位置。 不過,您仍然可以在附加的參考框架中轉譯內文鎖定的內容。

您的應用程式應該告訴使用者如何取得位置追蹤,轉譯一些後援主體鎖定的內容,以描述一些秘訣,例如發現感應器並開啟更多光線。

由於環境中的動態變更而導致頭戴式裝置追蹤不正確

如果環境中有許多動態變更,裝置無法正確追蹤,例如許多人員在房間中四處走動。 在此情況下,當裝置嘗試在此動態環境中自行追蹤時,全像投影似乎會跳躍或漂移。 如果您遇到此案例,建議您在較不動態的環境中使用裝置。

頭戴式裝置追蹤不正確,因為環境已隨著時間大幅變更

當您開始使用頭戴式裝置時,已經移動了一些桌上、牆掛等裝置時,某些全像投影可能會從其原始位置移位。 先前的全像投影也可能在使用者移動新空間時四處跳動,因為系統已不再瞭解您的空間。 系統接著會嘗試重新對應環境,同時嘗試協調會議室的功能。 在此案例中,建議您鼓勵使用者在預期的情況下取代釘選在世界中的全像投影。

頭戴式裝置追蹤不正確,因為環境中的空間相同

有時候,住家或其他空間可能會有兩個相同的區域。 例如,兩個完全相同的會議室、兩個相同的角落區域、兩個大型完全相同海報,涵蓋裝置的視野。 在這種情況下,裝置有時可能會混淆相同的元件,並在其內部標記法中將它們標示為相同。 這可能會導致來自某些區域的全像投影出現在其他位置。 裝置可能會因為環境的內部表示已損毀而開始經常遺失追蹤。 在此情況下,建議您重設系統的環境瞭解。 重設地圖會導致遺失所有空間錨點位置。 這會導致頭戴式裝置在環境的獨特區域中順利追蹤。 不過,如果裝置再次在相同的區域之間混淆,問題可能會再次發生。

另請參閱