混合實境應用程式的核心是將 全像投影 放置在您的世界中,這些全像投影看起來和聽起來都像真實物件。 這涉及將這些全像投影精確定位和定向到世界上有意義的位置,無論世界是他們的實體房間還是您創建的虛擬領域。 Windows 提供各種實際座標系統來表達幾何圖形,這些座標 系統稱為空間座標系統。 您可以使用這些系統來推理全像投影位置、方向、 注視 光線或 手部位置。
設備支持
| 功能 | HoloLens (第 1 代) | HoloLens 2 | 沉浸式耳機 |
| 固定參考系 | ✔️ | ✔️ | ✔️ |
| 附加參考系 | ✔️ | ✔️ | ✔️ |
| 階段參考框架 | 尚未支援 | 尚未支援 | ✔️ |
| 空間錨點 | ✔️ | ✔️ | ✔️ |
| 空間映射 | ✔️ | ✔️ | ❌ |
| 場景理解 | ❌ | ✔️ | ❌ |
混合實境體驗規模
您可以針對各種使用者體驗設計混合實境應用程式,從使用頭戴式裝置方向的 360 度視訊檢視器,到使用空間對應和空間錨點的完整世界規模應用程式和遊戲:
| 體驗規模 | 需求 | 經驗範例 |
|---|---|---|
| 僅限方向 | 耳機方向 ( 重力對齊) | 360° 視訊檢視器 |
| 坐式 | 以上加 耳機位置 基於零位置 | 賽車遊戲或太空模擬器 |
| 站立秤 | 以上加上 舞台地板原點 | 動作遊戲,你在原地躲避 |
| 房間規模 | 上方加上 舞台邊界多邊形 | 在拼圖中走動的益智遊戲 |
| 世界規模 | 空間錨點 ( 通常為 空間對應) | 與來自真實牆壁的敵人進行遊戲,例如 RoboRaid |
上述體驗量表遵循“嵌套娃娃”模型。 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) 一律是右手。
[!筆記]
- 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 改善其對每個空間錨點位置的瞭解,例如,即使一個錨點需要向左調整,而另一個錨點需要向右調整。
與始終針對使用者附近的穩定性進行最佳化的固定參考系相比,舞台參考系和空間錨點可確保其原點附近的穩定性。 這有助於這些全像投影在一段時間內精確地保持在適當的位置,但這也意味著轉譯的全像投影離其座標系原點太遠,將會經歷越來越嚴重的槓桿臂效應。 這是因為對舞台或錨點的位置和方向的微小調整會與與該錨點的距離成正比地放大。
一個好的經驗法則是確保您根據遠處空間錨點的座標系統轉譯的任何內容都位於其原點的大約 3 公尺範圍內。 針對附近的階段原點,轉譯遠處的內容是可以的,因為任何增加的位置錯誤只會影響小型全像投影,而不會在使用者檢視中移動太多。
空間錨點持續性
空間錨點也可以讓應用程式記住重要位置,即使在應用程式暫停或裝置關閉之後也是如此。
您可以將應用程式建立的空間錨點儲存到磁碟,然後稍後將它們保存到應用程式的 空間錨點存放區,以再次載入它們。 儲存或載入錨點時,您會提供對應用程式有意義的字串索引鍵,以便稍後識別錨點。 將此鍵視為錨點的檔案名稱。 如果您想要將其他資料與該錨點建立關聯,例如使用者放置在該位置的 3D 模型,請將其儲存到應用程式的本機儲存空間,並將其與您選擇的金鑰建立關聯。
藉由將錨點保存至市集,您的使用者可以放置個別全像投影,或放置應用程式將放置各種全像投影的工作區,然後稍後在應用程式的許多使用中,在他們預期的位置尋找這些全像投影。
避免頭鎖內容
我們強烈建議不要渲染頭部鎖定內容,因為這些內容會停留在顯示 (中的固定位置,例如 HUD) 。 一般來說,頭鎖內容對用戶來說會感到不舒服,並且感覺不像是他們世界的自然組成部分。
頭鎖定的內容通常應該取代為附加至使用者或放置在世界本身中的全像投影。 例如, 遊標 一般應該推到世界中,自然縮放以反映使用者注視下物件的位置和距離。
處理追蹤錯誤
在某些環境中,例如黑暗的走廊,使用由內而外追蹤的耳機可能無法在世界中正確定位自己。 如果處理不當,這可能會導致全像投影不顯示或出現在不正確的位置。 我們現在討論可能發生這種情況的條件、它對使用者體驗的影響,以及最好地處理這種情況的技巧。
耳機因感應器資料不足而無法追蹤
有時,耳機的傳感器無法確定耳機的位置。 如果出現以下情況,可能會發生這種情況:
- 房間很暗
- 如果感測器被頭髮或手遮住
- 如果周圍沒有足夠的質感。
發生這種情況時,頭戴式裝置將無法以足夠的精確度追蹤其位置,以轉譯世界鎖定的全像投影。 您無法確定空間錨點、固定框架或舞台框架基於設備的位置。 不過,您仍然可以在附加的參考框架中轉譯主體鎖定的內容。
您的應用程式應該告訴使用者如何取得位置追蹤,轉譯一些後援主體鎖定內容,以描述一些秘訣,例如揭露感應器和開啟更多燈。
耳機由於環境動態變化而導致追蹤不正確
如果環境中有很多動態變化,例如許多人在房間裡走來走去,設備就無法正確跟踪。 在此情況下,全像投影可能會在裝置嘗試在此動態環境中追蹤本身時跳躍或漂移。 如果您遇到此案例,建議您在動態較少的環境中使用裝置。
耳機追蹤不正確,因為環境隨時間發生顯著變化
當您在家具、壁掛等已移動的環境中開始使用頭戴式裝置時,某些全像投影可能會從其原始位置移動。 當使用者在新空間中移動時,較早的全像投影也可能會跳轉,因為系統對您空間的瞭解不再正確。 然後,系統會嘗試重新繪製環境,同時嘗試協調房間的特徵。 在此案例中,建議鼓勵使用者取代他們釘選在世界中的全像投影,如果它們未出現在預期的位置。
耳機由於環境中的空間相同而導致追蹤不正確
有時,一個家庭或其他空間可能有兩個相同的區域。 例如,兩個相同的會議室、兩個相同的角落區域、兩張覆蓋設備視野的相同大海報。 在這種情況下,設備有時可能會混淆相同的部件,並在其內部表示中將它們標記為相同。 這可能會導致某些區域的全像投影出現在其他位置。 設備可能會開始經常丟失跟踪,因為它的環境內部表示已損壞。 在這種情況下,建議重置系統的環境理解。 重設地圖會導致遺失所有空間錨點位置。 這將使耳機在環境的獨特區域中能夠很好地跟踪。 但是,如果設備再次在相同區域之間混淆,則問題可能會再次出現。