В реальности деформация кожного покрова происходит, конечно, не так прямолинейно. Согнутые кости вызывают сокращения мышц, а мышцы, в свою очередь, вызывают деформации кожи. Однако в компьютерной графике до сих пор преобладает «прямой» подход, когда кости напрямую влияют на поверхность модели. Следует, тем не менее, сказать, что в последнее время стали появляться «полуавтоматические» мускульные решения в виде различных плагинов и отдельных пакетов. Эти решения как раз исповедуют «анатомический» подход, передающий деформации от костей к коже через мышцы. Также следует добавить, что в MAYA имеются довольно гибкие средства для настройки мышечных деформации в дополнение к традиционному прямому скинингу (или даже как альтернатива ему).
Иногда эти средства называют «непрямым» скинингом (indirect skinning). Представьте себе, что вы назначили на часть тела (например, на бедро) сетку Lattice в качестве деформера.
А потом привязали этот деформер к соответствующим костям скелета. Получится, что кости гнут сетку Lattice, а сетка деформирует бедро. Другой пример непрямого скининга заключается в использовании Wrap-деформерэ. Предположим у вас есть две модели одного персонажа с разным разрешением. Вы можете привязать к скелету модель с низким разрешением, а потом использовать эту прискиненную модель как Wrap-деформер для модели высокого разрешения. Кости будут гнуть низкополигональную модель, а та, в свою очередь, будет деформировать высокополигональную. Преимущество такого подхода состоит в том, что настроить скининг на низкополигональной модели гораздо проще и быстрее.
Кроме того, к непрямому скинингу можно отнести механизм Influence Objects (или, как говорят майщики, «инфлюенсы», то есть влияющие объекты). Когда, в дополнение к скинингу, на поверхность модели могут также влиять своей формой дополнительные объекты. Именно так делаются мышечные деформации. К этому мы еще вернемся. А сейчас, чтобы «потрогать руками» скининг, сделайте простое упражнение.
Создание скининга Откройте файл skinLeg.ma. В нем содержится часть тела и кусочек скелета.
Выберите поверхность и верхний сустав Leg.
Выполните Skin=>Bind Skin=>Smooth Bind.
Выберите группу LGroup (для этого есть специальный «хендл») и пошевелите ногой. Как видите, нога гнется с помощью костей (можете также выбирать подгруппы внутри LGroup и вращать соответствующие части ноги).
У большинства населения планеты тут же неизбежно возникнут вопросы: почему мы воспользовались методом Smooth Bind и зачем существует на свете метод Rigid Bind?
Рискуя шокировать «майскую» общественность, я не буду рассказывать ничего конкретного про метод Rigid Skin. Он морально устарел и используется относительно (если не сказать, абсолютно) редко. Я опросил значительную часть «сетапщиков», и они лишь подтвердили этот факт. (Не исключаю, правда, что где-нибудь, конечно же, существуют фэн-клубы Rigid Skin, и потому заранее прошу их не подавать на меня в суд.)
Методы мягкого и жесткого скининга Теперь попробую рассказать про оба метода «на пальцах», прежде чем окончательно забыть Rigid Bind. Глядя на то, как кости деформируют поверхность, попробуйте представить себе простейший алгоритм, по которому они это делают (если вы слишком просвещены, сделайте вид, что забыли все известные алгоритмы). Первое, что приходит на ум -каждая кость тащит за собой «свои» вершины. То есть все вершины прискиненной поверхности разбиваются на эксклюзивные наборы (сеты), каждый из которых находится под влиянием «своей» кости, то есть перемещается вслед за ней. Это и есть алгоритм Rigid Bind! Он прост, вычислительно легок, но результат его работы довольно средний. Ведь возникают многочисленные самопересечения и заломы в тех местах, где вершины, «ведомые» соседними костями, начинают проникать друг сквозь друга. Попробуйте снова открыть файл skinLeg.ma и привязать поверхность к скелету методом Rigid Bind. Согните ногу и полюбуйтесь на результат.