reckfellENGINE

Настройки OpenXR

Точные ключи и значения, запуск, reference space, ввод, расширения и диагностика.

На этой странице

Настройки OpenXR

Настройки проекта задают запрос движка к OpenXR. Они не устанавливают XR runtime, не подключают гарнитуру и не подтверждают поддержку расширения. Ниже приведены ключи и значения по умолчанию текущего Reckfell 1.0.0; включайте только нужные функции.

Минимальный запуск

  1. В Project Settings найдите xr/openxr/enabled и включите его. Для первого запуска оставьте Head Mounted, Stereo, Stage и Opaque.
  2. Подготовьте action map по пути xr/openxr/default_action_map. В текущем проекте это по умолчанию asset://openxr_action_map.rdata; используйте руководство по action map.
  3. Настройте XR-риг и обработку запуска: наличие XRCamera3D само по себе не включает вывод XR. Проверяйте результат инициализации и отдельно разрешайте XR у нужного Viewport.
  4. Перезапустите приложение после смены стартовых настроек. Проверяйте лог, активный XR runtime и фактические возможности интерфейса; не определяйте успех по сохранённой галочке.

--xr-mode on принудительно запрашивает XR при старте, --xr-mode off отключает его для диагностического запуска. В обычном режиме редактор не начинает OpenXR-сессию только из-за enabled=true. Запуск игры и запуск самого редактора — разные процессы и этапы.

Для Vulkan запрашивайте OpenXR при старте: расширения графической интеграции нужны до подготовки устройства. Не рассчитывайте, что поздний вызов Initialize исправит пропущенную стартовую конфигурацию. Изменение ProjectSettings во время игры также не пересоздаёт существующие instance, session и swapchain автоматически.

Основные параметры

КлючПо умолчаниюНазначение
xr/openxr/enabledfalseЗапрос запуска OpenXR. Требует перезапуска.
xr/openxr/default_action_mapasset://openxr_action_map.rdataРесурс действий и bindings, загружаемый интерфейсом.
xr/openxr/form_factor0: Head Mounted1 — Handheld. Это требуемый класс устройства, не переключатель режима камеры.
xr/openxr/view_configuration1: Stereo0 — Mono; 2 — Stereo with Foveated Inset. Нужна поддержка выбранного вида runtime.
xr/openxr/reference_space1: Stage0 — Local; 2 — Local Floor. Определяет запрошенное пространство tracking.
xr/openxr/environment_blend_mode0: Opaque1 — Additive; 2 — Alpha. Способ композиции с окружением.
xr/openxr/target_api_versionпустая строкаОбычно оставьте пустым. Код сначала запрашивает OpenXR 1.1, при API_VERSION_UNSUPPORTED пробует 1.0. Явное значение имеет форму major.minor.patch. Это версия OpenXR API, а не версия Reckfell.
xr/openxr/startup_alerttrueПоказывать системное сообщение при неудачном стартовом запуске. false скрывает окно, но не исправляет причину.
xr/openxr/submit_depth_bufferfalseЗапрашивать отправку depth вместе с цветом при поддержке depth-layer extension и подходящего формата. Не гарантирует улучшение reprojection.

Не оставляйте action map случайному fallback. Если ресурс не загрузился, интерфейс создаёт стандартные действия; в сборке с инструментами он также пытается сохранить ресурс. Это не подтверждает наличие ваших пользовательских действий и bindings. Сохраните и проверьте собственный .rdata до экспорта.

Stereo with Foveated Inset уже имеет реализацию в текущем исходнике. Это отдельная конфигурация видов с дополнительным inset, а не обещание работы на любой гарнитуре. Для обычного проекта начинайте со Stereo; не путайте inset с настройкой плотности shading.

Выбрать пространство tracking

РежимКогда рассматриватьЧто учитывать
LocalСидячий опыт или привязка интерфейса к локальному originНачало задаёт runtime. Оно не является физической стеной и не удерживает голову на месте.
StageRoom-scale и виртуальное перемещениеПривязан к игровому пространству runtime; полезен для сохранения общей системы координат мира.
Local FloorЛокальный origin с уровнем полаНужна поддержка или доступный fallback; не добавляйте высоту головы второй раз.

