Неотъемлемой частью сборки персонажей является процесс связывания системы костей с геометрической оболочкой (skinning) — особый способ соединения скелета и геометрии. Если в предыдущем случае вы непосредственно присоединяли части объекта к участкам иерархической цепочки за счет формирования связей вида «предок — потомок», то теперь вам предстоит иметь дело с кластерами (clusters), то есть группами вершин или управляющих точек, отвечающих за деформацию модели. Именно так скелеты используются для анимации персонажей.
Рис. 9.19. Другая проекция руки с системой костей
По своей сути техника связывания довольно проста. Однако она дает почти полный контроль над деформацией геометрии.
Связывание: общие сведения
В теории связывание идентично деформатору Lattice (Решетка), знакомому вам по главе 6. Как вы помните, присоединенная к объекту решетка может влиять на различные части модели. Каждый ее участок воздействует на определенные управляющие точки NURBS-поверхности или вершины полигональной сетки и в процессе перемещения изменяет вид объекта.
Связывание оболочки со скелетом приводит к аналогичному результату. Точки модели соединяются с костями, в результате чего перемещения костей вызывают преобразования оболочки.
Соединив вершины или управляющие точки модели со скелетом, вы получаете возможность деформировать оболочку. При перемещении кости или при ее повороте в суставе оболочка следует за скелетом, принимая новые очертания.
Непосредственно связать геометрию с оболочкой можно двумя способами — жестким и мягким. При этом у вас остается возможность влиять на вид геометрии с помощью присоединенных к скелету деформаторов и решеток, но в данном случае мы используем прямые методы. На рис. 9.20 показан результат действия команды Rigid Bind (Жесткое связывание), а на рис. 9.21 — результат действия команды Smooth Bind (Мягкое связывание).
Создайте NURBS-цилиндр, разбитый по высоте на 16 или даже более интервалов. В данном случае чем выше степень разбиения, тем лучше будет гнуться модель. Продублируйте цилиндр и сдвиньте копию в сторону. Затем в окне проекции Front (Вид спереди) создайте простой скелет, состоящий из пяти суставов, начинающийся в нижней части цилиндра и заканчивающийся у верхнего основания. Продублируйте цепочку костей и поместите ее в центр второго цилиндра.
Рис. 9.20. Результат жесткого связывания цилиндра. Складка четко выражена
Рис. 9.21. Результат мягкого связывания цилиндра. В данном случае мы имеем
более гладкую складку
Жесткое связывание
Жесткое связывание является более простым, так как в этом случае каждый сустав в единицу времени воздействует только на одну точку поверхности. Команда Rigid Bind (Жесткое связывание) группирует управляющие вершины NURBS-no-верхности или вершины полигональной сетки в кластеры, которые, в свою очередь, присоединяются к костям. Совместное воздействие нескольких суставов на управляющие вершины невозможно. Именно поэтому модель будет иметь более выраженную складку, чем при мягком связывании.
Для выполнения жесткого связывания выделите первую систему костей, а затем при нажатой клавише Shift выделите цилиндр. Выберите в меню Skin (Оболочка) команду Bind Skin (Связать с оболочкой) и щелкните на квадратике, расположенном справа от команды Rigid Bind (Жесткое связывание).
Появится окно диалога с параметрами жесткого связывания. Сейчас нас вполне устроят значения, заданные по умолчанию. Раскрывающийся список Bind To (Связать с) определяет, будет ли с геометрией связан весь скелет или же только указанные вами суставы. Выбрав вариант Selected Joints (Выделенные суставы), вы сможете задать степень влияния системы костей на модель. Впрочем, в данном случае мы оставим заданный по умолчанию вариант Complete Skeleton (Co всем скелетом).
Установите флажок Color Joints (Окрашивание суставов), чтобы каждый связанный сустав был окрашен в свой цвет. В некоторых случаях это облегчает рабочий процесс. Переключатель Bind Method (Способ связывания) определяет способ соединения с оболочкой модели. Например, когда он установлен в положение Closest Point (К ближайшей точке), объединение точек поверхности в кластеры происходит в зависимости от ближе всего расположенного сустава. Если же установить его в положение Partition Set (Распределенный набор), вы сможете самостоятельно выбирать точки поверхности, которые будут связаны с тем или иным суставом.
Если пользователь определяет наборы точек поверхности для каждого имеющегося сустава, программа в итоге назначает каждый из наборов ближайшему суставу. Например, можно указать, что точки в верхней части поверхности входят в набор, которым управляет сустав, расположенный снизу.
В данном случае мы оставляем для всех параметров заданные по умолчанию значения, поэтому просто щелкните на кнопке Bind Skin (Связать оболочку) в окне диалога Rigid Bind Skin Options (Параметры жесткого связывания). В итоге выделенным окажется корневой сустав связанной с первым цилиндром системы костей, а цилиндр приобретет пурпурный цвет, что показывает наличие входных связей.
Мягкое связывание
При мягком связывании один сустав может влиять на несколько точек оболочки модели. Это позволяет при повороте суставов сгибать довольно далеко расположенные от них области. Суставы влияют на точки поверхности в различной степени, убывающей по мере удаления от сустава и выражаемой числом от 0 до 1. Величина суммарных воздействий всех суставов не может превышать 1. Maya автоматически вычисляет величины воздействий при связывании, хотя пользователь позднее может изменить их.
Выделите вторую цепочку костей и второй цилиндр, выберите в меню Skin (Оболочка) команду Bind Skin (Связать с оболочкой) и щелкните на квадратике, расположенном справа от команды Smooth Bind (Мягкое связывание). В появившемся окне диалога вы увидите уже знакомый раскрывающийся список Bind To (Связать с). В расположенном ниже раскрывающемся списке Bind Method (Способ связывания) по умолчанию выбран вариант Closest Joint (С ближайшим суставом). Это означает, что точки оболочки связываются с ближайшим к ним суставом цепочки костей. Такой вариант чаще всего используется в работе с персонажами, так как в этом случае уделяется внимание компоновке скелета.
Скажем, бедренный сустав левой ноги не будет влиять на поверхность правой ноги, несмотря на то что он расположен на небольшом расстоянии от этой поверхности. Если же вы выберете в раскрывающемся списке Bind Method (Способ связывания) вариант Closest Distance (По ближайшему расстоянию), суставы будут воздействовать на ближайшие точки поверхности без учета своего положения в иерархии.
Параметр Max Influence (Максимальное влияние) определяет количество суставов, которые могут воздействовать на одну точку поверхности. Атрибут Dropoff Rate (Уровень спада) задает уменьшение влияния сустава с увеличением расстояния. Скажем, плечевой сустав может в различной степени влиять на натяжение мышц руки, грудной клетки и живота. Ограничивая значения указанных параметров, вы можете управлять воздействием на модель отдельных суставов. В данном случае также лучше оставить заданные по умолчанию значения параметров, поэтому просто щелкните на кнопке Bind Skin (Связать оболочку) в окне диалога Smooth Bind Skin Options (Параметры мягкого связывания). Теперь согните оба цилиндра и внимательно рассмотрите, чем именно они различаются. Разница между сгибами цилиндров проиллюстрирована на рис. 9.22.
Рис. 9.22. Цилиндр меньшего размера демонстрирует результат изгиба при жестком связывании, а цилиндр большего — результат изгиба при мягком связывании
Разрыв связи со скелетом
Чтобы разрушить связь между системой костей и геометрической оболочкой объекта, достаточно выделить скелет и оболочку и выбрать в меню Skin (Оболочка) команду Detach Skin (Отсоединить оболочку). Модель вернется к исходной форме. Иногда в процессе поиска оптимальной конфигурации операции связывания и разрыва связи приходится повторять несколько раз.
Впрочем, существует возможность вернуть объект в исходное состояние и без разрыва связи между скелетом и оболочкой. Достаточно выделить скелет и выбрать в меню Skin (Оболочка) команду Go to Bind Pose (Перейти к позе привязки). Скелет и оболочка вернутся в положение, которое они имели до связывания. К этой операции имеет смысл прибегать, например, при редактировании весов влияния суставов на вид оболочки.
Создание изгибов и складок
Существует простой способ создания изгибов и складок на поверхности модели. Достаточно связать модель с системой костей и деформировать ее нужным образом. Затем можно разорвать связь между скелетом и оболочкой, зафиксировав результат деформации. Для этого достаточно установить флажок Bake History (Завершение работы с историей конструирования) в окне диалога Detach Skin Options (Параметры разрыва связи с оболочкой), которое вызывается щелчком на квадратике, расположенном справа от команды Detach Skin (Отсоединить оболочку) в меню Skin (Оболочка). Затем остается щелкнуть на кнопке Detach (Отсоединить), и модель потеряет связь с системой костей, сохранив тем не менее форму.
Аналогичный способ применялся при удалении деформаторов. Впрочем, при разрыве связи с оболочкой история конструирования, не касающаяся операции связывания, сохраняется. При необходимости ее можно удалить отдельно с помощью команды меню Edit (Правка).