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

Строка имени

XR_ANDROID_unbounded_reference_space

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

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

Зарегистрированный внутренний номер

468

Редакция

1

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

ОпенXR 1.0

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

2024-09-12

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 , когда релокализация завершилась.
  • 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 г. (Левана Чен)
    • Первоначальное описание расширения