Розробка скелетного рига персонажів ігор
Риг персонажа в ігровому контексті — це не та ж завдання, що риг для кіно або реклами. Тут кості повинні працювати в реальному часі, вписуватися в ліміти рушія, підтримувати ретаргетинг та не ломатися при імпорті через FBX. Художники, які прийшли в геймдев з кіно-конвеєру, часто дізнаються про це на стадії, коли переробляти вже пізно.
Що робить риг "ігровим"
У кіно можна позволити собі 300+ костей на персонажа, деформери, nCloth та lattice. У реальному часі це неможливо. Unity Humanoid Avatar підтримує обов'язковий набір з 15 костей (Body, Head, Left/Right Arm, Left/Right Leg) та опціональні пальці. Generic риг — без обмежень на кількість, але без Humanoid-функцій.
Кількість костей на платформу:
- Мобільні пристрої (GPU skinning): рекомендація — до 75 костей, hard limit залежить від GPU
- PC/Console (Compute skinning): 100–150 реально без втрат
- VR: особливі вимоги через Frame Budget — не більше 60–80
Кожна кість, додана "на всякий випадок" — це кість, яку аніматор зобов'язаний враховувати або явно виключити через Avatar Mask. Мінімальна достатність — принцип, який економить гроші на всіх наступних етапах.
Ієрархія та угоди про іменування
Корневої кість — Root (або Hips у Mixamo-конвенції). Все інше — дочірні елементи. Важливо: Root стоїть на підлозі під персонажем, не в центрі маси. Це критично для Root Motion: Unity читає переміщення з Root-кості, і якщо Root на рівні таза, персонаж буде "летіти" при застосуванні Root Motion.
Стандарт іменування, який не створюватиме проблем:
-
Hips,Spine,Spine1,Spine2,Chest,Neck,Head -
LeftShoulder,LeftUpperArm,LeftLowerArm,LeftHand -
LeftUpperLeg,LeftLowerLeg,LeftFoot,LeftToe
Це Mixamo-сумісне іменування, яке Unity автоматично маппить в Avatar Configuration без ручного вказання. Будь-яке відхилення (L_Thigh, Bip001 L Leg, UpperLeg.L) вимагає ручного маппінгу кожен раз при реімпорті.
Орієнтація осей та Bind Pose
Орієнтація осей костей у Blender (Y уздовж кості) та Maya (X уздовж кості) — різна. Це потрібно враховувати при налаштуванні IK-розв'язувачів та при експорті. У Blender кість "дивиться" по Y-осі локального простору; якщо Connect не встановлений — вісь може бути довільною, і IK даватиме непередбачуваний результат.
Перевірка: вибрати всі кості в Edit Mode, Display → Axes. Усі основні осі повинні дивитися від батька до дитини по одній осі. Якщо хаос — Recalculate Roll через Ctrl+N з опцією Global Positive X.
T-Pose для Bind Pose — стандарт для Humanoid Avatar у Unity. A-Pose технічно допустима, але при авто-маппінгу Unity іноді неправильно визначає спрямування кінцівок. Безпечніше: експортувати в T-Pose, у Unity встановити Reference Pose = T-Pose, потім додатковий клип з A-Pose для скіннінгу.
Допоміжні кості та Twist
Без Twist-костей обертання передпліччя при пронації/супінації деформує меш за принципом "скрученої трубки". Unity Humanoid підтримує Upper Arm Twist та Lower Arm Twist як опціональні кості. Додаються між Shoulder → Forearm та Forearm → Hand.
Weight для Twist-кості: 0.5 на середньому участку сегменту, 0 в обох кінцях. Це розподіляє деформацію по довжині кінцівки замість концентрації на одному суглобі. У Maya це налаштовується через Advanced Twist Controls в IK Handle. У Blender — Bone Constraint → Copy Rotation з Factor 0.5.
Процес розробки рига
Аудит меша та ТЗ → Збірка ієрархії → Орієнтація осей → Перевірка Bind Pose → IK setup → Тест-анімація → Експорт → Перевірка в Unity Avatar Configuration.
| Тип персонажа | Орієнтовна тривалість |
|---|---|
| Humanoid без пальців (NPC, простий персонаж) | від 3 до 6 годин |
| Повний humanoid з пальцями + Twist bones | від 1 до 1.5 днів |
| Квадрупед або нестандартна істота | від 2 до 4 днів |
| Риг з динамічними елементами (хвіст, плащ) | від 3 до 5 днів |
Фінальний результат: FBX з правильним скелетом, готовий до скіннінгу та імпорту у Unity з зеленим Avatar без попереджень. Вартість визначається після ознайомлення з мешем та вимогами проекту.