Это запрошенный режим, а не безусловное обещание. Текущий код при отсутствии Local Floor может эмулировать его через Local и Stage; при других неподдерживаемых запросах выбирает Local. Смотрите лог и фактический режим, прежде чем строить логику пола и recenter.

OpenXRInterface.PoseRecentered сообщает об обновлении reference space после обновления tracking. Обработчик из гайда запуска только передаёт событие; не вызывает CenterOnHmd за вас. Политику сброса выбирайте вместе с room-scale и locomotion. Дополнительный безусловный CenterOnHmd может повторно сместить уже скорректированную камеру. Граница Stage не заменяет коллизии и не останавливает физическое движение человека.

Смешивание с окружением

Opaque полностью выводит виртуальную картинку. Additive складывает свет виртуального изображения с окружением; чёрный здесь не обязан закрывать реальный мир. Alpha использует прозрачность вывода, поэтому проверьте TransparentBg нужного Viewport и материал/фон сцены.

Если выбранный blend mode недоступен, код может перейти к первому поддерживаемому. Alpha также может обслуживаться специальной реализацией passthrough. Не считайте чёрное окно доказательством сломанного материала: сначала проверьте фактический blend mode, доступность passthrough, разрешения и интеграцию целевого устройства. Галочка Alpha сама не устанавливает vendor plugin.

Foveation и качество

КлючПо умолчаниюНазначение
xr/openxr/foveation_level0: Off1 — Low, 2 — Medium, 3 — High. Запрос уровня, а не гарантированный прирост FPS.
xr/openxr/foveation_dynamicfalseРазрешает runtime динамический режим при наличии расширения.
xr/openxr/foveation_eye_trackedtrueЗапрашивает соответствующее eye-tracked foveation extension при подходящем backend; не включает доступ к gaze pose автоматически.
xr/openxr/foveation_with_subsampled_imagestrueРазрешает специальный путь изображений при поддержке. Несовместимые rendering features могут его отключить.
xr/openxr/create_default_foveated_inset_viewporttrueАвтоматический inset viewport для соответствующей view configuration, а не для обычного Stereo.

Eye-tracked foveation и eye-gaze interaction — разные функции. Значение true не подтверждает ни датчик, ни разрешение, ни активное расширение. Для RD проверьте VRS у Viewport; наличие карты VRS также не является замером фактической экономии.

Если лог сообщает, что subsampled images отключены несовместимыми rendering features, это относится к этому пути изображений. Не переносите вывод автоматически на все варианты foveation. Сравнивайте один и тот же кадр и время GPU на целевом устройстве; не меняйте одновременно разрешение, MSAA, эффекты и уровень foveation.

Расширения и ввод

Все перечисленные переключатели ниже по умолчанию false, кроме явно указанных числовых значений.

КлючЧто запрашивает
xr/openxr/extensions/hand_trackingДанные суставов рук. В текущей версии выключено по умолчанию. См. чтение суставов.
xr/openxr/extensions/hand_tracking_unobstructed_data_sourceИсточник unobstructed hand data, если доступен.
xr/openxr/extensions/hand_tracking_controller_data_sourceИсточник hand data, основанный на контроллере, если доступен.
xr/openxr/extensions/hand_interaction_profileПрофиль взаимодействия рукой; не создаёт нужные actions в вашей карте. Требует перезапуска.
xr/openxr/extensions/eye_gaze_interactionGaze interaction extension. Требует перезапуска; на мобильной платформе дополнительно учитываются platform feature/permission.
xr/openxr/extensions/render_modelМодели оборудования от runtime при поддержке расширения и сборки.
xr/openxr/extensions/user_presenceСведения о присутствии пользователя, если доступны. Не заменяют session focus.
xr/openxr/binding_modifiers/analog_thresholdПороговые модификаторы bindings. Настройте и сами bindings.
xr/openxr/binding_modifiers/dpad_bindingD-pad binding extension; требует перезапуска.

Для gaze pose нужен action типа Pose в карте: профиль /interaction_profiles/ext/eye_gaze_interaction, input path /user/eyes_ext/input/gaze_ext/pose. У XRController3D задайте Tracker=/user/eyes_ext, а Pose — имя вашего action. Одного включения расширения недостаточно. Это именование и маршрут по исходнику, не проверка точности взгляда или разрешений устройства.

