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

OpenXR Action System описывает намерение пользователя — захват, телепорт или позу руки — отдельно от конкретной кнопки. Runtime выбирает привязку для активного interaction profile, благодаря чему одно приложение поддерживает разные контроллеры без отдельной логики для каждой модели.

OpenXR Action System отделяет смысл действия от кнопок, стиков, трекпадов и датчиков конкретного VR-контроллера. Без этого слоя перенос управления на другое устройство превращается в набор исключений.

Action и action set

Action описывает логический ввод: «схватить», «открыть меню», «положение левой руки». Он имеет тип — логическое значение, число, двумерный вектор, поза или вибрация. Связанные действия объединяются в action set, который приложение активирует в подходящем контексте.

Например, набор игрового процесса можно отключить, когда открыто системное меню, чтобы одно нажатие не выполнило два действия.

Пути и профили взаимодействия

Путь OpenXR указывает пользователя и компонент, а interaction profile описывает известную схему контроллера. Приложение предлагает suggested bindings — разумные привязки своих действий к компонентам профиля. Runtime учитывает активное устройство и пользовательские настройки.

Поза левой и правой руки обычно представляется subaction path. Это позволяет использовать одно действие для обеих рук и различать их при чтении состояния.

Жизненный цикл ввода

После создания actions и привязок приложение присоединяет наборы к сессии. В каждом кадре оно синхронизирует активные action sets, читает состояния и размещает пространства поз. Вибрация отправляется как haptic action.

Типичная ошибка — читать состояние без синхронизации или считать, что suggested binding гарантированно активен. Runtime может выбрать другой профиль, а пользователь — переназначить управление.

Как сделать схему переносимой

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

OpenXR Action System не делает хороший UX автоматически. Он создаёт правильную архитектурную границу: игровая логика знает о намерении пользователя, а runtime — о конкретном оборудовании.

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

Источники

  1. Khronos — OpenXR Input and Haptics
  2. Khronos — OpenXR Tutorial: Actions