이제 Android XR SDK를 개발자 프리뷰로 사용할 수 있습니다. 의견을 기다립니다!
지원 페이지를 방문하여 문의하세요.
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
Nihav Jain, 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 구조로 정의되고 워드 변경 또는 재조정 이벤트 최적화 시 반환된 매개변수의 경우:
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일 (레바나 첸)
OpenXR™ 및 OpenXR 로고는 Khronos Group Inc. 소유의 상표이며 중국, 유럽연합, 일본, 영국에서 상표로 등록되어 있습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 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."]]