Послуги з ригінгу та анімації для ігор

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

Відвідати персоналізований сайт
Показано 17 з 17 послугУсі 242 послуг
Ригінг скелетної структури персонажів ігор
Складна
від 2 робочих днів до 1 тижня
Скіннінг меша персонажів для анімації ігор
Середня
від 1 робочого дня до 3 робочих днів
Створення циклів ходьби та бігу персонажів ігор
Середня
від 2 робочих днів до 1 тижня
Створення бойових та унікальних анімацій персонажів
Складна
від 3 робочих днів до 2 тижнів
Інтеграція анімацій в Animator Controller Unity
Середня
від 1 робочого дня до 1 тижня
Налаштування процедурної анімації в іграх
Складна
від 3 робочих днів до 2 тижнів
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Риггинг та анімація

Модель персонажа готова, виглядає чудово — й падає в Unity як дерев'яна лялька, тому що кості виставлені довільно та не відповідають вимогам Humanoid Avatar. Програміст намагається використовувати готовий Animator Controller з Asset Store, але змішування анімацій ломить позу, тому що root motion налаштований неправильно. Це типова ситуація, коли риггинг та анімаційний пайплайн не проектувалися під движок з самого початку.

Риггинг — це не просто "додати кості". Це проектування системи управління, яка повинна працювати всередину конкретного движка з конкретними вимогами до формату даних.

Humanoid rig pipeline у Unity: на глибину

Unity працює з двома типами ригу: Generic та Humanoid. Вибір впливає на весь анімаційний пайплайн.

Generic rig — Довільна ієрархія костей. Анімації привязані до конкретної моделі, ретаргетинг неможливий. Підходить для неперсонажної анімації (техніка, двері, істоти з нестандартною анатомією).

Humanoid rig — Unity маппіт кості на стандартну схему з 17 обов'язкових костей (позвоночник, голова, руки, ноги) та до 32 опціональних. Після цього будь-яка Humanoid-анімація застосовна до будь-якого Humanoid-персонажа. Це основа для ретаргетинга та Animator Controller з Blend Tree.

Вимоги до скелета для Humanoid

Помилки, які ломять Avatar mapping:

  • Неверна орієнтація костей. Unity очікує, що вісь X спрямована по кості до дочірної кості. Якщо рука дивиться по Z або -Y — Avatar генеруватиметься з спотвореною T-pose.
  • Зайві проміжні кості у ланцюжку позвоночника. Якщо між Spine та Chest стоїть проміжна кість без маппінгу — вона втрачається при ретаргетингу, анімація позвоночника виглядає негнучкою.
  • Roll-кості (twist bones) — Кості для розподілу скручування передпліччя та стегна. У Humanoid їх потрібно додавати як додаткові (опціональні) кості та корректно налаштувати ваги. Без twist-костей передпліччя при повороті кисті складається некрасиво.

T-pose vs A-pose

Unity рекомендує T-pose як біндингову позу. A-pose (руки опущені під ~45°) технічно працює, але ретаргетовані анімації дають невеликі помилки в плечовому суглобі. Для персонажів з броєю або широкими плечима A-pose іноді краще — менше розтягнення при ретаргетингу. Рішення приймається на етапі риггінгу, переділка потім дорога.

Avatar Mask

Avatar Mask — інструмент для часткового застосування анімацій. Наприклад: нижня частина тіла грає анімацію бігу, верхня — анімацію стрільби. Без Avatar Mask ці стани конфліктують.

Правильна структура Animator Controller для шутера:

Base Layer (Full Body weight: 1.0)
  └── Locomotion Blend Tree (idle / walk / run / sprint)

Upper Body Layer (Avatar Mask: верхня частина, weight: 1.0)
  ├── Idle_upper
  ├── Shoot
  ├── Reload
  └── Aim_offset (2D Blend Tree по pitch/yaw)

Additive Layer (Avatar Mask: spine, weight: по параметру)
  └── Lean_left / Lean_right

Additive layer для нахилу — типова оптимізація: замість 8 окремих анімацій (run_left, run_right, walk_left...) один additive lean застосовується поверх будь-якого стану.

Blend Tree для локомоції: практичний розбір

Blend Tree — система змішення анімацій по одному або двом параметрам. Для локомоції персонажа стандарт — 2D Freeform Directional з параметрами velocityX та velocityZ.

Мінімальний набір клипів для базової локомоції:

Анімація velocityX velocityZ
Idle 0 0
Walk Forward 0 0.5
Run Forward 0 1.0
Walk Backward 0 -0.5
Run Backward 0 -1.0
Strafe Left -0.5 0
Strafe Right 0.5 0

Freeform Directional інтерполює між клипами за кутом та величиною вектора швидкості. При velocity (0.35, 0.35) змішуються Walk Forward та Strafe Right з вагами, обчисленими за відстанню до кожної точки у 2D-просторі.

