Первые шаги в Maya. Урок 10. Пространственные решетки и кластеры
Шевелящая щупальцами актинидия
Падающая капля
Возможность перемещения объекта внутри деформирующей его решетки можно использовать, например, для получения деформирования падающей капли. Для этого создайте обычную NURBS-сферу большого радиуса (в данном случае радиус равен 5) и назначьте ей Lattice-деформатор (рис. 50). Уменьшите радиус сферы примерно до 1 (рис. 51). Выделите решетку, переключитесь в режим редактирования вершин ( F 9) и деформируйте решетку примерно так, как показано на рис. 52, — перемещая вершины решетки, периодически переключайтесь в режим работы на уровне объектов, визуально оценивайте вид капли на том или ином участке решетки и корректируйте положение вершин.
Рис. 50. Исходная сфера с решеткой
Рис. 51. Вид сферы с решеткой после изменения ее размера
Рис. 52. Вид решетки после деформирования
Выделите шар и разместите его над решеткой. Учитывая, что капля должна падать медленно, увеличьте на слайдере Range Slider число кадров анимации, например, до 240. Проверьте, чтобы ползунок таймера анимации стоял на первом кадре, щелкните на кнопке Autokeyframe (Автоматическая установка ключевых кадров) и создайте первый ключ анимации, нажав клавишу S. Перетащите ползунок слайдера TimeSlider вправо на последний кадр и переместите шар через решетку вниз, в результате чего будет создан второй ключ (рис. 53). Отключите режим автоматического создания ключей, проиграйте анимацию, и вы увидите, что капля будет плавно падать и при этом деформироваться в соответствии с деформированной формой пространственной решетки. Для большего эффекта можно создать для падающей капли подходящее окружение, например смоделировать чашу с водой (рис. 54). Саму чашу несложно получить обычным вращением NURBS -кривой, а водную поверхность в ней вырезать из плоскости, для чего достаточно выделить нужную изопарму чаши (выбрав из контекстного меню команду Isoparm и выделив соответствующую кривую) и применить к ней команду Surfaces=>Planar (Поверхности=>Планарный) — рис. 55. После чего останется лишь подобрать подходящие материалы и провести ренедеринг всех кадров анимации (рис. 56).
Рис. 53. Положение шара в первом (слева) и последнем кадрах
Рис. 54. Чаша и кривая, лежащая в ее основе (кривая выделена зеленым цветом)
Рис. 55. Создание плоской водной поверхности — выделение изопармы (слева) и вид вырезанной Planar-плоскости (справа)
Рис. 56. Вид капли в некоторых кадрах анимации
Cluster
Деформатор Custer (Кластер) объединяет вершины объектов ( NURBS-поверхностей, полигональных моделей или решеток) в группы, называемые кластерами и отображаемые в модели при помощи маленькой иконки « c» (рис. 57). Каждый кластер имеет собственный центр вращения и позволяет управлять сразу всеми входящими в него вершинами. Кластеры можно перемещать, поворачивать и масштабировать, что в итоге приводит к изменению формы соответствующих объектов. С одной стороны, это удобнее и быстрее, так как для выполнения той или иной манипуляции (перемещения, вращения или масштабирования) нет необходимости каждый раз выделять нужные вершины — достаточно выделить кластер, в котором они объединены. С другой стороны, таким образом обеспечивается более тонкое управление вершинами благодаря присваиваемым им весовым коэффициентам. Кластеры довольно широко применяются как в моделировании, так и в анимации — например с их помощью имитируют мышцы персонажей, управляют изменением черт лица, достигают более естественного перемещения персонажей и т.д.
Рис. 57. Исходный вид шара с созданным кластером (слева) и его C luster-деформирование
Для примера создайте обычный NURBS-шар и, не снимая с него выделения, переключитесь в режим редактирования вершин ( F9) и выделите показанные на рис. 58 вершины. Затем назначьте им деформатор Cluster, применив команду Deform=>Create Cluster (Деформация=>Создать кластер), — о том, что кластер создан, свидетельствует появление иконки «c». Аналогичным образом выделите такие же вершины на противоположной стороне шара и создайте второй кластер (рис. 59). Выделите оба кластера и инструментом ScaleTool масштабируйте их по оси Z — в итоге шар станет напоминать подушку (рис. 60). Назначенные вершинам Cluster-деформаторы отображаются в окне Outliner (Структура) — рис. 61, а результат их применения определяется параметрами настройки деформатора (они регулируются обычным образом в окнах ChannelBox и AttributeEditor) и присвоенными вершинам весовыми коэффициентами.
Рис. 58. Выделение объединяемых в кластер вершин
Рис. 59. Появление двух кластеров
Рис. 60. Результат изменения формы объекта под воздействием деформаторов Cluster
Рис. 61. Деформатор Cluster в окне проекции и в списке окна Outliner
Для удаления ненужного кластера достаточно выделить его в окне Outliner и нажать клавишу Del — форма объекта при этом вернется к оригинальной. Если требуется удалить деформатор с сохранением его воздействия, то нужно выделить объект и удалить историю его конструирования командой Edit=>DeletebyType=>History (Правка=>Удалить объекты типа =>История).
У любого кластера (так же как и у любого объекта) имеется опорная точка (Pivotpoint), от положения которой зависит то, как кластер будет вращаться и масштабироваться. Первоначально точка Pivotpoint находится в геометрическом центре кластера, однако при необходимости она может быть легко перемещена, что соответственно скажется на особенностях его трансформации и масштабирования. Чтобы убедиться в этом, попробуем вначале повращать первый из кластеров при исходном положении опорной точки (рис. 62). Затем отмените последнее действие, вновь выделите кластер, нажмите клавишу Insert для активирования режима работы с опорными точками, переместите опорную точку по оси X и опять повращайте кластер — результат окажется совершенно иным (рис. 63). Верните точку Pivot point в исходную позицию, сделав откат.
Рис. 62. Вращение кластера при начальном положении опорной точки
Рис. 63. Вращение кластера при измененном положении опорной точки
Как уже было отмечено, кластеры удобны не только потому, что позволяют управлять многими вершинами одновременно, но и наличием возможности присваивать объединенным в них вершинам разные весовые коэффициенты (или, как говорят, разные веса), что приводит к различной степени воздействия деформатора на них. Там, где значение весового коэффициента больше, влияние окажется более интенсивным, а в вершинах с меньшими весовыми коэффициентами воздействие деформатора будет сказываться слабее. Конечно, в большинстве случаев воздействие деформатора должно быть одинаковым на все точки, но отнюдь не всегда. Например, у дерева на ветру концы ветвей должны колебаться гораздо заметнее, чем у середины ствола и тем более чем ствол, который привести в движение может лишь очень сильный порыв ветра. Или у наклоняющего голову персонажа голова двигается быстрее, нежели шея, и т.п. А это означает, что весовые коэффициенты более активно перемещающихся при анимации точек должны быть больше. По умолчанию всем точкам любого кластера присвоены максимально возможные значения весов — 1, однако данные значения могут изменяться в интервале от 0 до 1 и их несложно отредактировать, что производится двумя способами: непосредственным выставлением весов в редакторе компонентов ComponentEditor и в процессе визуального рисования весов инструментами группы PaintWeightsTool.
Мы остановимся на первом варианте. Выделите все вершины первого кластера и откройте окно редактора компонентов, применив команду Window=>GeneralEditors=>ComponentEditor... (Окно=>Основные редакторы=>Редактор компонентов). Перейдите на вкладку WeightedDeformers и для первых пяти точек установите весовой коэффициент равным 0,5 (рис. 64) — это тут же приведет к изменению характера их деформации (рис. 65).
Рис. 64. Изменение весовых коэффициентов в редакторе компонентов
Рис. 65. Вид объекта с равными весами точек первого кластера (слева) и с различными
Стоит признать, что точно такой же результат можно получить и без регулирования весов вершин через кластер, а обычным их перемещением на разное расстояние, так что применение различных весовых коэффициентов при формировании модели — это просто дополнительный вариант моделирования. Иное дело — анимация, где манипулирование разными весовыми значениями позволяет добиваться гораздо большей естественности движений. Для примера создайте NURBS-конус и установите число разбиений в каждом его направлении до восьми, выделите указанные на рис. 66 вершины и создайте для них кластер, применив команду Deform=>Create Cluster (Деформация=>Создать кластер). Включите режим автоматического создания ключей анимации, активируйте первый кадр и создайте первый ключ, воспользовавшись командой Animate=>SetKey (Анимация=>Создать ключ). Переключитесь в последний кадр, наклоните конус обычным вращением (в результате чего будет создан второй ключ) и щелкните на кнопке Autokeyframe (Автоматическая установка ключевых кадров) — рис. 67. Проиграйте анимацию — как и ожидалось, конус будет наклоняться, однако естественным данный наклон назвать сложно, так как объект при наклоне немыслимо деформируется. Попробуем изменить ситуацию, скорректировав веса вершин. В проекции Front выделите первую снизу группу вершин кластера, откройте окно редактора компонентов (команда Window=>GeneralEditors=>ComponentEditor... — Окно=>Основные редакторы=>Редактор компонентов), активируйте вкладку WeightedDeformers и установите весовые коэффициенты всех данных вершин равными 0,25 (рис. 68). Не закрывая окно ComponentEditor, выделите вторую и третью снизу группы кластерных вершин (данные в редакторе компонентов тут же обновятся) и установите для них веса, равные 0,5 (рис. 69). Проиграйте анимацию — конус станет наклоняться изящно без какой-либо неестественной деформации корпуса (рис. 70 и 71).
Рис. 66. Выделение объединяемых в кластер вершин
Рис. 67. Вид конуса в первом и последнем кадрах
Рис. 68. Настройка весовых коэффициентов для первой группы вершин
Рис. 69. Настройка весовых коэффициентов для второй и третьей групп вершин
Рис. 70. Вид конуса в промежуточном (слева) и последнем кадрах анимации — весовые коэффициенты всех вершин кластера одинаковы
Рис. 71. Вид конуса в промежуточном (слева) и последнем кадрах анимации — весовые коэффициенты всех вершин кластера различны