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

Базовое расширение возвращает позы 26 суставов руки, их радиусы и при запросе скорости. Готовые pinch-сигналы, aim pose, mesh и некоторые жесты относятся к другим API или SDK, поэтому приложение должно отдельно проверять их поддержку и иметь запасной ввод.

OpenXR hand tracking extension XR_EXT_hand_tracking даёт суставный скелет, а не готовые жесты. Runtime возвращает 26 joints: запястье, ладонь и сегменты пальцев. У каждой точки есть pose и radius, можно запросить velocity.

Суставы и валидность

Приложение создаёт tracker для каждой hand и запрашивает суставы на нужный момент. isActive и валидность нужно проверять каждый кадр. Перекрытие пальцев, выход рук из обзора cameras и освещение ухудшают tracking.

Aim не равен скелету

Aim pose нужен для луча наведения. В экосистеме Meta его вместе с силами pinch предоставляет отдельное XR_FB_hand_tracking_aim. Это vendor extension: наличие базового joint tracking не гарантирует aim-модель на другом runtime.

Где появляются жесты

Pinch, grab или swipe строятся из joints в коде приложения либо приходят из toolkit и расширений производителя. Порог жеста, сглаживание и правила начала события не стандартизируются одним XR_EXT_hand_tracking.

Сначала перечислите extensions runtime, включите только доступные и предусмотрите controller fallback. Общий механизм проверки разобран в статье про расширения OpenXR, а устройство ввода в целом описано в материале про hand tracking.

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

Источники

  1. Khronos: спецификация 1.1
  2. Khronos: XrHandTrackingAimStateFB
  3. Meta: Hands UI best practices