使用錨點讓虛擬物體出現在 AR 場景中。
為什麼要使用錨定廣告?
在 AR 體驗中,ARCore 的「環境瞭解」功能持續更新,虛擬物件可能會與放置地點的位置偏離。這可能會影響應用程式的真實性和使用者體驗。
錨點可確保物件在空間中保持相同位置和方向,有助於維持真實世界中虛擬物件的視覺效果。
錨點的運作方式
如果您是第一次使用錨點,建議回顧世界的空間和姿勢。
世界空間
- 相機和物件位置的座標空間
- 在世界空間中,相機和物件的位置會從影格到所有影格都更新
姿勢
- 代表物件在世界空間中的位置和方向
- 在 iOS 中也稱為轉換
建立錨點時,您需要使用姿勢來描述相對於目前頁框全球空間估計的位置和方向。
您將一或多個物件附加至這個錨點。錨點和附加至物件的物件看起來會保持在在世界上的位置。錨點姿勢會根據每個影格的世界空間更新,調整物件的姿勢。
您可以將多個物件附加至同一個錨點,確保即使錨點的姿勢調整,這些物件也能維持其相對位置和方向。
在場景中使用錨點
如要在場景中使用錨點,程式碼應:
- 在可追蹤 (例如平面) 或 ARCore 工作階段的情境中建立錨點。
- 將一或多個物件附加至錨點。
錨點可在場景的物件中支援不同類型的定位行為。
您可以根據 AR 場景需要的位置行為來判定錨點結構定義,以及場景物件所需的錨點數量。詳情請參閱以下各節的說明。
選擇錨定內容
使用可追蹤項目或 ARCore 工作階段,在場景中新增錨點。
如果您希望物件 | 將錨點附加至 |
---|---|
在可追蹤項目中出現「二手」的旋轉效果,且旋轉效果必須與可追蹤項目相同。 包括:
|
可追蹤 |
在整個使用者體驗中,似乎保持相同姿勢 | ARCore 工作階段 |
錨定一或多個物件
您可以將一或多個物件附加至錨。一般來說,這些物件與以下一或多個項目的空間關係:
- 彼此
- 可追蹤,例如飛機
- 在世界領域中的定位
錨定標記規範
應用程式的實際運用方式和效能可藉由有效且有效率的方式使用錨點。
附加至鄰近錨點的物件會在 AR 體驗中保持真實位置,並以相對的方式彼此相對相對。
只使用有助於降低 CPU 成本的錨點。
盡可能重複使用錨點
在多數情況下,您應讓多個附近的物件使用相同的錨點,而不要為每個物件建立新的錨點。
如果物件需要維持與可追蹤空間或世界空間中特定位置的專屬空間關係,請為物件使用新的錨點。
請注意,如果場景中的每個物件都有自己的錨點,這些錨點會根據 ARCore 在每個影格中的世界空間估計值,個別調整物件擺出的姿勢。獨立的錨點物件可相互移動或旋轉,而破壞 AR 場景的錯覺,讓虛擬物件相對保持在相對的位置。
範例
舉例來說,假設您的應用程式可讓使用者將虛擬家具擺在房間內。使用者開啟應用程式後,ARCore 就會開始追蹤會議室中的桌面和房間的樓層,做為飛機。使用者將虛擬燈具放在桌面。接著,使用者在地板上放了虛擬椅。
此時,您的場景應有一個錨點連接至桌面平面,另一個則連接至平面平面。
如果使用者在桌面上新增其他虛擬燈具,您可以重複使用已附加至桌面平面的錨點。如此一來,兩個燈具看起來都看似在桌面平面上,而且彼此之間是相對的。椅子也會維持其相對於平面平面的位置。
將物件保持在錨點附近
錨定物件時,請確認這些物件靠近您使用的錨點。避免將 ARCore 更新為世界空間座標,使物件與錨點相距超過八公尺或二十六英尺 (26 英尺) 的距離,以免造成非預期的旋轉動作。
如果您需要讓物件距離現有錨點超過八公尺,請建立更靠近這個位置的新錨點,然後將物件附加至新的錨點。
卸離未使用的錨點
卸離所有不再需要的錨點,提升應用程式效能。
每個可追蹤項目都會產生 CPU 費用,而 ARCore 不會發布附加錨點的可追蹤元件。
錨定標記類型
錨點類型是以其有效的範圍 (從本地或全球範圍) 區分。
本機錨點會儲存在應用程式本機中,且只適用於該應用程式的執行個體。使用者實際位於放置錨點的位置。
Cloud Anchors 會儲存在 Google Cloud 中,且可在應用程式執行個體之間共用。使用者必須實際位於放置錨點的位置。
地理空間錨點的依據為地理緯度、經度和海拔高度,再加上 Google 的視覺化定位系統 (VPS) 資料,提供幾乎世界各地的精確位置。只要應用程式連上網際網路且能夠使用 VPS,使用者即可從遠端位置放置錨點。