Настройки OpenXR
OpenXR имеет собственный набор настроек, применяемых при запуске. Хотя расширения OpenXR, реализованные через плагины Godot, могут добавлять дополнительные настройки, здесь мы рассмотрим только настройки ядра Godot.
Общие настройки
Enabled
Этот параметр включает модуль OpenXR при запуске Godot. Это необходимо при использовании бэкенда Vulkan. Для других бэкендов OpenXR можно включить в любой момент, вызвав initialize для OpenXRInterface.
Эту функцию также необходимо включить, чтобы получить доступ к редактору карты действий.
Для принудительного включения этой опции можно использовать параметр командной строки --xr-mode on.
Карта действий по умолчанию
Это указывает путь к файлу карты действий, который OpenXR загрузит и передаст в XR Runtime.
Форм-фактор
Это определяет, предназначена ли ваша игра для:
Head Mountedустройства, надеваемые на голову, такие как Meta Quest, Valve Index или Magic Leap,Handheldустройства, такие как телефоны.
Если устройство, на котором вы запускаете игру, не соответствует выбранному здесь варианту, OpenXR не сможет инициализироваться.
Просмотр Конфигурации
Это определяет конфигурацию представления, для которой разработана ваша игра:
Mono— ваша игра выводит только одно изображение. Например, дополненная реальность на базе телефона;Стерео— ваша игра обеспечивает вывод стереоизображения. Например, с помощью устройств, крепящихся на голову.
Если устройство, на котором вы запускаете игру, не соответствует выбранному здесь варианту, OpenXR не сможет инициализироваться.
Примечание
В OpenXR предусмотрены дополнительные конфигурации просмотра для некоторых устройств, которые Godot пока не поддерживает. Например, гарнитуры Varjo поддерживают конфигурацию с четырьмя экранами, которая выводит два набора стереоизображений. Поддержка таких конфигураций может появиться в ближайшем будущем.
Справочное Пространство
В XR все элементы, такие как голова и руки игрока, отслеживаются в объёме отслеживания. В основании этого объёма отслеживания находится наша исходная точка, которая сопоставляет наше виртуальное пространство с реальным. Однако существуют различные сценарии, в которых эта точка располагается в разных местах, в зависимости от используемой системы XR. В OpenXR эти сценарии чётко определены и выбираются путём задания опорного пространства.
Локальный
В локальном пространстве отсчёта наша исходная точка по умолчанию располагается в голове игрока. Некоторые среды выполнения XR делают это при каждом запуске игры, другие сохраняют это положение на протяжении сеансов.
Однако это опорное пространство не мешает пользователю уйти, поэтому вам нужно будет определить, делает ли пользователь это, если вы хотите помешать пользователю покинуть транспортное средство, которым он управляет, что потенциально может привести к поломке игры.
Это опорное пространство является наилучшим вариантом для игр типа авиасимуляторов или гоночных симуляторов, где мы хотим разместить узел XROrigin3D там, где должна находиться голова игрока.
Когда пользователь активирует опцию «Центрирование» на своей гарнитуре (метод отличается в зависимости от среды выполнения XR), среда выполнения XR переместит узел XRCamera3D в узел XROrigin3D. Узел OpenXRInterface также выдаст сигнал pose_recentered, чтобы игра могла отреагировать соответствующим образом.
Примечание
Любые другие отслеживаемые элементы XR, такие как контроллеры или якоря, также будут скорректированы соответствующим образом.
Предупреждение
Вы не должны** вызывать center_on_hmd при использовании этого ссылочного пространства.
Сцена
Пространство отсчёта сцены — это наше стандартное пространство отсчёта, которое помещает нашу исходную точку в центр игрового пространства. В средах выполнения XR, позволяющих обозначить границу стража, это местоположение и его ориентация часто задаются пользователем. Другие среды выполнения XR могут определять местоположение этой точки другими способами. Однако в реальном мире это неподвижная точка.
Это эталонное пространство — оптимальный вариант для игр, масштабируемых до размеров комнаты, где пользователь должен перемещаться по большому пространству, или для игр, где требуется переключаться между игровыми режимами. Подробнее см. в разделе Room Scale.
Когда пользователь активирует функцию «Центрирование» на своей гарнитуре (метод которой отличается в зависимости от среды выполнения XR), среда выполнения XR не изменит исходную точку. OpenXRInterface выдаст сигнал pose_recentered, и игра должна будет отреагировать соответствующим образом. В противном случае ваша игра не будет принята в различных магазинах.
В Godot это можно сделать, вызвав функцию center_on_hmd на XRServer:
Вызов
XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, false)переместит узел XRCamera3D в узел XROrigin3D аналогично пространству ссылокLocal.Вызов
XRServer.center_on_hmd(XRServer.RESET_BUT_KEEP_TILT, true)переместит узел XRCamera3D выше узла XROrigin3D, сохраняя высоту игрока, аналогично опорному пространствуLocal Floor.
Примечание
Любые другие отслеживаемые элементы XR, такие как контроллеры или якоря, также будут скорректированы соответствующим образом.
Локальный пол
Локальное опорное пространство пола аналогично локальному опорному пространству, поскольку оно определяет исходную точку, в которой находится игрок. Однако в этом режиме сохраняется высота игрока. Как и в случае с локальным опорным пространством, некоторые среды выполнения XR сохраняют это местоположение в сеансах.
Таким образом, нет гарантии, что игрок окажется в исходной точке. Гарантируется только, что он находился там в момент последнего центрирования. Таким образом, игрок может свободно уйти.
Такое опорное пространство является наилучшим вариантом для игр, где пользователь должен находиться в одном и том же месте, или для игр типа AR, где элементы интерфейса пользователя привязаны к исходному узлу и быстро размещаются в месте расположения игрока по центру.
Когда пользователь активирует опцию «Центрирование» на своей гарнитуре (метод этой функции различается в зависимости от среды выполнения XR), среда выполнения XR перемещает узел XRCamera3D выше узла XROrigin3D, сохраняя при этом высоту игрока. OpenXRInterface также выдаёт сигнал pose_recentered, чтобы игра могла отреагировать соответствующим образом.
Предупреждение
Будьте осторожны, используя этот режим в сочетании с виртуальным перемещением игрока. В этом случае центрирование пользователя может быть непредсказуемым, если только вы не отмените это движение при обработке сигнала центрирования. Это может даже привести к поломке игры, поскольку в этом случае игрок телепортируется в любую абстрактную точку, в которой находилась исходная точка во время виртуального перемещения, включая возможность телепортации в локации, которые должны быть недоступны. В этом случае лучше использовать режим "Stage " и ограничить сброс ориентации только при получении сигнала pose_recentered.
Примечание
Любые другие отслеживаемые элементы XR, такие как контроллеры или якоря, также будут скорректированы соответствующим образом.
Предупреждение
Вы не должны** вызывать center_on_hmd при использовании этого ссылочного пространства.
Режим смешивания окружения
Режим смешивания окружения определяет, как визуализированный вывод смешивается с "реальным миром", если это поддерживается гарнитурой.
Непрозрачныйозначает, что наш вывод затеняет реальный мир, мы находимся в режиме VR.Additiveозначает, что наш вывод добавляется к реальному миру. Это режим дополненной реальности, в котором оптика не позволяет нам полностью скрывать реальный мир (например, Hololens),Alphaозначает, что наш вывод смешивается с реальным миром с помощью альфа-вывода (вьюпорт должен иметь прозрачный фон), это режим дополненной реальности, в котором оптика может полностью скрывать реальный мир (Magic Leap, все сквозные устройства и т. д.).
Если выбран режим, который не поддерживается гарнитурой, будет выбран первый доступный режим.
Примечание
Некоторые устройства OpenXR имеют отдельные системы для включения/выключения сквозного пропускания. Начиная с Godot 4.3, выбор режима альфа-смешивания также будет выполнять эти дополнительные действия. Для этого требуется установить последнюю версию плагина поставщика.
Уровень фовеации
Задаёт уровень фовеации, используемый при рендеринге, если эта функция поддерживается используемым оборудованием. Фовеация — это метод, при котором чем дальше от центра области просмотра визуализируется контент, тем ниже разрешение. Большинство сред выполнения XR поддерживают только фиксированную фовеацию, но некоторые учитывают отслеживание глаз и используют точку фокусировки для этого эффекта.
Чем выше уровень, тем выше производительность, но при этом сильнее ухудшается качество периферийного зрения пользователя.
Примечание
Только для рендерера Compatibility, для рендерера Mobile и Forward+ установите свойство vrs_mode для Viewport на VRS_XR.
Предупреждение
Эта функция отключается, если используются постэффекты, такие как свечение (glow), цветение (bloom) или глубина резкости (DOF).
Динамика фовеации
При включении уровень фовеации будет автоматически регулироваться в зависимости от текущей загрузки графического процессора. Он будет регулироваться в диапазоне от низкого до выбранного в предыдущей настройке уровня фовеации. Поэтому рекомендуется сочетать эту настройку с высоким уровнем фовеации.
Примечание
Только для рендеринга Compatibility
Отправить буфер глубины
Если эта опция включена, при рендеринге будет использоваться буфер глубины, предоставляемый OpenXR и отправляемый вместе с отрендеренным изображением. Среда выполнения XR может использовать это для улучшенного перепроецирования.
Примечание
Включение этой функции отключит поддержку трафаретов во время рендеринга. Немногие среды выполнения XR поддерживают эту функцию, поэтому рекомендуется отключать её, если только она не даёт заметных преимуществ в вашем конкретном случае.
Оповещение о запуске
Если эта опция включена, пользователю будет показано предупреждающее сообщение, если OpenXR не запустится. Мы не всегда получаем обратную связь от системы XR о причине сбоя запуска. Если она есть, мы записываем это в консоль. Распространенные причины сбоев:
На хост-системе не установлена среда выполнения OpenXR.
В настоящее время активна среда выполнения WMR OpenXR от Microsoft, которая поддерживает только DirectX и не будет работать при использовании OpenGL или Vulkan.
SteamVR используется, но гарнитура не подключена/не включена.
Отключите этот параметр, если в вашей игре поддерживается резервный режим, позволяющий играть в режиме рабочего стола, когда не подключена VR-гарнитура, или если вы самостоятельно обрабатываете состояние сбоя, проверяя OpenXRInterface.is_initialized().
Расширения
В этом подразделе вы можете включить различные дополнительные расширения OpenXR. Имейте в виду, что расширения будут работать только в том случае, если среда выполнения OpenXR (SteamVR, Oculus и т. д.), в которой запущен проект, поддерживает их.
Отладочные утилиты
Включение этого параметра позволит регистрировать отладочные сообщения из среды выполнения XR.
Типы отладочных сообщений
Это позволяет вам выбирать, какие отладочные сообщения следует регистрировать.
Frame Synthesis
When enabled, provided it's supported by the XR runtime, lower resolution motion vector and depth buffers are rendered and provided to the XR runtime. The XR runtime can now inject reprojection frames and compensate for lower framerates.
It currently has the following limitations:
Does NOT work in the Forward+ renderer.
Only works with stereo rendering.
Отслеживание рук
Это включает расширение отслеживания рук, если оно поддерживается используемым устройством. Расширение включено по умолчанию из-за устаревших настроек. Расширение отслеживания рук предоставляет доступ к данным, позволяющим визуализировать руки пользователя с правильным положением пальцев. В зависимости от возможностей платформы данные отслеживания рук могут быть получены с помощью ввода данных с контроллера, перчаток с данными, оптических датчиков отслеживания рук или любого другого подходящего источника.
Если ваша игра поддерживает только контроллеры, эту функцию следует отключить.
Дополнительные сведения см. на странице hand tracking.
Отслеживание рук: беспрепятственный источник данных
Включение этой функции означает, что отслеживание рук может использовать точное положение пальцев, которое обычно фиксирует камера гарнитуры.
Источник данных контроллера отслеживания рук
Включение этой функции означает, что отслеживание рук может использовать сам контроллер и определять местоположение пальцев на основе ввода с контроллера или датчиков на контроллере.
Профиль взаимодействия рук
Включение этого расширения позволяет использовать две новые позы отслеживания руки. Поза сжатого пальца (щипок), когда палец находится между большим и указательным пальцами, направленными вперёд, и поза тычка (тычок), когда палец находится на кончике указательного пальца.
Это также позволяет использовать 3 дополнительных жеста для управления. Щипок (щипок) — когда пользователь сводит большой и указательный пальцы вместе. Активация прицеливания — когда указательный палец полностью выпрямлен. И захват (сжатие) — когда пользователь сжимает кулак.
Если указаны профиль взаимодействия руки и профиль взаимодействия контроллера, среда выполнения будет переключаться между профилями в зависимости от того, используется ли оптическое отслеживание или пользователь держит контроллер.
Если указан только профиль взаимодействия с рукой, то любая среда выполнения должна использовать взаимодействие с рукой, даже если удерживается контроллер.
Spatial Entities
This extension and its settings are used to obtain and interact with information about the user's real world environment. You can find more detailed information on how it works on the spatial entities page.
Взаимодействие с взглядом
Это позволяет расширить взаимодействие с взглядом, если это поддерживается используемым устройством. При включении функции отслеживания взгляда мы будем получать обратную связь через позу, расположенную между глазами пользователя, ориентированными в направлении взгляда. Это будет единая ориентация.
Чтобы использовать эту функцию, необходимо отредактировать карту действий и добавить новое действие позы, например, eye_pose. Теперь добавьте новый профиль взаимодействия для взаимодействия взгляда и сопоставьте eye_pose:
Не забудьте сохраниться!
Затем добавьте новый узел XRController3D к вашему исходному узлу и задайте его свойству tracker значение /user/eyes_ext, а его свойству pose — значение eye_pose.
Теперь вы можете добавлять к этому узлу контроллера такие элементы, как raycast, и управлять ими с помощью глаз.
Рендеринг моделей
Это расширение используется для запроса к среде выполнения XR 3D-ресурсов используемого оборудования, обычно контроллера, а также его положения. Подробное руководство по его использованию можно найти здесь здесь.
Модификаторы привязки
Они определяют возможность использования модификаторов привязки. Модификаторы привязки применяются для применения пороговых значений или значений смещения. Информацию об их использовании и настройке можно найти на странице карты действий XR здесь.
Аналоговый порог
Разрешить модификаторы привязки аналоговых порогов.
Привязка Dpad
Разрешить модификаторы привязки D-pad.