Разработка скелетного рига персонажей игр
Риг персонажа в игровом контексте — это не та же задача, что риг для кино или рекламы. Здесь кости должны работать в реальном времени, вписываться в лимиты движка, поддерживать ретаргетинг и не ломаться при импорте через 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, simple character) | от 3 до 6 часов |
| Полный humanoid с пальцами + Twist bones | от 1 до 1.5 дней |
| Квадрупед или нестандартное существо | от 2 до 4 дней |
| Риг с динамическими элементами (хвост, плащ) | от 3 до 5 дней |
Финальный результат: FBX с корректным скелетом, готовый к скиннингу и импорту в Unity с зелёным Avatar без предупреждений. Стоимость определяется после ознакомления с мешем и требованиями проекта.





