XR_ANDROID_unbounded_reference_space OpenXR 확장 프로그램

이름 문자열

XR_ANDROID_unbounded_reference_space

확장 프로그램 유형

인스턴스 연장

등록된 부속 번호

468

버전

1

확장 프로그램 및 버전 종속 항목

OpenXR 1.0

최종 수정일

2024-09-12

IP 상태

알려진 IP 소유권 주장이 없습니다.

도움을 주신 분들

스펜서 퀸, Google

재러드 파인더, Google

펑타오 팬, Google

라클런 포드, Google

니하브 자인, Google

레바나 첸, 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를 나타냅니다.
  • 연결이 끊어진 예측으로 인해 poseValidfalse이 되고 다시 연결되면 true이 됩니다.
  • poseValidfalse인 경우 poseInPreviousSpace는 유효하지 않습니다.

뷰, 컨트롤러 또는 기타 공간에서 UNBOUNDED_ANDROID 공간과 관련하여 추적 손실이 발생하면 애플리케이션은 추론된 positionorientation 값 또는 마지막으로 알려진 positionorientation 값을 계속 수신할 있습니다. 이러한 추론된 포즈는 예를 들어 목 모델 업데이트, 관성 측위 또는 마지막으로 알려진 위치를 기반으로 할 수 있습니다. 애플리케이션은 XR_SPACE_LOCATION_POSITION_VALID_BITXR_VIEW_STATE_POSITION_VALID_BIT가 계속 설정되어 있다고 가정할 수 있지만, 런타임에서 XR_SPACE_LOCATION_POSITION_TRACKED_BITXR_VIEW_STATE_POSITION_TRACKED_BIT를 삭제하여 위치가 이러한 방식으로 추론되었거나 마지막으로 알려졌음을 나타낼 수 있습니다.

추적이 복구되면 런타임은 원본을 임의로 다시 중심에 맞출 수 있습니다(예: 원본을 뷰어와 일치하도록 이동). 애플리케이션은 XrEventDataReferenceSpaceChangePending 이벤트에서 반환된 poseValid 값을 확인하여 사용할 준비가 되었는지 확인할 수 있습니다.

새로운 객체 유형

새로운 신고 유형

새로운 enum 상수

XrReferenceSpaceType 열거형은 다음으로 확장됩니다.

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

새로운 enum

새로운 구조

새로운 함수

문제

버전 기록

  • 버전 1, 2024년 9월 12일 (레바나 첸)
    • 초기 확장 프로그램 설명