Root Motion vs. In-Place анімації:

  • Root Motion — Рух персонажа керується зміщенням рут-кості в анімаційному клипі. Аніматор "вшиває" швидкість руху в анімацію. Unity читає це зміщення та рухає Transform персонажа. Плюс: анімація та рух завжди синхронізовані (кроки збігаються з переміщенням). Мінус: складніше керувати швидкістю через код, вимагає коректної налаштування в Animator (Apply Root Motion: true).
  • In-Place — Кість тазу залишається на місці, переміщення керується кодом (CharacterController або Rigidbody). Простіше інтегрувати у фізичну систему, але ризик рассинхронізації кроків зі швидкістю руху (ковзання ніг).

Для більшості action-ігор використовується In-Place + Foot IK через Animation Rigging пакет (Unity) для коректної постановки стопи на нерівну поверхню.

Skinning: ваги та проблемні зони

Скіннінг (привязка меша до костей через ваги) — найбільш трудомісткий етап риггінгу органічних персонажів.

Інструменти:

  • Maya — Weight Paint tool + Component Editor для точної ручної правки. Smooth Skin Weights як стартова точка, потім ручна доводка проблемних зон.
  • Blender — Weight Paint mode + Automatic Weights як базис. Vertex Group Editor для крапкової правки.
  • 3ds Max — Skin modifier + Weight Table.

Проблемні зони та рішення:

Підпахвинні западини: стандартне рішення — артефакт "цукеркового обгортки" при підйомі руки. Вирішується додаванням corrective shape keys (blend shapes), які спрацьовують при певному куті плечового суглоба. У Maya — Pose Space Deformation (PSD), у Unity — BlendShape керований AnimationClip по IK куту.

Коліна та ліктики: потрібні строго перпендикулярні кільця edge loops (вимога до топології, яка закладається при ретопології). Twist-кості розподіляють деформацію на три суглоби (shoulder twist, elbow, forearm twist), що усуває "скручування циліндра".

Боєві анімації та стани

Боєва анімаційна система — це не просто набір клипів. Це граф стану з умовами транзишену та пріоритетами переривання.

Типова помилка: транзишн з Idle → Attack з Has Exit Time: true та Exit Time: 0.9. Це означає, що атака почнеться лише коли idle відиграє 90%. Гравець натиснув кнопку атаки та чекає 0.5 секунди. Рішення: Has Exit Time: false, транзишн по trigger, Interruption Source: Current State з пріоритетом.

Структура боєвих стану:

Any State → Hit Reaction (trigger: onHit, interrupts current)
Any State → Death (trigger: onDeath, interrupts all)

Attack Layer:
  Idle → Attack1 (trigger: attack)
  Attack1 → Attack2 (trigger: attack, exit time: 0.6)  // combo window
  Attack2 → Attack3 (trigger: attack, exit time: 0.6)
  Attack1/2/3 → Idle (no trigger, exit time: 1.0)

Combo-window відкривається на ~40% довжини анімації та закривається на ~80%. Це створює почуття responsiveness без руйнування анімації.

Spine 2D для мобільних ігор

Spine — стандарт для 2D-анімації в mobile RPG, idle games, action-platformers. Меш персонажа розбивається на частини, привязані до 2D-скелета. Анімація — трансформації костей, mesh deformation через зважені вершини.

Переваги перед frame-by-frame:

  • Файл анімації важить кілобайти замість мегабайт (спрайтлісти).
  • Ретаргетинг: однакові анімації атаки працюють на різних персонажах з ідентичною скелетною структурою.
  • Змішення анімацій та IK — ті ж концепції, що й у 3D.

Інтеграція в Unity: офіційний Spine Runtime для Unity. Компонент SkeletonAnimation керує відтворенням, SkeletonMecanim дозволяє використовувати Animator Controller поверх Spine-скелета. Для програмної анімації — прямий доступ через API: skeletonAnimation.AnimationState.SetAnimation(0, "walk", true).

DOTween часто використовується у зв'язці зі Spine для керування не-скелетними анімаціями UI-елементів, привязаних до персонажа (health bar, damage numbers) — не для самого скелета, а для синхронізації UI з ігровими подіями.

Що ми надаємо

  • Риггинг персонажів під Unity Humanoid / Generic Avatar з підтримкою ретаргетинга.
  • Skinning з ручною доводкою ваг у проблемних зонах, twist-кості, corrective shapes.
  • Розробка Animator Controller: Blend Tree для локомоції, Avatar Mask для багатошарових систем, боєві граф стану.
  • Створення анімаційних клипів: локомоція, боєві дії, реакції, синематики.
  • Spine 2D риггинг та анімація для мобільних проектів, інтеграція в Unity.
  • Налаштування Root Motion та Foot IK через Animation Rigging.