XR_ANDROID_spatial_anchor_space
Name String
XR_ANDROID_spatial_anchor_space
Loại tiện ích
Phần mở rộng thực thể
Số máy lẻ đã đăng ký
796
Bản sửa đổi
1
Trạng thái phê chuẩn
Chưa được phê chuẩn
Phần phụ thuộc của tiện ích và phiên bản
XR_EXT_spatial_anchor
Ngày sửa đổi gần đây nhất
2025-09-15
Trạng thái IP
Không có tuyên bố nào về tài sản trí tuệ.
Cộng tác viên
YuSheng Chang, Google
Kyle Chen, Google
Levana Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Tổng quan
Hàm xrCreateSpatialAnchorEXT được xác định trong tiện ích XR_EXT_spatial_anchor cho phép các ứng dụng tạo neo không gian bằng một tay điều khiển XrSpatialEntityEXT để biểu thị neo đó. Ngược lại, tiện ích này tạo một neo không gian được biểu thị bằng một tay điều khiển XrSpace. Điều này hữu ích trong trường hợp ứng dụng muốn:
- Sử dụng xrLocateSpaces để lấy vị trí của neo.
- Xác định vị trí của các không gian khác so với điểm neo.
- Xuất điểm neo bằng
XR_ANDROID_anchor_sharing_export. - Ứng dụng đã đặt các neo và hiện chỉ quan tâm đến vị trí của các neo (để đính kèm nội dung ảo) và không quan tâm đến bất kỳ thành phần nào khác của bất kỳ thực thể nào khác được phát hiện thông qua XrSpatialContextEXT dùng để tạo neo, từ đó cho phép ứng dụng huỷ bối cảnh không gian.
Bạn không thể duy trì các neo được tạo bằng tiện ích này bằng tiện ích XR_ANDROID_device_anchor_persistence và ứng dụng phải sử dụng XR_EXT_spatial_persistence_operations . Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE từ xrPersistAnchorANDROID nếu XrPersistedAnchorSpaceInfoANDROID :: anchor được tạo bằng xrCreateSpatialAnchorSpaceANDROID hoặc xrCreateSpatialAnchorSpaceFromIdANDROID .
Tạo XrSpace cho một Điểm neo không gian
Tạo không gian và neo không gian
Hàm xrCreateSpatialAnchorSpaceANDROID được định nghĩa như sau:
XrResult xrCreateSpatialAnchorSpaceANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorCreateInfoEXT* createInfo,
XrSpatialEntityIdEXT* anchorEntityId,
XrSpace* anchorSpace);
Nội dung mô tả về tham số
sessionlà một tay điều khiển cho XrSession đã tạo trước đó bằng xrCreateSessionspatialContextlà một XrSpatialContextEXT được tạo trước đó bằng xrCreateSpatialContextAsyncEXT .createInfolà con trỏ đến XrSpatialAnchorCreateInfoEXT .anchorEntityIdlà con trỏ đếnXrSpatialEntityIdEXT.anchorSpacelà con trỏ đến XrSpace .
Hàm xrCreateSpatialAnchorSpaceANDROID tạo một neo xuất ra một XrSpatialEntityIdEXT và một tay điều khiển XrSpace. xrCreateSpatialAnchorSpaceANDROID có các yêu cầu xác thực giống như xrCreateSpatialAnchorEXT .
Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialContextEXT được truyền đến xrCreateSpatialAnchorSpaceANDROID không được định cấu hình bằng XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
Đối với khả năng được phát hiện của điểm neo đã tạo bằng xrCreateSpatialAnchorSpaceANDROID , đoạn cuối của thông số kỹ thuật xrCreateSpatialAnchorEXT sẽ được áp dụng.
Cách sử dụng hợp lệ (Ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_spatial_anchor_spacetrước khi gọi xrCreateSpatialAnchorSpaceANDROID -
sessionphải là một tên người dùng XrSession hợp lệ -
spatialContextphải là một tay điều khiển XrSpatialContextEXT hợp lệ -
createInfophải là con trỏ đến cấu trúc XrSpatialAnchorCreateInfoEXT hợp lệ -
anchorEntityIdphải là một con trỏ đến giá trịXrSpatialEntityIdEXT -
anchorSpacephải là con trỏ đến một tay điều khiển XrSpace -
spatialContextphải được tạo, phân bổ hoặc truy xuất từsession
Mã trả về
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ANCHOR_ATTACHABLE_COMPONENT_NOT_FOUND_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
Tạo XrSpace từ một neo không gian hiện có
Hàm xrCreateSpatialAnchorSpaceFromIdANDROID được định nghĩa như sau:
XrResult xrCreateSpatialAnchorSpaceFromIdANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorSpaceFromIdCreateInfoANDROID* createInfo,
XrSpace* anchorSpace);
Nội dung mô tả về tham số
sessionlà một tay điều khiển cho XrSession đã tạo trước đó bằng xrCreateSessionspatialContextlà một XrSpatialContextEXT được tạo trước đó bằng xrCreateSpatialContextAsyncEXT .createInfolà con trỏ đến XrSpatialAnchorSpaceFromIdCreateInfoANDROID .anchorSpacelà con trỏ đến XrSpace .
Trong trường hợp các thực thể neo không gian đã tồn tại từ trước (ví dụ: do tính bền vững), các ứng dụng có thể tạo một XrSpace từ các neo không gian này bằng cách cung cấp mã thực thể không gian của chúng.
Hàm xrCreateSpatialAnchorSpaceFromIdANDROID tạo một tay điều khiển XrSpace bằng cách cung cấp một XrSpatialEntityIdEXT trong trường XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId.
Thời gian chạy phải trả về XR_ERROR_VALIDATION_FAILURE nếu XrSpatialContextEXT được truyền đến xrCreateSpatialAnchorSpaceFromIdANDROID không được định cấu hình bằng XR_SPATIAL_CAPABILITY_ANCHOR_EXT .
Cách sử dụng hợp lệ (Ngầm ẩn)
- Tiện ích
XR_ANDROID_spatial_anchor_spacephải được bật trước khi gọi xrCreateSpatialAnchorSpaceFromIdANDROID -
sessionphải là một tên người dùng XrSession hợp lệ -
spatialContextphải là một tay điều khiển XrSpatialContextEXT hợp lệ -
createInfophải là một con trỏ đến cấu trúc XrSpatialAnchorSpaceFromIdCreateInfoANDROID hợp lệ -
anchorSpacephải là con trỏ đến một tay điều khiển XrSpace -
spatialContextphải được tạo, phân bổ hoặc truy xuất từsession
Mã trả về
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
Cấu trúc XrSpatialAnchorSpaceFromIdCreateInfoANDROID được định nghĩa như sau:
typedef struct XrSpatialAnchorSpaceFromIdCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT anchorEntityId;
} XrSpatialAnchorSpaceFromIdCreateInfoANDROID;
Nội dung mô tả về thành viên
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc.anchorEntityIdlàXrSpatialEntityIdEXTcủa neo không gian hiện có để tạo XrSpace .
Thời gian chạy phải trả về XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT nếu XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId không phải là mã nhận dạng hợp lệ cho spatialContext .
Thời gian chạy phải trả về XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID nếu XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId không phải là mã nhận dạng thực thể hợp lệ cho một neo.
Cách sử dụng hợp lệ (Ngầm ẩn)
- Phải bật tiện ích
XR_ANDROID_spatial_anchor_spacetrước khi sử dụng XrSpatialAnchorSpaceFromIdCreateInfoANDROID -
typephải làXR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID -
nextphải làNULLhoặc một con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc
Vòng đời của neo
Phần tử mẹ của một tay điều khiển XrSpace là một XrSession . Điều này có nghĩa là một tay điều khiển XrSpace đại diện cho neo vẫn hợp lệ ngay cả sau khi xrCreateSpatialAnchorSpaceFromIdANDROID :: spatialContext hoặc xrCreateSpatialAnchorSpaceANDROID :: spatialContext bị huỷ. Việc tạo một XrSpace để đại diện cho một neo thực thể không gian cho phép ứng dụng huỷ XrSpatialContextEXT đã được định cấu hình bằng XR_SPATIAL_CAPABILITY_ANCHOR_EXT trong khi vẫn tiếp tục nhận được tư thế mới nhất của neo bằng cách sử dụng XrSpace của neo đó với xrLocateSpaces, tức là thời gian chạy phải tiếp tục theo dõi neo cho đến khi tất cả các tay điều khiển XrSpace đại diện cho neo đó bị huỷ.
Mã ví dụ
Tạo neo không gian dưới dạng XrSpace
Mã ví dụ sau đây minh hoạ cách tạo một neo không gian và trả về neo đó dưới dạng XrSpace .
XrSpatialEntityIdEXT spatialAnchorEntityId;
XrSpace spatialAnchorSpace {XR_NULL_HANDLE}; // XrSpace handle of anchor
// Spatial anchor create info
XrSpatialAnchorCreateInfoEXT createInfo{
.type = XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_EXT,
.baseSpace = localSpace,
.time = predictedDisplayTime,
.pose = {{0, 0, 0, 1}, {1, 1, 1}},
};
// Create spatial anchor using the new API
CHK_XR(xrCreateSpatialAnchorSpaceANDROID(session, spatialContext, &createInfo, &spatialAnchorEntityId, &spatialAnchorSpace));
// ...
Tạo XrSpace từ mã nhận dạng thực thể neo
Mã ví dụ sau đây minh hoạ cách tạo XrSpace từ mã nhận dạng thực thể neo có sẵn.
XrSpace anchorSpace = XR_NULL_HANDLE;
// Spatial anchor from XrSpace create info
XrSpatialAnchorSpaceFromIdCreateInfoANDROID createInfoFromId{
.type = XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID,
.anchorEntityId = spatialAnchorEntityId,
};
// Create XrSpace handle from spatial anchor ID
CHK_XR(xrCreateSpatialAnchorSpaceFromIdANDROID(session, spatialContext, &createInfoFromId, &anchorSpace));
// ...
Lệnh mới
Cấu trúc mới
Hằng số enum mới
XR_ANDROID_SPATIAL_ANCHOR_SPACE_EXTENSION_NAMEXR_ANDROID_spatial_anchor_space_SPEC_VERSIONMở rộng XrResult :
XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID
Mở rộng XrStructureType :
XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID
Vấn đề
Danh sách phiên bản
Bản sửa đổi 1, ngày 15 tháng 9 năm 2025 (YuSheng Chang, Kyle Chen)
- Nội dung mô tả ban đầu về tiện ích.