КлючПо умолчаниюЧто учитывать
xr/openxr/extensions/frame_synthesisfalseЗапрос XR_EXT_frame_synthesis. Текущий путь требует двух видов; Vulkan — Mobile. Forward+ не поддержан этим путём, OpenGL обрабатывается отдельно. Не обещает стабильный FPS и не исправляет неправильные motion vectors.
xr/openxr/extensions/frame_synthesis/flip_yfalseКоррекция ориентации данных для этого пути, не общий переворот камеры.
xr/openxr/extensions/debug_utils0: Disabled1 Error, 2 Warning, 3 Info, 4 Verbose. Сообщения OpenXR, не Vulkan validation layers.
xr/openxr/extensions/debug_message_types15Маска General/Validation/Performance/Conformance. Фильтр сообщений при включённом debug_utils.

Пространственное окружение

Следующие ключи нужны для возможностей реального окружения, а не для обычных Entity игрового мира. Включение не создаёт обнаруженные поверхности или сохранённые anchors автоматически. Проверяйте поддержку, согласие пользователя и жизненный цикл данных на устройстве.

КлючПо умолчанию
xr/openxr/extensions/spatial_container/enabledfalse
xr/openxr/extensions/spatial_container/bounds_mode0: Bounded; 1 — Immersive
xr/openxr/extensions/spatial_container/boundsVector3(0.5, 0.5, 0.5)
xr/openxr/extensions/spatial_entity/enabledfalse
xr/openxr/extensions/spatial_entity/enable_spatial_anchorsfalse
xr/openxr/extensions/spatial_entity/enable_persistent_anchorsfalse
xr/openxr/extensions/spatial_entity/enable_builtin_anchor_detectionfalse
xr/openxr/extensions/spatial_entity/enable_plane_trackingfalse
xr/openxr/extensions/spatial_entity/enable_builtin_plane_detectionfalse
xr/openxr/extensions/spatial_entity/marker_tracking/enablefalse
xr/openxr/extensions/spatial_entity/marker_tracking/enable_builtin_for_types0: ни одного типа; маска QR/Micro QR/ArUco/April tags
xr/openxr/extensions/spatial_entity/marker_tracking/aruco_dict15: 7x7 1000 IDs
xr/openxr/extensions/spatial_entity/marker_tracking/april_tag_dict3: 6x6H11

Это справочник стартовых запросов, а не инструкция к готовой системе пространственного распознавания. Не используйте наличие этих ключей как проверку доступности anchors, plane tracking или marker detection.

Диагностика запуска

СимптомПроверить сначала
Не найден OpenXRInterfaceСостав используемой сборки, модуль OpenXR и журнал запуска.
Интерфейс есть, но IsInitialized=falseСтартовый запрос XR, активный runtime, устройство и сообщения инициализации. Наличие интерфейса не равно сессии.
Игра осталась обычным окномУспех запуска интерфейса, UseXR нужного Viewport и fallback вашего приложения.
Контроллер есть, нужного действия нетФайл action map, тип action, interaction profile и точный input path.
Нет данных рукhand_tracking, возможности runtime, разрешения и валидность конкретных суставов.
Неверная высота/сброс позицииФактический reference space, fallback и отсутствие второго смещения origin.
Включённая функция не работаетПоддержку и активность конкретного extension, а не только значение ProjectSettings.

Что проверено

В отдельном проекте установленного Reckfell 1.0.0 с --headless --xr-mode off проверены регистрация и значения 39 скалярных настроек, вектор bounds и наличие неинициализированного заимствованного интерфейса. Получено 81 успешное наблюдение; настройки проекта не записывались, Initialize не вызывался.

Порядок запуска, enum mapping, fallback пространств и blend mode, gating расширений и перечисленные ограничения сверены с текущим исходником. Это не проверка реальной гарнитуры, loader/runtime, permissions, recenter, passthrough, foveation, frame synthesis, tracking, экспорта или UI редактора. Сборка движка и SDK не изменялись.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.