ส่วนขยาย 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;

คำอธิบายสมาชิก

  • referenceSpaceTypeXR_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)
    • คำอธิบายส่วนขยายเริ่มต้น