Скиннинг и развесовка вершин (Weight Painting) моделей игр

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

От иммерсивных приложений до игровых миров и 3D-сцен

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Скиннинг и развесовка вершин (Weight Painting) моделей игр
Средняя
~3 рабочих дня
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Скиннинг и развесовка вершин (Weight Painting) моделей игр

Скиннинг — процесс назначения каждой вершине меша влияния костей рига. Чем точнее развесовка, тем естественнее деформируется модель при анимации. Никакой алгоритм не заменяет ручную правку в критичных зонах: суставы, складки одежды, область шеи — всё это требует внимания и понимания того, как деформируется живая форма.

Automatic Weights как стартовая точка, не финал

Automatic Weights в Blender работает алгоритмом Heat Diffusion — каждый vertex получает вес пропорционально тепловому влиянию ближайших костей. Результат приемлем на 60–70% меша. Остаток — суставы, края, зоны пересечения геометрии — требует ручной правки.

В Maya Smooth Bind с Closest in Hierarchy даёт немного чище стартовый результат для анатомически правильных мешей. Но на нестандартной геометрии (существа, механизмы) — та же история.

Первое, что делаем после Automatic Weights: тест в pose mode по каждому суставу. Сгибаем локоть на 90°, колено на 90°, поднимаем плечо, поворачиваем шею. Фиксируем все проблемы до начала ручной правки — переделывать по одной проблеме за раз быстрее, чем после накопления нескольких.

Критичные зоны: где автовеса ломаются всегда

Плечо. Между Shoulder-костью и Spine/Chest — зона, где геометрия подмышки принадлежит обеим. Автовеса дают размытый переход через 3–4 кости, что при подъёме руки создаёт эффект «провала» ткани. Нужно: вершины внутренней стороны плеча — только UpperArm, вершины торса в зоне подмышки — только Chest. Переход — по чёткой линии, не по плавному градиенту.

Запястье и пронация. Вращение кисти передаётся через Forearm-кость. Без Twist-кости предплечья меш «скручивается» в средней точке как верёвка. С Twist-костью: половина веса предплечья перераспределяется на Twist, gradient от 0 (у локтя) до 0.5 (середина) до 0 (у запястья). Это даёт плавное раскручивание по длине.

Колено. Ошибка: слишком большая зона смешивания между UpperLeg и LowerLeg. При сгибании 90° возникает «пережим» — кожа на передней части колена теряет объём. Решение: жёсткое разделение по оси сустава. Вершины выше — только UpperLeg, ниже — только LowerLeg. На самом суставе — равный вес (0.5/0.5) только для 2–3 edge loop непосредственно в месте сгиба.

Шея. Проблема обратная — слишком жёсткое разделение. Вершины сзади шеи должны плавно переходить от Spine2 к Neck с небольшим вкладом Chest, иначе при наклоне головы назад появляется «разрыв» геометрии сзади.

Инструменты и техники Weight Painting

В Blender режим Weight Paint — основной. Важные нюансы:

Normalize All перед финализацией: каждая вершина должна иметь суммарный вес 1.0. Без нормализации вершины с весом 0.3 + 0.3 = 0.6 дадут неполное влияние костей и меш «провиснет».

Limit Total с Max Influences = 4: стандарт для Unity. GPU skinning с 4 костями на вершину — оптимальный баланс качества и производительности. На мобайле иногда снижают до 2–3.

Smooth кисть с низкими значениями Strength (0.3–0.5) — для сглаживания краёв зон влияния. Не использовать на суставах, только на плавных переходах.

Vertex Group Lock — блокировка групп, которые уже готовы. Предотвращает случайное изменение при работе с соседними зонами. В Maya эквивалент — Lock Influence через Paint Skin Weights Tool → Lock.

В Maya Component Editor даёт прямой числовой доступ к весам выбранных вершин — незаменим для точечной правки. Выделяем проблемные вершины в Vertex Mode, открываем Component Editor, находим нужные Joint-столбцы, вводим значения вручную.

Веса для одежды и отдельных мешей

Персонаж с отдельными мешами одежды требует скиннинга каждого меша независимо. Принцип: одежда повторяет скиннинг тела под ней, но с поправкой на ткань. Рубашка на торсе — те же кости, что и торс, но с меньшим влиянием конечных суставов (кисти не влияют на рукав у плеча). Плащ добавляет кости самого плаща с вторичной динамикой.

Transfer Weights в Blender (Data Transfer Modifier) — быстрый перенос весов с тела на одежду. Работает корректно, если меши примерно совпадают по форме. После переноса — ручная правка на краях одежды, где геометрия расходится с телом.

Финальная проверка перед экспортом

Checklist:

  • Суммарный вес каждой вершины = 1.0 (Normalize All)
  • Максимум 4 инфлуенса на вершину (Limit Total)
  • Нет вершин без весов (Select → All by Trait → Without a Group)
  • Тест-позы: T-Pose, A-Pose, сгиб всех суставов на 90°, крайние позы для боёвки

Сроки

Меш Ориентировочный срок
Простой NPC без пальцев от 3 до 6 часов
Полный humanoid с пальцами от 1 до 2 дней
Персонаж с одеждой (3–5 отдельных мешей) от 2 до 3 дней
Существо с нестандартной анатомией от 2 до 4 дней

Стоимость определяется после осмотра меша, количества отдельных объектов и требований по платформе к максимальному числу инфлуенсов.