Настройка рига лица и мимики персонажей игр
Лицо — место, где игрок читает эмоцию. Неточная мимика разрушает погружение быстрее, чем любой другой технический недостаток. При этом фейс-риг — одна из самых сложных задач в пайплайне: здесь пересекаются скелетная анимация, blend shapes, процедурные Constraints и требования движка к производительности.
Два подхода: кости против Blend Shapes
В игровом контексте выбор между костями и morph targets (Blend Shapes / Shape Keys) определяется движком и платформой.
Кости (Joint-based rig) — работают в любом движке через стандартный skinned mesh. Поддерживают любой Avatar тип, интегрируются в Animator Controller, управляются через Animation Rigging. Минус: на тонких деформациях вокруг глаз и губ кости дают угловатость — нужно много костей для органического движения.
Blend Shapes (Morph Targets) — каждая поза лица хранится как отдельный mesh offset. Деформация линейная, легко предсказуемая, отлично подходит для facial expressions и lip sync. Unity поддерживает Blend Shapes через SkinnedMeshRenderer.SetBlendShapeWeight(index, weight). Ограничение: Linear blend между крайними позами может давать «тающий» эффект при сложных комбинациях (улыбка + прищуривание + приподнятая бровь).
Правильный ответ для AAA персонажей: комбинация обоих. Кости для глаз, бровей, челюсти (точные вращения с чётким контролем). Blend Shapes для сложных деформаций щёк, носогубных складок, морщин при улыбке.
Структура фейс-рига на костях
Минимальный набор для выразительного персонажа:
- Jaw — нижняя челюсть, 1 кость с Limit Rotation. Вращение вниз по X: 0–20° для разговора, до 30° для крика. Также контролирует небольшое смещение нижней губы через Constraint
- UpperLid_L/R, LowerLid_L/R — веки. 4 кости с ограниченным диапазоном. Copy Rotation с минимальным вкладом от Eye-кости (при движении глаза веко немного следует — Corneal Bulge эффект)
- Eye_L/R — глазные яблоки. Track To к Eye_Target — общей цели, которую аниматор двигает вместо отдельных глаз. Ограничение: ±30° по X и Y
- Brow_Inner_L/R, Brow_Mid_L/R, Brow_Outer_L/R — брови. 6 костей для контроля формы. FK-управление через контрольные кости
- LipCorner_L/R — уголки губ. Ключевые точки для улыбки/гримасы
- UpperLip_C, LowerLip_C — центры губ для поцелуя и удивления
Итого: 16–20 костей для базового фейс-рига. Для диалоговой игры с детальной lip sync — 30–40.
Blend Shapes для мимики: именование и ARKit
ARKit standard — де-факто стандарт именования Blend Shapes для фейс-трекинга. 52 именованных морфа: eyeBlinkLeft, jawOpen, mouthSmileLeft, browInnerUp и т.д. Если планируется live face tracking или импорт готовых анимаций — именование по ARKit-стандарту обязательно, иначе маппинг придётся делать вручную.
VRM-формат для аватаров использует свой набор: A, I, U, E, O для гласных, Joy, Angry, Sorrow, Fun, Blink, BlinkLeft, BlinkRight. Если проект ориентирован на VTuber-платформы или VRChat — VRM-именование стандартно.
Для Unity c Animator: Blend Shape веса обновляются через C# скрипт или через Animation Clip. Анимированные Blend Shapes в FBX — стандартный путь. В FBX экспорте из Blender: включить Shape Keys в экспорте, убедиться что Relative Shape Keys, не Absolute.
Lip Sync: инструменты и интеграция
Для автоматического lip sync два основных варианта:
Oculus OVR LipSync SDK — фонемная система, работает на аудио потоке в реальном времени. Выводит веса для 15 визем (viseme), маппинг на Blend Shapes через OVRLipSyncContext компонент. Поддерживает Unity.
SALSA LipSync Suite (Asset Store) — более широкий маппинг, поддержка timeline для кат-сцен, возможность offline-обработки аудио. Работает как с Blend Shapes, так и с Joint-ригом.
Ручной lip sync по ключевым кадрам — для кат-сцен и важных диалоговых сцен, где автоматика не даёт нужного качества. Процесс: Waveform в Timeline, ключевые кадры Blend Shape Weight по фонемам в нужных позициях.
Веса скиннинга для лица
Лицо скиннингуется отдельно от тела — с исключительно мелкими весами и большим количеством контрольных точек. Особые зоны:
Уголки глаз. Должны деформироваться вместе с веком и не следовать за Eye-костью. Вес на Eye-кость — 0, вес на UpperLid = 0.5, LowerLid = 0.5.
Носогубная складка. При улыбке через LipCorner-кость складка должна углубляться — это лучше через Blend Shape, не через кости. Если нет Blend Shapes — отдельная Cheek-кость со Stretch To.
Лоб. Обычно скиннингуется полностью на Head-кость без вторичных инфлуенсов, деформируется только через Blend Shapes или Brow-кости.
Сроки
| Задача | Ориентировочный срок |
|---|---|
| Базовый фейс-риг на костях (16–20 костей) | от 1 до 2 дней |
| Blend Shapes набор (30–52 морфа) | от 2 до 4 дней |
| Комбинированный риг кости + Blend Shapes | от 3 до 5 дней |
| Интеграция Lip Sync SDK в Unity | от 1 до 2 дней |
Фейс-риг сильнее всего зависит от качества исходной геометрии лица — топология с edge loop вокруг рта и глаз упрощает работу. Стоимость рассчитывается после оценки меша и требований к мимике.





