Если коротко:

Сохранять стоит пользовательские настройки приложения — рост аватара, смещение интерфейса и параметры доступности. Положение физического пола и tracking origin лучше заново получать от XR-runtime при каждой сессии, а не переносить как абсолютную координату.

Калибровка VR смешивает данные двух типов: физическую систему координат текущей сессии и предпочтения пользователя. Если сохранить их одним набором, приложение может восстановить удобный рост вместе с устаревшей ошибкой пола.

Что определяет runtime

OpenXR предоставляет reference spaces, связанные с текущим устройством и границей. Их положение может измениться после перенастройки комнаты, запуска в другом месте или сброса трекинга. Абсолютную координату пола из прошлой сессии нельзя считать постоянной.

Что можно сохранять

Сохраняйте выбранный режим стоя или сидя, калиброванный рост аватара, длину рук в пределах модели, высоту интерфейса и настройки доступности. Записывайте версию схемы и идентификатор профиля, чтобы обновление приложения могло мигрировать данные.

Порядок запуска

Сначала получите активное reference space и текущую позу HMD. Затем примените пользовательское смещение. Покажите контрольную сцену: пол, уровень глаз и доступный объект. Пользователь должен иметь возможность быстро сбросить настройку.

Не вычисляйте рост по одному кадру: человек может наклониться. Соберите несколько стабильных измерений или попросите занять известную позу.

Разные устройства

Профиль, созданный на одной гарнитуре, может не подходить другой из-за посадки и системы координат. Храните параметры, зависящие от устройства, отдельно от общих предпочтений. При заметном расхождении запускайте повторную калибровку.

Проверка

Тестируйте запуск стоя, сидя, после recenter и после изменения границы. Проверьте пользователя ниже и выше среднего роста. Ошибка должна приводить к понятному предложению перекалиброваться, а не к недоступным кнопкам.

Надёжное сохранение восстанавливает удобство, но уважает актуальные данные runtime. Физический мир измеряется заново, а персональные предпочтения применяются поверх него.

Поделиться:TelegramВКонтакте

Источники

  1. Khronos — OpenXR Reference Spaces
  2. Unreal Engine — SaveGame