XR_ANDROID_spatial_anchor_space
Name String
XR_ANDROID_spatial_anchor_space
ประเภทส่วนขยาย
ส่วนขยายอินสแตนซ์
หมายเลขต่อที่ลงทะเบียนไว้
796
การแก้ไข
1
สถานะการให้สัตยาบัน
ไม่ได้รับการให้สัตยาบัน
ทรัพยากร Dependency ของส่วนขยายและเวอร์ชัน
XR_EXT_spatial_anchor
วันที่แก้ไขล่าสุด
2025-09-15
สถานะ IP
ไม่มีการอ้างสิทธิ์ IP ที่ทราบ
ผู้เขียน
YuSheng Chang, Google
Kyle Chen, Google
Levana Chen, Google
Nihav Jain, Google
Spencer Quin, Google
ภาพรวม
ฟังก์ชัน xrCreateSpatialAnchorEXT ที่กำหนดไว้ในส่วนขยาย XR_EXT_spatial_anchor ช่วยให้แอปพลิเคชันสร้าง Anchor เชิงพื้นที่ด้วยแฮนเดิล XrSpatialEntityEXT เพื่อแสดงแอปพลิเคชันได้ ในทางตรงกันข้าม ส่วนขยายนี้จะสร้าง Anchor เชิงพื้นที่ซึ่งแสดงด้วยแฮนเดิล XrSpace แทน ซึ่งจะเป็นประโยชน์ในกรณีที่แอปพลิเคชันต้องการทำสิ่งต่อไปนี้
- ใช้ xrLocateSpaces เพื่อดูตำแหน่งของ Anchor
- ค้นหาพื้นที่อื่นๆ ที่เกี่ยวข้องกับ Anchor
- ส่งออก Anchor โดยใช้
XR_ANDROID_anchor_sharing_export - แอปพลิเคชันได้วาง Anchor แล้ว และตอนนี้สนใจเฉพาะตำแหน่งของ Anchor (เพื่อแนบเนื้อหาเสมือน) และไม่สนใจคอมโพเนนต์อื่นๆ ของเอนทิตีอื่นๆ ที่ค้นพบผ่าน XrSpatialContextEXT ที่ใช้สร้าง Anchor ซึ่งช่วยให้แอปพลิเคชันทำลายบริบทเชิงพื้นที่ได้
Anchor ที่สร้างด้วยส่วนขยายนี้ไม่สามารถคงอยู่ได้โดยใช้ส่วนขยาย XR_ANDROID_device_anchor_persistence และแอปพลิเคชันต้องใช้ XR_EXT_spatial_persistence_operations แทน รันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE จาก xrPersistAnchorANDROID หากสร้าง XrPersistedAnchorSpaceInfoANDROID :: anchor โดยใช้ xrCreateSpatialAnchorSpaceANDROID หรือ xrCreateSpatialAnchorSpaceFromIdANDROID
สร้าง XrSpace สำหรับ Anchor เชิงมิติพื้นที่
สร้างสมอเชิงพื้นที่และพื้นที่ทำงาน
ฟังก์ชัน xrCreateSpatialAnchorSpaceANDROID มีคำจำกัดความดังนี้
XrResult xrCreateSpatialAnchorSpaceANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorCreateInfoEXT* createInfo,
XrSpatialEntityIdEXT* anchorEntityId,
XrSpace* anchorSpace);
คำอธิบายพารามิเตอร์
sessionคือแฮนเดิลของ XrSession ที่สร้างไว้ก่อนหน้านี้ด้วย xrCreateSessionspatialContextคือ XrSpatialContextEXT ที่สร้างขึ้นก่อนหน้านี้โดยใช้ xrCreateSpatialContextAsyncEXTcreateInfoคือตัวชี้ไปยัง XrSpatialAnchorCreateInfoEXTanchorEntityIdเป็นตัวชี้ไปยังXrSpatialEntityIdEXTanchorSpaceเป็นตัวชี้ไปยัง XrSpace
ฟังก์ชัน xrCreateSpatialAnchorSpaceANDROID จะสร้าง Anchor ที่แสดงผล XrSpatialEntityIdEXT และแฮนเดิล XrSpace โดย xrCreateSpatialAnchorSpaceANDROID มีข้อกำหนดด้านการตรวจสอบความถูกต้องเหมือนกับ xrCreateSpatialAnchorEXT
รันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE หาก XrSpatialContextEXT ที่ส่งไปยัง xrCreateSpatialAnchorSpaceANDROID ไม่ได้กำหนดค่าด้วย XR_SPATIAL_CAPABILITY_ANCHOR_EXT
ในส่วนของการค้นพบ Anchor ที่สร้างโดย xrCreateSpatialAnchorSpaceANDROID ย่อหน้าสุดท้ายของข้อกำหนด xrCreateSpatialAnchorEXT จะมีผล
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_spatial_anchor_spaceก่อนเรียกใช้ xrCreateSpatialAnchorSpaceANDROID -
sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง -
spatialContextต้องเป็นแฮนเดิล XrSpatialContextEXT ที่ถูกต้อง -
createInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrSpatialAnchorCreateInfoEXT ที่ถูกต้อง -
anchorEntityIdต้องเป็นตัวชี้ไปยังค่าXrSpatialEntityIdEXT -
anchorSpaceต้องเป็นตัวชี้ไปยังแฮนเดิล XrSpace -
spatialContextต้องสร้าง จัดสรร หรือดึงข้อมูลจากsession
รหัสการคืนสินค้า
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
สร้าง XrSpace จาก Anchor เชิงพื้นที่ที่มีอยู่
ฟังก์ชัน xrCreateSpatialAnchorSpaceFromIdANDROID มีคำจำกัดความดังนี้
XrResult xrCreateSpatialAnchorSpaceFromIdANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorSpaceFromIdCreateInfoANDROID* createInfo,
XrSpace* anchorSpace);
คำอธิบายพารามิเตอร์
sessionคือแฮนเดิลของ XrSession ที่สร้างไว้ก่อนหน้านี้ด้วย xrCreateSessionspatialContextคือ XrSpatialContextEXT ที่สร้างขึ้นก่อนหน้านี้โดยใช้ xrCreateSpatialContextAsyncEXTcreateInfoเป็นตัวชี้ไปยัง XrSpatialAnchorSpaceFromIdCreateInfoANDROIDanchorSpaceเป็นตัวชี้ไปยัง XrSpace
ในสถานการณ์ที่มีเอนทิตี Anchor เชิงพื้นที่อยู่แล้ว (เช่น เนื่องจากความคงอยู่) แอปพลิเคชันสามารถสร้าง XrSpace จาก Anchor เชิงพื้นที่เหล่านี้ได้โดยระบุรหัสเอนทิตีเชิงพื้นที่
ฟังก์ชัน xrCreateSpatialAnchorSpaceFromIdANDROID จะสร้างแฮนเดิล XrSpace โดยระบุ XrSpatialEntityIdEXT ในช่อง XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId
รันไทม์ต้องแสดงผล XR_ERROR_VALIDATION_FAILURE หาก XrSpatialContextEXT ที่ส่งไปยัง xrCreateSpatialAnchorSpaceFromIdANDROID ไม่ได้กำหนดค่าด้วย XR_SPATIAL_CAPABILITY_ANCHOR_EXT
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_spatial_anchor_spaceก่อนเรียกใช้ xrCreateSpatialAnchorSpaceFromIdANDROID -
sessionต้องเป็นแฮนเดิล XrSession ที่ถูกต้อง -
spatialContextต้องเป็นแฮนเดิล XrSpatialContextEXT ที่ถูกต้อง -
createInfoต้องเป็นตัวชี้ไปยังโครงสร้าง XrSpatialAnchorSpaceFromIdCreateInfoANDROID ที่ถูกต้อง -
anchorSpaceต้องเป็นตัวชี้ไปยังแฮนเดิล XrSpace -
spatialContextต้องสร้าง จัดสรร หรือดึงข้อมูลจากsession
รหัสการคืนสินค้า
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
โครงสร้าง XrSpatialAnchorSpaceFromIdCreateInfoANDROID มีคำจำกัดความดังนี้
typedef struct XrSpatialAnchorSpaceFromIdCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT anchorEntityId;
} XrSpatialAnchorSpaceFromIdCreateInfoANDROID;
คำอธิบายสมาชิก
typeคือ XrStructureType ของโครงสร้างนี้nextคือNULLหรือตัวชี้ไปยังโครงสร้างถัดไปในเชนโครงสร้างanchorEntityIdคือXrSpatialEntityIdEXTของ Anchor เชิงพื้นที่ที่มีอยู่ซึ่งใช้สร้าง XrSpace
รันไทม์ต้องแสดงผล XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT หาก XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId ไม่ใช่รหัสที่ถูกต้องสำหรับ spatialContext
รันไทม์ต้องแสดงผล XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID หาก XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId ไม่ใช่รหัสเอนทิตีที่ถูกต้องสำหรับ Anchor
การใช้งานที่ถูกต้อง (โดยนัย)
- ต้องเปิดใช้ส่วนขยาย
XR_ANDROID_spatial_anchor_spaceก่อนใช้ XrSpatialAnchorSpaceFromIdCreateInfoANDROID -
typeต้องเป็นXR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID -
nextต้องเป็นNULLหรือพอยน์เตอร์ที่ถูกต้องไปยังโครงสร้างถัดไปในเชนโครงสร้าง
วงจรของ Anchor
แฮนเดิลหลักของ XrSpace คือ XrSession ซึ่งหมายความว่าแฮนเดิล XrSpace ที่แสดงถึง Anchor จะยังคงใช้ได้แม้ว่าจะทำลาย xrCreateSpatialAnchorSpaceFromIdANDROID :: spatialContext หรือ xrCreateSpatialAnchorSpaceANDROID :: spatialContext แล้วก็ตาม การสร้าง XrSpace เพื่อแสดง Anchor ของเอนทิตีเชิงพื้นที่ช่วยให้แอปพลิเคชันทำลาย XrSpatialContextEXT ที่กำหนดค่าด้วย XR_SPATIAL_CAPABILITY_ANCHOR_EXT ได้ ขณะที่ยังคงรับท่าทางล่าสุดของ Anchor โดยใช้ XrSpace กับ xrLocateSpaces ต่อไป กล่าวคือ รันไทม์ต้องติดตาม Anchor ต่อไปจนกว่าแฮนเดิล XrSpace ทั้งหมดที่แสดง Anchor นั้นจะถูกทำลาย
โค้ดตัวอย่าง
สร้าง Anchor เชิงพื้นที่เป็น XrSpace
โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้าง Anchor เชิงพื้นที่และแสดงผลเป็น 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));
// ...
สร้าง XrSpace จากรหัสเอนทิตี Anchor
โค้ดตัวอย่างต่อไปนี้แสดงวิธีสร้าง XrSpace จากรหัสเอนทิตี Anchor ที่มีอยู่แล้ว
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));
// ...
คำสั่งใหม่
โครงสร้างใหม่
ค่าคงที่ Enum ใหม่
XR_ANDROID_SPATIAL_ANCHOR_SPACE_EXTENSION_NAMEXR_ANDROID_spatial_anchor_space_SPEC_VERSIONการขยาย XrResult :
XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID
การขยาย XrStructureType :
XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID
ปัญหา
ประวัติเวอร์ชัน
การแก้ไข 1, 15-09-2025 (YuSheng Chang, Kyle Chen)
- คำอธิบายส่วนขยายเริ่มต้น