名稱字串
XR_ANDROID_unbounded_reference_space
擴充功能類型
執行個體擴充功能
已註冊的擴充號碼
468
修訂版本
1
擴充功能和版本依附元件
上次修改日期
2024-09-12
IP 狀態
沒有已知的 IP 版權聲明。
著作人
Spencer Quin,Google
Jared Finder,Google
Fengtao Fan, Google
Lachlan Ford,Google
Nihav Jain,Google
Levana Chen,Google
總覽
這項擴充功能可讓應用程式建立 UNBOUNDED_ANDROID
參照空間。這個參考空間可讓觀眾在複雜的環境中自由移動,通常距離起點有數公尺之遙,同時也能持續針對觀眾附近的座標系統穩定性進行最佳化。隨著裝置感測更多環境資訊,以建立更佳的場景理解能力,參考空間的來源可能會隨著大幅調整而漂移,以維持裝置追蹤。
如要建立 UNBOUNDED_ANDROID
參考空間,應用程式可以設定 XrReferenceSpaceCreateInfo::referenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
,並傳遞至 xrCreateReferenceSpace。
XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized
// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
.type = XR_REFERENCE_SPACE_CREATE_INFO;
.next = nullptr;
.referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
.poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));
// After usage
CHK_XR(xrDestroySpace(referenceSpace));
UNBOUNDED_ANDROID
參考空間會在裝置追蹤開始時,建立頭戴式耳機位置的全球鎖定原點。它會以重力方向對齊,排除俯仰和橫滾,並將 +X 指向右側、+Y 指向上方,而 -Z 指向前方。
當應用程式需要算繪超出單一 STAGE
邊界範圍的世界規模內容 (例如整棟建築物或多層樓) 時,UNBOUNDED_ANDROID
空間就非常實用。
UNBOUNDED_ANDROID
空間會隨著時間調整其原點,以維持觀眾附近的穩定性。可視需要進行微幅和大幅調整,以維持裝置追蹤。
- 執行階段不應將 XrEventDataReferenceSpaceChangePending 事件排入佇列,以回應輕微調整。
- 為了因應大量調整,執行階段應將 XrEventDataReferenceSpaceChangePending 事件排入佇列。舉例來說,由於追蹤失敗,
UNBOUNDED_ANDROID
空間中的姿勢會重設,並根據世界中斷的估計值 (「新地圖」) 重新建立追蹤。 - 系統會持續更新對世界的理解,並調整裝置追蹤。如果應用程式無論追蹤是否重設,都需要持續的位置資訊,則可在這種情況下使用錨點。
參照聊天室變更事件
針對由 XrEventDataReferenceSpaceChangePending 結構定義的參數,該結構會在世界變更或最佳化重新定位事件時傳回:
typedef struct XrEventDataReferenceSpaceChangePending {
XrStructureType type;
const void* next;
XrSession session;
XrReferenceSpaceType referenceSpaceType;
XrTime changeTime;
XrBool32 poseValid;
XrPosef poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;
成員說明
- 「
referenceSpaceType
」目前狀態:XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
。 changeTime
會代表重新定位完成時的XrTime
。poseValid
會因為斷線估計值而為false
,或在重新連線後為true
。poseValid
為false
時,poseInPreviousSpace
將無效。
如果檢視畫面、控制器或其他空間相對於 UNBOUNDED_ANDROID
空間發生追蹤遺失情形,應用程式可以繼續接收推測或最後已知的 position
和 orientation
值。這些推斷姿勢可以根據頸部模型更新、慣性死算法或最後已知位置等資訊來推斷。應用程式可以假設會繼續設定 XR_SPACE_LOCATION_POSITION_VALID_BIT
和 XR_VIEW_STATE_POSITION_VALID_BIT
,但 XR_SPACE_LOCATION_POSITION_TRACKED_BIT
和 XR_VIEW_STATE_POSITION_TRACKED_BIT
可能會在執行階段清除,以表示位置是透過這種方式推斷或最後已知。
追蹤功能恢復後,執行階段可能會任意重新設定原點,例如將原點移至與檢視器重疊的位置。應用程式可以檢查 XrEventDataReferenceSpaceChangePending 事件傳回的 poseValid
值,判斷是否可供使用。
新物件類型
新旗標類型
新列舉常數
XrReferenceSpaceType 列舉已擴充以下項目:
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
新列舉項目
新結構體
新函式
問題
版本記錄
- 修訂版本 1,2024-09-12 (Levana Chen)
- 初始擴充功能說明