Скиннинг моделей персонажей для корректной деформации графики
Скиннинг — это покраска весов: каждой вершине меша назначается влияние (0–1) каждой кости скелета. Звучит просто. На практике — одна из самых трудоёмких и итеративных стадий пайплайна, особенно для персонажей с одеждой, причёсками и анатомически сложными суставами.
В VR качество скиннинга имеет прямое влияние на presence: когда аватар пользователя сгибает руку и видит артефакт деформации — конфлит реальности моментален.
Где автоматический скиннинг не справляется
Плечо. Это самый сложный сустав для скиннинга. При поднятии руки вверх плечо должно деформироваться мягко, без «схлопывания» подмышечной зоны. Automatic Weights в Blender или Heat-map скиннинг в Maya дают здесь неприемлемый результат: вершины подмышки тянутся за рукой, теряя объём.
Техника: Volume Preservation через Corrective Blendshapes. Создаётся blendshape для позы «рука поднята 90°» с восстановленным объёмом плеча, он привязывается через Driver к ротации кости плеча. При подъёме руки blendshape автоматически активируется и компенсирует потерю объёма. В Unity это реализуется через SkinnedMeshRenderer.SetBlendShapeWeight().
Пальцы. На кистях должно быть минимум 4 кости влияния на вершину (в настройках Unity: Quality Settings → Skin Weights → 4 Bones). Меньше — деформация угловатая. Скиннинг суставов пальцев требует аккуратного градиента: фаланга должна деформироваться плавно, без резкой границы влияния.
Шея при повороте головы. Частая ошибка — слишком высокое влияние кости головы на вершины шеи. При резком повороте головы в VR (а это происходит постоянно) шея скручивается неестественно. Правило: вершины нижней трети шеи должны иметь ≤ 20% влияния от Head кости.
Практика скиннинга под VR-аватар
Начинаем с переноса весов через Data Transfer Modifier (Blender) или Copy Skin Weights (Maya) от референсного «голого» меша к мешам одежды. Это ускоряет процесс: одежда в большинстве зон следует за телом, только края требуют ручной корректуры.
Проверяем деформацию на контрольных позах: T-pose → опущенные руки, рука поднята вверх, рука за спину, приседание, наклон, поворот головы максимальный. Каждая поза — отдельный тест.
Для VR-рук (видны всегда, в упоре зрения) скиннинг кистей делаем дважды: сначала общий, потом прогоняем все позиции пальцев из Hand Tracking — сжатый кулак, открытая ладонь, щипок, указательный жест. В Meta Hand Tracking SDK есть стандартный набор poses, под них и тестируем.
Влияние платформы на настройки. В Quest (мобильный VR) рекомендуется ограничить Skin Weights до 2 Bones вместо 4 — это снижает GPU-нагрузку от скиннинга. Но это компромисс: на пальцах и плечах будут заметны угловатости. Решение — использовать 4 Bones только для hero-персонажей и аватара игрока, для NPC второго-третьего плана — 2 Bones.
Normal transfer после скиннинга — часто упускаемый шаг. Нормали меша одежды должны быть перенесены с нижележащего меша тела, иначе на стыках освещение рвётся. В Blender — Data Transfer Modifier с Face Corner Data → Custom Normals.
Сроки скиннинга: простой prop — 1–3 часа; персонаж без одежды — 4–8 часов; персонаж с многослойной одеждой — 2–4 рабочих дня. Стоимость определяется после оценки сложности.





