이름 문자열
XR_ANDROID_unbounded_reference_space
확장 프로그램 유형
인스턴스 연장
등록된 부속 번호
468
버전
1
확장 프로그램 및 버전 종속 항목
최종 수정일
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;
회원 설명
referenceSpaceType
가XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
입니다.changeTime
는 재현지화가 완료된XrTime
를 나타냅니다.- 연결이 끊어진 예측으로 인해
poseValid
은false
이 되고 다시 연결되면true
이 됩니다. poseValid
가false
인 경우poseInPreviousSpace
는 유효하지 않습니다.
뷰, 컨트롤러 또는 기타 공간에서 UNBOUNDED_ANDROID
공간과 관련하여 추적 손실이 발생하면 애플리케이션은 추론된 position
및 orientation
값 또는 마지막으로 알려진 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
를 삭제하여 위치가 이러한 방식으로 추론되었거나 마지막으로 알려졌음을 나타낼 수 있습니다.
추적이 복구되면 런타임은 원본을 임의로 다시 중심에 맞출 수 있습니다(예: 원본을 뷰어와 일치하도록 이동). 애플리케이션은 XrEventDataReferenceSpaceChangePending 이벤트에서 반환된 poseValid
값을 확인하여 사용할 준비가 되었는지 확인할 수 있습니다.
새로운 객체 유형
새로운 신고 유형
새로운 enum 상수
XrReferenceSpaceType 열거형은 다음으로 확장됩니다.
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
새로운 enum
새로운 구조
새로운 함수
문제
버전 기록
- 버전 1, 2024년 9월 12일 (레바나 첸)
- 초기 확장 프로그램 설명