XR_ANDROID_unbounded_reference_space Расширение OpenXR

Имя Строка

XR_ANDROID_unbounded_reference_space

Тип расширения

Расширение экземпляра

Зарегистрированный добавочный номер

468

Пересмотр

1

Зависимости расширений и версий

OpenXR 1.0

Дата последнего изменения

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;

Описания участников

  • referenceSpaceTypeXR_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. и зарегистрированы в качестве товарного знака в Китае, Европейском Союзе, Японии и Великобритании.