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

В Unreal Engine VR поза руки может означать три разные сущности. Skeletal pose задаёт сгиб пальцев в Pose Asset или Anim Blueprint; grip pose и socket определяют положение удерживаемого объекта относительно контроллера или кости; hand tracking pose приходит от runtime как обновляемые трансформы суставов. Их нужно хранить и обрабатывать раздельно, а при захвате связывать выбранную позу пальцев с точкой прикрепления объекта.

Unreal Engine VR hand poses удобнее настраивать, когда термин «поза» разделён на анимацию skeleton, пространственный grip и данные hand tracking. Если смешать их в одном Blueprint, модель пальцев может выглядеть правильно, а предмет — оказаться под неверным углом или продолжить следовать за потерянной кистью.

Три типа поз

Skeletal pose хранит положения костей Skeletal Mesh. В Unreal Engine 5.8 Pose Asset может содержать одну или несколько поз и смешивать их весами через Pose Asset node в Anim Blueprint. Такой asset подходит для состояний open, fist, pinch или для формы пальцев вокруг предмета, но сам не сообщает положение руки в комнате.

Grip/aim pose — пространственная pose контроллера. В OpenXR grip применяется к объектам у руки, aim — к лучу указания. Socket — отдельная точка прикрепления с offset относительно bone. Он задаёт, где окажется рукоять, но не сгибает пальцы.

Hand tracking pose — обновляемые transforms суставов, полученные от runtime. Они управляют skeletal mesh и могут использоваться pose detector. Это live input: валидность и tracking confidence способны меняться каждый кадр. Общая настройка этого слоя вынесена в руководство по hand tracking в Unreal Engine.

Подготовка skeleton и Pose Assets

  1. Проверьте одинаковую иерархию и направления bones у левой и правой модели. Retarget не исправляет произвольные оси без настроенного соответствия.
  2. Создайте Animation Sequence с ключевыми формами кисти либо сохраните текущую форму через Animation Editor.
  3. Сформируйте Pose Asset и дайте poses понятные имена: Open, Grip_Small, Grip_Large, Point.
  4. Добавьте Pose Asset node в Anim Blueprint и управляйте весами из состояния input.
  5. Для перехода используйте короткое сглаживание, а не мгновенную замену всех bones.

Pose Asset — визуальный слой. Событие grab, collision и право владения объектом должны оставаться в interaction component, иначе анимация станет источником игровой логики.

Захват: socket отдельно от позы пальцев

Для объекта создайте socket или scene component GripPoint и выставьте offset в редакторе. При захвате выберите подходящую hand pose, затем прикрепите Actor к точке grip с согласованными правилами transform. Для нескольких способов удержания полезен массив grip points: правая/левая рука, основная/вспомогательная и разные размеры хвата.

Проверяйте результат на реальном масштабе модели. Если рукоять лежит правильно, но пальцы проходят сквозь неё, корректируется skeletal pose. Если вся кисть смещена относительно предмета, исправляется socket или grip transform. Физический grab и его ограничения разобраны отдельно в статье о захвате предметов в Unreal Engine.

Позы контроллеров и tracking рук

При OpenXR используйте отдельные Motion Controller Components для Grip и Aim. Meta считает старый Oculus controller pose устаревшим и рекомендует источники OpenXR Grip/Aim. Для визуализации tracked hands нужен свой компонент или plugin, который обновляет hand skeleton.

В Meta XR режим Controllers And Hands позволяет переключать источники. Контроллерные capacitive inputs могут формировать приближённые положения пальцев, но это не оптическое отслеживание суставов. Не подменяйте controller-driven animation данными реальной кисти в логике точного pinch.

Детектирование позы

Pose detector сравнивает текущую форму tracked hand с условиями и выдаёт событие. У Meta Interaction SDK доступны recording и detection, а Ultraleap plugin предлагает компоненты для вытянутых пальцев, направления ладони, proximity и pinch. Эти API принадлежат конкретным SDK и не являются общей функцией Pose Asset.

Добавьте разные пороги входа и выхода, минимальное время удержания и проверку tracking confidence. Так один шумный кадр не вызовет команду. Для критичного действия оставьте controller input или явное подтверждение.

Версии и проверка

Названия Epic-asset и socket workflow в этой статье соответствуют Unreal Engine 5.8. Meta XR меняет доступность функций по версиям plugin и Horizon OS; например, документация Meta помечает pose detection как доступный с v78. Публичный getting started Ultraleap перечисляет UE 4.27 и 5.2, поэтому совместимость актуального релиза plugin с вашей веткой Engine нужно проверять до интеграции.

Финальный тест включает open hand, каждый grip, левую и правую руки, смену контроллеров на hands, потерю tracking и повторное появление кисти. При смене режима сбрасывайте вес старой pose и состояние удержания явно: скрыть mesh недостаточно.

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

Источники

  1. Epic — Animation Pose Assets
  2. Epic — Skeletal Mesh Sockets
  3. Epic — VR Template
  4. Meta — Hand Tracking in Unreal Engine