Имя Строка
XR_ANDROID_unbounded_reference_space
Тип расширения
Расширение экземпляра
Зарегистрированный добавочный номер
468
Пересмотр
1
Зависимости расширений и версий
Дата последнего изменения
2024-09-12
Статус ИС
Нет известных претензий на права интеллектуальной собственности.
Участники
Спенсер Куин, 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
после повторного подключения. -
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 , чтобы определить, готово ли оно к использованию.
Новые типы объектов
Новые типы флагов
Новые константы перечисления
Перечисление XrReferenceSpaceType расширено с помощью:
-
XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID
Новые перечисления
Новые структуры
Новые функции
Проблемы
История версий
- Редакция 1, 12 сентября 2024 г. (Левана Чен)
- Первоначальное описание расширения
OpenXR™ и логотип OpenXR являются товарными знаками компании Khronos Group Inc. и зарегистрированы в качестве товарного знака в Китае, Европейском Союзе, Японии и Великобритании.