Создание циклов анимации для NPC в VR играх
NPC в VR находится в личном пространстве игрока. Расстояние до персонажа, с которым идёт диалог — 1–2 метра. Это означает, что каждый артефакт анимации виден: foot sliding при ходьбе, проваливание рук в тело, застывший взгляд, механически зацикленная idle-поза. В обычной игре от третьего лица игрок смотрит с 5–7 метров и часть дефектов просто не видна. В VR дистанции нет.
Проблемы стандартных Mocap-циклов в VR
Mocap-библиотеки (Mixamo, Rokoko, Adobe Animate) дают качественную основу, но практически всегда требуют VR-специфической доработки.
Foot sliding. В motion capture персонаж двигается в пространстве вместе с актёром. При зацикливании анимации root motion обнуляется, а ноги продолжают двигаться, как будто персонаж куда-то идёт. В VR игрок стоит рядом и видит, как NPC «едет» на месте. Решение — Root Motion Correction: в Blender Timeline вручную выравниваем Z-позицию стоп в ключевых контактных фазах, либо используем Foot IK в Unity Animation Rigging с TwoBoneIK и ground detection.
Цикл без secondary motion. Idle-анимация, которая просто качает туловище — это MannekenPis. Живой персонаж в VR должен иметь: дыхание (0.3–0.5 Hz частота, небольшое движение плеч и груди), микродвижения веса (лёгкое смещение таза каждые 2–4 секунды), blink анимацию (4–8 раз в минуту, случайный интервал). Без этого NPC в VR ощущается как труп.
Переходы между циклами. В Unity Animator Blend Tree с crossfade работает для обычных игр. В VR при переходе Idle → Walk → Run, если Length переходного state несовпадает с фазой цикла, нога «прыгает». Нужны Synchronized Layers и Avatar Mask для верхней части тела, чтобы жесты перекрывали только торс и руки, не затрагивая ноги.
Как строится анимационный цикл для VR NPC
Idle — базовый цикл, 3–6 секунд, seamless loop. Включает дыхание, вес, blink. Если NPC с диалогом — дополнительно 2–3 варианта micro-idle с разным характером (нервный, расслабленный, внимательный).
Locomotion set. Для наземного NPC: стоп (0 м/с), медленная ходьба, нормальная ходьба, бег — минимальный набор. Под каждую скорость — цикл с правильной фазой ног (начало цикла = left foot contact). В Blend Tree параметр Speed интерполирует между ними. Важно: все циклы одного набора должны иметь одинаковую длину в секундах или кратную — иначе при transition нога подпрыгивает.
Interaction анимации. NPC в VR должен реагировать на присутствие игрока: look-at через Constraint Look At или procedural LookAt() в Update, жест приветствия, отступ при слишком близком подходе. Эти анимации короткие (0.5–2 секунды), с явными in/out keyframe для плавного вхождения из Idle.
Одноразовые события. Для диалоговых NPC — набор жестов под реплики (кивок, покачивание головой, указание рукой, shrug). Экспортируются как отдельные Animation Clips и вызываются из диалоговой системы через Animator.SetTrigger().
Технические требования к экспорту
Экспорт из Maya/Blender в FBX с Bake Animation включённым. В Unity: Animation Type = Humanoid (если rig Mecanim-compatible), Apply Root Motion = отключён для NPC с Navmesh, Loop Time и Loop Pose включены для циклов.
| Набор анимаций | Ориентировочные сроки |
|---|---|
| Idle + дыхание + blink | 1–2 рабочих дня |
| Полный locomotion set (4 скорости) | 3–5 рабочих дней |
| Набор dialogue-жестов (5–8 анимаций) | 2–4 рабочих дня |
| Полный анимационный пакет NPC | 1–2 недели |
Стоимость рассчитывается индивидуально после изучения технических требований и скелетной структуры персонажа.





