Строка имени
XR_ANDROID_unbounded_reference_space
Тип расширения
Расширение экземпляра
Зарегистрированный внутренний номер
468
Редакция
1
Зависимости расширений и версий
Дата последнего изменения
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;
Описания участников
-
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 г. (Левана Чен)
- Первоначальное описание расширения