Скіннінг моделей персонажів для коректної деформації графіки
Скіннінг – розфарбування ваг: кожній вершині меша призначається вплив (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 робочих дні. Вартість визначається після оцінки складності.





