Первые шаги в Maya. Урок 10. Пространственные решетки и кластеры
Шевелящая щупальцами актинидия
При моделировании и анимировании NURBS-поверхностей и полигональных моделей многие операции очень трудоемки, так как их приходится выполнять на уровне вершин. Но иногда точно такого же эффекта можно достичь и куда более простым путем — воспользовавшись подходящим деформатором, например Lattice или Cluster . Первый позволяет деформировать объект посредством редактирования создаваемой вокруг него пространственной решетки, а второй — изменять форму объекта, управляя группами его вершин, называемых кластерами. Нюансы применения данных деформаторов мы и рассмотрим в этом уроке.
Lattice
Деформатор Lattice (Решетка) создает вокруг объекта пространственную решетку (рис. 1), имеющую свои управляющие вершины и контролирующую вид его геометрии — перемещение вершин решетки приводит к перемещению вершин объекта, что автоматически ведет к изменению его формы (рис. 2). При этом чем больше число управляющих вершин решетки, тем лучше можно контролировать геометрию объекта, но вместе с тем это усложняет его модификацию. Помимо перемещения, вершины решетки можно масштабировать и вращать, а саму решетку подвергать различным деформациям, что также будет приводить к деформированию объекта. Данный деформатор применим к поверхностям любого типа, при этом одна и та же решетка может управлять геометрией нескольких объектов одновременно. Более того, перемещая объект сквозь решетку или, наоборот, двигая решетку вдоль поверхности объекта, можно получить анимированную деформацию.
Рис. 1. Пространственная решетка, созданная вокруг конуса
Рис. 2. Деформирование конуса с использованием Lattice
Теоретически изменять геометрию объекта можно и без формирования пространственных решеток (с чем ранее мы неоднократно сталкивались), однако при редактировании сложных полигональных сеток или слишком плотных NURBS-поверхностей это может оказаться менее удобным и гораздо более трудоемким. Например, для того чтобы пропорционально сжать или расширить в определенной области плотную NURBS-модель, данную область придется многократно масштабировать, последовательно расширяя (или сужая) число задействованных в преобразовании вершин. При этом количество редактируемых вершин будет огромным, поэтому даже на их выделение уйдет немало времени. С решеткой же, у которой число линий подобрано верно, все намного проще: число вершин решетки гораздо меньше, следовательно, их можно быстро выделить, а самое главное — легко получить нужные контуры.
Для примера создайте обычный NURBS-шар и, не снимая с него выделения, назначьте ему деформатор Lattice, применив команду Deform=>CreateLattice (Деформация=>Создать решетку). В итоге вы получите пространственную решетку с параметрами по умолчанию (рис. 3). В данном случае такие параметры решетки нас не устраивают, поэтому откройте окно каналов (ChannelBox) и присвойте атрибутам SDivisions (Разбиений по S), TDivisions (Разбиений по T) и UDivisions (Разбиений по U), определяющим число линий по осям X, Y и Z, значение 4. Параметры решетки тут же изменятся (рис. 4). Выделите решетку, нажмите клавишу F9 для переключения к режиму редактирования ее вершин и выделите вершины в средней части решетки (рис. 5). Масштабируйте вершины решетки так, чтобы сузить соответствующую область шара, который в итоге станет напоминать колбу песочных часов (рис. 6). Обратите внимание, насколько быстро удалось добиться гладкой формы деформированного объекта. Достижение же подобного результата путем масштабирования вершин самого объекта (а не вершин назначенной ему решетки) потребует гораздо больше усилий. Вначале придется масштабировать вершины в средней части шара (рис. 7), затем остальные вершины (рис. 8), а потом еще некоторое время потратить на выравнивание поверхности деформированного объекта.
Рис. 3. Исходный вид решетки с шаром
Рис. 4. Результат изменения параметров решетки
Рис. 5. Выделение вершин решетки
Рис. 6. Результат масштабирования вершин решетки
Рис. 7. Масштабирование центральных вершин шара
Рис. 8. Масштабирование граничных вершин шара
Назначенный объекту деформатор Lattice отображается в окне Outliner (Структура), а результат его применения может регулироваться в окнах ChannelBox и AttributeEditor. При этом каждому Lattice-деформатору в окне Outliner соответствует не один, а сразу два узла: решетка воздействия и базовая решетка (рис. 9 и 10). Решетка воздействия по умолчанию видима (именно с ней и производится работа), а базовая решетка скрыта и в работе не участвует, зато в ней хранится информацию об исходной геометрии деформируемого объекта, что необходимо для его корректной деформации.
Рис. 9. Решетка воздействия
Рис. 10. Базовая решетка
При необходимости вернуть форму объекта к исходной с сохранением решетки применяется команда Deform=>Edit Lattice=>Reset Lattice (Деформация=>Редактировать решетку=>Перезагрузить решетку). Для удаления решетки достаточно выделить ее и нажать клавишу Del, правда при этом форма объекта станет той же, что была до деформирования. Поэтому в ситуациях, когда решетку требуется удалить, но сохранить ее воздействие на объект, приходится удалять историю конструирования объекта, применяя команду Edit=>DeletebyType=>History (Правка=>Удалить объекты типа =>История), — объект при этом должен быть выделен.
Как и при использовании других деформаций, деформирование с помощью решетки Lattice можно применить не только к целому объекту, но и к отдельным подобъектам. Удалите ранее созданную пространственную решетку (форма объекта при этом вернется к оригинальной), нажмите клавишу F 9 и выделите вершины в верхней части шара (рис. 11). Примените команду Deform=>CreateLattice (Деформация=>Создать решетку), установив для решетки размеры 6 x 6 x 6 (рис. 12). Выделите вершины самого верхнего яруса решетки, немного их масштабируйте и переместите вниз (рис. 13) — шар превратится в пиалу (рис. 14).
Рис. 11. Выделение вершин
Рис. 12. Создание Lattice-решетки
Рис. 13. Деформирование вершин верхнего яруса решетки
Рис. 14. Пиала
Возможна и обратная ситуация, когда пространственная решетка назначается не одному объекту, а целой иерархической цепочке или даже нескольким объектам одновременно. Удалите созданную ранее пространственную решетку и добавьте к шару еще один объект — куб (рис. 15). Попробуем деформировать сразу оба объекта. Выделите шар и куб и воспользуйтесь к омандой Deform=>CreateLattice (Деформация=>Создать решетку) с параметрами 2 x 2 x 2 (рис. 16). Выделите решетку, переключитесь в режим редактирования вершин, выделите ее нижние вершины и немного масштабируйте их, выделите верхние вершины и поверните их вокруг своей оси, а затем немного перетащите данные вершины вверх (рис. 17). Полученный в итоге объект лишь отдаленно будет напоминать лежащие в его основе куб с шаром и скорее будет походить на заготовку для подсвечника со свечой (рис. 18).
Рис. 15. Появление куба
Рис. 16. Создание Lattice-решетки
Рис. 17. Деформирование вершин решетки
Рис. 18. Заготовка для подсвечника
При деформировании с помощью решетки Lattice можно создавать анимацию перемещения объекта внутри деформирующей его решетки, благодаря чему можно получить интересные эффекты изменения формы объекта при его перемещении. Чтобы разобраться с этой возможностью, удалите ранее созданную пространственную решетку (форма исходных объектов восстановится) и создайте новую пространственную решетку (рис. 19). Деформируйте любые вершины решетки произвольным образом, например так, как показано на рис. 20. В окне Outliner выделите исходные объекты (куб и шар) и переместите их вверх (рис. 21) — в итоге они окажутся вне решетки, а их форма вернется к оригинальной. Проверьте, чтобы ползунок таймера анимации стоял на 1-м кадре. Включите режим автоматической установки ключевых кадров, щелкнув на кнопке Autokeyframe (Автоматическая установка ключевых кадров). Создайте первый ключ анимации, применив команду Animate=>SetKey (Анимация=>Создать ключ) или просто нажав клавишу S. В результате в первом кадре слайдера TimeSlider появится метка в виде красной вертикальной линии, говорящая о том, что ключ создан. Перетащите ползунок слайдера TimeSlider вправо на последний кадр и переместите шар и куб через решетку вниз — это приведет к созданию второго ключа (рис. 22). Отключите режим автоматического создания ключей, проиграйте анимацию, и вы увидите, что куб с шаром на первых этапах движения вниз сохраняют свою оригинальную форму, затем начинают деформироваться (причем форма их непрерывно меняется), а по окончании вновь восстанавливают исходную форму (рис. 23).
Рис. 19. Создание Lattice-решетки
Рис. 20. Деформирование вершин решетки
Рис. 21. Перемещение деформированных объектов вне пределов решетки
Рис. 22. Появление метки второго ключа
Рис. 23. Вид деформирующихся при движении объектов в одном из промежуточных кадров анимации