Tiện ích OpenXR XR_ANDROID_unbounded_reference_space

Chuỗi tên

XR_ANDROID_unbounded_reference_space

Loại phần mở rộng

Tiện ích thực thể

Số điện thoại mở rộng đã đăng ký

468

Bản sửa đổi

1

Phần mở rộng và phần phụ thuộc phiên bản

OpenXR 1.0

Ngày sửa đổi gần đây nhất

2024-09-12

Trạng thái IP

Không có thông báo xác nhận quyền sở hữu đối với tài sản trí tuệ nào.

Cộng tác viên

Spencer Quin, Google

Jared Finder, Google

Fengtao Fan, Google

Lachlan Ford, Google

Nihav Jain, Google

Levana Chen, Google

Tổng quan

Tiện ích này cho phép các ứng dụng tạo không gian tham chiếu UNBOUNDED_ANDROID. Không gian tham chiếu này cho phép người xem tự do di chuyển qua một môi trường phức tạp, thường cách vị trí bắt đầu nhiều mét, đồng thời luôn tối ưu hoá để hệ thống toạ độ ổn định gần người xem. Khi thiết bị cảm nhận được nhiều môi trường hơn để hiểu rõ hơn về cảnh, nguồn gốc của không gian tham chiếu có thể trôi dạt với các điều chỉnh lớn nếu cần để duy trì tính năng theo dõi thiết bị.

Để tạo không gian tham chiếu UNBOUNDED_ANDROID, ứng dụng có thể đặt XrReferenceSpaceCreateInfo::referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID và chuyển đến 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));

Không gian tham chiếu UNBOUNDED_ANDROID thiết lập một gốc khoá toàn cầu của vị trí của tai nghe khi quá trình theo dõi thiết bị bắt đầu. Trục này được căn chỉnh theo trọng lực để loại trừ độ dốc và độ nghiêng, với +X ở bên phải, +Y ở trên và -Z ở phía trước.

Không gian UNBOUNDED_ANDROID rất hữu ích khi một ứng dụng cần hiển thị nội dung quy mô thế giới vượt quá giới hạn của một STAGE, chẳng hạn như toàn bộ tầng hoặc nhiều tầng của một toà nhà.

Không gian UNBOUNDED_ANDROID duy trì độ ổn định gần người xem bằng cách điều chỉnh nguồn gốc theo thời gian. Phương pháp này có thể điều chỉnh một chútrất nhiều nếu cần để duy trì tính năng theo dõi thiết bị.

  • Thời gian chạy không được đưa sự kiện XrEventDataReferenceSpaceChangePending vào hàng đợi để phản hồi các điều chỉnh nhỏ.
  • Thời gian chạy nên đưa sự kiện XrEventDataReferenceSpaceChangePending vào hàng đợi để phản hồi các điều chỉnh lớn. Ví dụ: tư thế trong không gian UNBOUNDED_ANDROID được đặt lại do mất khả năng theo dõi và tính năng theo dõi được thiết lập lại trên một bản ước tính bị ngắt kết nối của thế giới ("bản đồ mới").
  • Hệ thống liên tục cập nhật thông tin về thế giới và điều chỉnh tính năng theo dõi thiết bị. Nếu một ứng dụng yêu cầu vị trí ổn định bất kể việc đặt lại tính năng theo dõi, thì bạn có thể sử dụng một neo trong trường hợp này.

Sự kiện thay đổi không gian tham chiếu

Đối với các tham số do cấu trúc XrEventDataReferenceSpaceChangePending xác định, được trả về khi thay đổi thế giới hoặc tối ưu hoá các sự kiện bản địa hoá lại:

typedef struct XrEventDataReferenceSpaceChangePending {
    XrStructureType         type;
    const void*             next;
    XrSession               session;
    XrReferenceSpaceType    referenceSpaceType;
    XrTime                  changeTime;
    XrBool32                poseValid;
    XrPosef                 poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;

Nội dung mô tả thành viên

  • referenceSpaceType ở trạng thái XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.
  • changeTime sẽ đại diện cho XrTime tại thời điểm hoàn tất quá trình bản địa hoá lại.
  • poseValid sẽ là false do ước tính bị ngắt kết nối hoặc true sau khi kết nối lại.
  • poseInPreviousSpace sẽ không hợp lệ khi poseValidfalse.

Khi thành phần hiển thị, bộ điều khiển hoặc các không gian khác bị mất khả năng theo dõi so với không gian UNBOUNDED_ANDROID, ứng dụng có thể tiếp tục nhận được giá trị positionorientation được suy luận hoặc giá trị gần đây nhất. Ví dụ: các tư thế suy luận này có thể dựa trên nội dung cập nhật mô hình cổ, tính toán vị trí bằng quán tính hoặc vị trí được biết gần đây nhất. Ứng dụng có thể giả định rằng ứng dụng sẽ tiếp tục đặt XR_SPACE_LOCATION_POSITION_VALID_BITXR_VIEW_STATE_POSITION_VALID_BIT, nhưng XR_SPACE_LOCATION_POSITION_TRACKED_BITXR_VIEW_STATE_POSITION_TRACKED_BIT có thể bị môi trường thời gian chạy xoá để cho biết vị trí được suy luận hoặc được biết gần đây nhất theo cách này.

Khi khôi phục tính năng theo dõi, thời gian chạy có thể căn giữa lại nguồn gốc một cách tuỳ ý, ví dụ: di chuyển nguồn gốc trùng với người xem. Ứng dụng có thể kiểm tra giá trị poseValid được trả về từ sự kiện XrEventDataReferenceSpaceChangePending để xác định xem ứng dụng đã sẵn sàng sử dụng hay chưa.

Các loại đối tượng mới

Các loại cờ mới

Hằng số enum mới

Bổ sung enum XrReferenceSpaceType bằng:

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

Enum mới

Cấu trúc mới

Hàm mới

Vấn đề

Nhật ký phiên bản

  • Bản sửa đổi 1, ngày 12 tháng 9 năm 2024 (Levana Chen)
    • Nội dung mô tả ban đầu của tiện ích