Если коротко:
Базовое расширение возвращает позы 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.