Android XR SDK พร้อมใช้งานในเวอร์ชันตัวอย่างสำหรับนักพัฒนาแอปแล้ว เราอยากฟังความคิดเห็นจากคุณ โปรดไปที่
หน้าการสนับสนุนเพื่อติดต่อเรา
ส่วนขยาย XR_ANDROID_unbounded_reference_space ของ OpenXR
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
สตริงชื่อ
XR_ANDROID_unbounded_reference_space
ประเภทชิ้นงาน
การขยายอินสแตนซ์
หมายเลขต่อที่จดทะเบียน
468
การแก้ไข
1
การพึ่งพาส่วนขยายและเวอร์ชัน
OpenXR 1.0
วันที่แก้ไขล่าสุด
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 หมายถึงไปข้างหน้า
พื้นที่ UNBOUNDED_ANDROID
มีประโยชน์เมื่อแอปพลิเคชันต้องแสดงผลเนื้อหาระดับโลกที่ขยายเกินขอบเขตของ STAGE
รายการเดียว เช่น ทั้งชั้นหรือหลายชั้นของอาคาร
พื้นที่ 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
หลังจากเชื่อมต่ออีกครั้ง
poseInPreviousSpace
จะใช้ไม่ได้เมื่อ poseValid
เป็น false
เมื่อมุมมอง ตัวควบคุม หรือพื้นที่อื่นๆ สูญเสียการติดตามที่เกี่ยวข้องกับ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
เพื่อระบุว่าตำแหน่งดังกล่าวเป็นตำแหน่งที่อิงตามข้อมูลที่มีอยู่หรือเป็นตำแหน่งที่ทราบล่าสุด
เมื่อการติดตามกลับมาทำงานได้ รันไทม์อาจจัดศูนย์กลางต้นทางใหม่โดยพลการ เช่น ย้ายต้นทางให้สอดคล้องกับผู้ชม แอปพลิเคชันสามารถตรวจสอบค่า poseValid
ที่แสดงผลจากเหตุการณ์ XrEventDataReferenceSpaceChangePending เพื่อดูว่าพร้อมใช้งานหรือไม่
ประเภทออบเจ็กต์ใหม่
ประเภทการแจ้งว่าไม่เหมาะสมใหม่
ค่าคงที่ Enum ใหม่
เพิ่มรายการต่อไปนี้ในคําจํากัดความของ XrReferenceSpaceType
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Enum ใหม่
โครงสร้างใหม่
ฟังก์ชันใหม่
ปัญหา
ประวัติเวอร์ชัน
- การแก้ไข 1, 12-09-2024 (Levana Chen)
OpenXR™ และโลโก้ OpenXR เป็นเครื่องหมายการค้าของ The Khronos Group Inc. และจดทะเบียนเป็นเครื่องหมายการค้าในจีน สหภาพยุโรป ญี่ปุ่น และสหราชอาณาจักร
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# XR_ANDROID_unbounded_reference_space OpenXR extension\n\n**Name String**\n\n`XR_ANDROID_unbounded_reference_space`\n\n**Extension Type**\n\nInstance extension\n\n**Registered Extension Number**\n\n468\n\n**Revision**\n\n1\n\n**Extension and Version Dependencies**\n\n[OpenXR 1.0](https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#versions-1.0)\n\n**Last Modified Date**\n\n2024-09-12\n\n**IP Status**\n\nNo known IP claims.\n\n**Contributors**\n\nSpencer Quin, Google\n\nJared Finder, Google\n\nFengtao Fan, Google\n\nLachlan Ford, Google\n\nNihav Jain, Google\n\nLevana Chen, Google\n\nOverview\n--------\n\nThis extension allows applications to create an `UNBOUNDED_ANDROID` reference\nspace. This reference space enables the viewer to move freely through a complex\nenvironment, often many meters from where they started, while always optimizing\nfor coordinate system stability near the viewer. As the device senses more of\nits environment to build a better scene understanding, the origin of the\nreference space **can** drift with **huge adjustments** as necessary to maintain\ndevice tracking.\n\nTo create an `UNBOUNDED_ANDROID` reference space, the application **can** set\n[XrReferenceSpaceCreateInfo::referenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceCreateInfo)\n`XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID` and pass to\n[xrCreateReferenceSpace](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#xrCreateReferenceSpace). \n\n XrInstance instance; // previously initialized\n XrSession session; // previously initialized\n XrPosef pose; // previously initialized\n\n // Use the new reference space type in the create info struct\n XrReferenceSpaceCreateInfo createInfo = {\n .type = XR_REFERENCE_SPACE_CREATE_INFO;\n .next = nullptr;\n .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;\n .poseInReferenceSpace = pose;\n }\n XrSpace referenceSpace;\n CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));\n\n // After usage\n CHK_XR(xrDestroySpace(referenceSpace));\n\nThe `UNBOUNDED_ANDROID` reference space establishes a world-locked origin of the\nheadset's position when the device tracking starts. It is gravity-aligned to\nexclude pitch and roll, with +X to the right, +Y up, and -Z forward.\n\n`UNBOUNDED_ANDROID` space is useful when an application needs to render\n**world-scale** content that spans beyond the bounds of a single `STAGE`, for\nexample, an entire floor or multiple floors of a building.\n\nAn `UNBOUNDED_ANDROID` space maintains stability near the viewer by adjusting\nits origin over time. It **can** make **slight** and **huge** adjustments as\nnecessary to maintain device tracking.\n\n- The runtime **should** not queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **minor adjustments**.\n- The runtime **should** queue the [XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event in response to **huge adjustments** . For example, the pose in `UNBOUNDED_ANDROID` space is reset due to a tracking loss and the tracking is re-established on a disconnected estimate of the world (a \"new map\").\n- The system is constantly updating its understanding of the world and adjusting device tracking. If an application requires a persisted location regardless of tracking resets, an anchor **can** be used in this case.\n\nReference space change event\n----------------------------\n\nFor parameters defined by\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) structure that returned\non world changing or optimizing relocalization events: \n\n typedef struct XrEventDataReferenceSpaceChangePending {\n XrStructureType type;\n const void* next;\n XrSession session;\n XrReferenceSpaceType referenceSpaceType;\n XrTime changeTime;\n XrBool32 poseValid;\n XrPosef poseInPreviousSpace;\n } XrEventDataReferenceSpaceChangePending;\n\n### Member Descriptions\n\n- `referenceSpaceType` is `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`.\n- `changeTime` will represent the [`XrTime`](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrTime) at which relocalization completed.\n- `poseValid` will be `false` due to the disconnected estimate or `true` after reconnected.\n- `poseInPreviousSpace` won't be valid when `poseValid` is `false`.\n\nWhen views, controllers or other spaces experience tracking loss relative to the\n`UNBOUNDED_ANDROID` space, applications **can** continue to receive inferred\nor last-known `position` and `orientation` values. These inferred poses **can** ,\nfor example, be based on neck model updates, inertial dead reckoning, or a\nlast-known position. An application can assume that it will continue to have the\n`XR_SPACE_LOCATION_POSITION_VALID_BIT` and\n`XR_VIEW_STATE_POSITION_VALID_BIT` set, but\n`XR_SPACE_LOCATION_POSITION_TRACKED_BIT` and\n`XR_VIEW_STATE_POSITION_TRACKED_BIT` may be cleared by the runtime to indicate\nthat the position is inferred or last-known in this way.\n\nWhen tracking is recovered, the runtime **may** recenter the origin\narbitrarily, for example moving the origin to coincide with the viewer. An\napplication **can** check the `poseValid` value returned from the\n[XrEventDataReferenceSpaceChangePending](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrEventDataReferenceSpaceChangePending) event to determine if it's ready to\nuse.\n\n**New Object Types**\n\n**New Flag Types**\n\n**New Enum Constants**\n\n[XrReferenceSpaceType](https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#XrReferenceSpaceType) enumeration is extended with:\n\n- `XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID`\n\n**New Enums**\n\n**New Structures**\n\n**New Functions**\n\n**Issues**\n\n**Version History**\n\n- Revision 1, 2024-09-12 (Levana Chen)\n - Initial extension description\n\n*** ** * ** ***\n\nOpenXR™ and the OpenXR logo are trademarks owned\nby The Khronos Group Inc. and are registered as a trademark in China,\nthe European Union, Japan and the United Kingdom."]]