Первые шаги в Maya. Урок 8. Нелинейные деформаторы
Примеры использования деформаторов
Столик с металлическими украшениями
При моделировании NURBS-поверхностей и полигональных моделей многие операции оказываются очень трудоемкими, так как их приходится выполнять на уровне вершин. Вместе с тем бывают ситуации, когда точно такого же эффекта можно достичь куда более простым путем, если воспользоваться подходящим деформатором. Поэтому в данном уроке мы подробно ознакомимся с некоторыми типами деформаторов и рассмотрим простые примеры их применения.
Теоретические аспекты
Деформаторы — это особые типы объектов, используемые для деформации формы других объектов, включая рассмотренные нами ранее полигональные и NURBS-объекты и широко применяемые как непосредственно в моделировании, так и в анимации. Плюсом их использования является возможность быстро изменять геометрию объекта без необходимости перемещения вручную его вершин.
За работу с деформаторами отвечает меню Deform (Деформировать), доступное только в режиме создания анимации (клавиша F2). Открывающийся через данное меню список деформаторов довольно велик, в данном уроке мы рассмотрим лишь нелинейные деформаторы — они находятся в подменю CreateNonlinear (Создать Нелинейные) — рис. 1 и применяются для создания нелинейной деформации, отличающейся от линейной тем, что изменение формы объекта производится неравномерно вдоль его осей.
Рис. 1. Подменю CreateNonlinear
В Maya имеются следующие типы нелинейных деформаторов:
- Bend (Изгиб) — деформирует объект за счет его осевого изгиба;
- Flare (Выпуклость) — позволяет увеличить/уменьшить степень выпуклости объекта;
- Sine (Синусоидальная деформация) — деформирует объект за счет синусоидальных возмущений его поверхности в направлении одной из осей;
- Squash (Сплющивание) — обеспечивает сплющивание поверхности объекта в направлении одной из осей с сохранением его первоначального объема;
- Twist (Скручивание) — изменяет форму объекта путем применения деформации скручивания относительно одной из его осей;
- Wave (Волна) — деформирует объект за счет синусоидальных возмущений его поверхности в двух направлениях с образованием концентрических волн.
Назначенные объектам нелинейные деформаторы (как и прочие объекты) отображаются в окне Outliner (Структура), а результат применения любого из них определяется параметрами настройки деформатора (они регулируются обычным образом в окнах ChannelBox и AttributeEditor) и количеством сегментов самого объекта. Как правило, число сегментов устанавливается при создании объекта, однако при не совсем удачном применении деформатора оно может быть увеличено уже после его назначения, что, правда, может иметь негативные последствия — в таком случае приходится удалять деформатор, увеличивать степень разбиения объекта, а затем вновь его назначать. Как правило, при небольшом числе сегментов увеличение их количества приводит к изменению характера деформации, а при большом — способствует большей гладкости получаемой поверхности. При необходимости к объекту может быть применено сразу несколько деформаций — получаемый результат при этом чаще всего зависит от порядка следования деформаторов.
Bend
Учитывая, что мы многократно будем обращаться в одно и то же подменю CreateNonlinear, выбирать команды из которого на практике довольно долго, временно вынесем данное подменю на плавающую панель. Для этого активируйте режим Animation (F2), откройте меню Deform=>CreateNonlinear (Деформировать=>Создать нелинейные) и щелкните на двойной разделительной линии вверху подменю (рис. 2). Передвиньте появившуюся плавающую панель на свободную часть экрана так, чтобы она всегда была под рукой.
Рис. 2. Превращение подменю в плавающую панель
Для того чтобы разобраться с основами применения деформаторов, создайте полигональный куб размером 5 x5 x5 и увеличьте число разбиений в каждом его направлении до 5. Установите режим тонированной раскраски, включив флажок SmoothShadeAll из собственного меню окна проекции. Выделите куб и в созданном плавающем меню щелкните на команде Bend (Изгиб) — на первый взгляд ничего не произойдет, разве что цвет сетки куба с зеленого сменится на малиновый (рис. 3). Но все не так просто — на самом деле в списке объектов появился деформатор (что отражено в окне Outliner — рис. 4), однако в окне Perspective деформатор не виден, но лишь потому, что установлен режим тонированной раскраски. Переключитесь в режим каркасного отображения (команда Shading=>Wireframe) и увидите, что деформатор находится внутри куба — рис. 5. Не снимая выделения с деформатора, откройте окно каналов, поверните деформатор на 90° вокруг оси Z и увеличьте значение параметра Curvature (Кривизна) с 0 до 1, для удобства просмотра переключитесь обратно в режим тонированной раскраски, щелкнув на клавише 5 (рис. 6). Как видите, стоило увеличить кривизну деформатора (поворот по оси Z определяет лишь направление воздействия деформатора), и куб неузнаваемо изменился.
Рис. 3. Вид куба сразу после назначения деформатора Bend
Рис. 4. Появление деформатора в окне Outliner
Рис. 5. Деформатор в режиме каркасного отображения
Рис. 6. Результат увеличения параметра Curvature
Откройте окно редактора атрибутов (AttributeEditor) и поэкспериментируйте с изменением параметров Envelope (Оболочка), Low Bound (Нижняя граница) и High Bound (Верхняя граница). Обратите внимание, что Low Bound и High Bound определяют пределы воздействия деформатора вдоль конкретной оси, а Envelope сужает или расширяет всю область его применения (это будет справедливо и для любых других деформаторов) — рис. 7.
Рис. 7. Примеры различных вариантов настройки параметров деформатора Bend
И напоследок попробуйте применить к уже деформированному объекту трансформации: перемещение, вращение и масштабирование — и обратите внимание, что все они приводят к его дополнительной (и совсем ненужной) деформации (рис. 8). Дело в том, что при трансформации объекта с уже назначенным деформатором (любым, а не только деформатором Bend) меняется положение деформатора относительно объекта, что приводит к нежелательному изменению его формы. Связь между объектом и деформатором прерывается при удалении истории конструирования объектов (Edit=>DeletebyType=>HistoryConstructionHistory — Редактировать=>Удалить по типам=>История), правда после этого уже нельзя будет менять параметры настройки деформатора. Поэтому удалять историю лучше по окончании моделирования конкретного элемента, а при необходимости применения трансформаций в процессе моделирования во избежание нежелательного изменения формы следует выделять объект вместе с деформатором.
Рис. 8. Примеры трансформации объекта с Bend -деформатором
Flare
Выделите деформатор Bend в окне Outliner и удалите его. Выделите куб и назначьте ему деформатор Flare — как и в случае с деформатором Bend, на внешнем виде куба вначале это никак не отразится (рис. 9). Установите параметр Curvature (Кривизна) равным –0,5 — центральная часть объекта окажется сжатой (рис. 10). Нажмите клавишу t, и вы увидите несколько маленьких манипуляторов, с помощью которых (равно как и через окна ChannelBox и AttributeEditor) можно управлять параметрами деформатора. Поперемещайте манипуляторы и понаблюдайте за изменением формы объекта, в конечном счете остановитесь на варианте, показанном на рис. 11, где четко видно, что параметры StartFlare (Начальное значение выпуклости) и EndFlare (Конечное значения выпуклости) регулируют ширину области объекта на входе и выходе влияния деформатора. Увеличьте значение параметра Curvature, например, до 0,5 и убедитесь, что в данном деформаторе он может привести к получению вогнутой поверхности (при отрицательных значениях) или, наоборот, выпуклой (при положительных значениях) — рис. 12. Остальные параметры деформатора Flare воздействуют на изменение формы объекта точно так же, как и аналогичные параметры деформатора Bend.
Рис. 9. Вид куба сразу после назначения деформатора Flare
Рис. 10. Результат изменения параметра Curvature
Рис. 11. Вид объекта после изменения параметров StartFlare и EndFlare
Рис. 12. Результат увеличения параметра Curvature
Увеличьте число разбиений исходного куба в каждом направлении до 15 — поверхность объекта станет более гладкой (рис. 13), а затем размер по оси Y (ScaleY) — до 20. Это приведет к кардинальному изменению формы объекта, так как деформатор будет воздействовать теперь не на всю поверхность, а лишь на ее центральную часть, в чем можно удостовериться, переключившись в режим каркасного отображения (клавиша 4), — рис. 14.
Рис. 13. Результат увеличения числа сегментов объекта
Рис. 14. Вид объекта после увеличения значения Scale Y в режиме тонированной раскраски (слева) и в режиме каркасного отображения
Sine
Верните размер по оси Y к исходному и удалите деформатор Flare (предварительно выделив его в окне Outliner), выделите куб и назначьте ему деформатор Sine, что изначально опять-таки никак не повлияет на форму объекта. Увеличьте амплитуду ( Amplitude) с 0 до 0,2, а длину волны (Wavelength) установите равной 1 — поверхности объекта, расположенные в направлении оси X станут волнообразными (рис. 15).
Рис. 15. Вид объекта с Sine-деформацией
Squash
Выделите исходный объект, назначьте ему деформатор Squash и поэкспериментируйте с различными значениями фактора сжатия ( Factor) — обратите внимание, что при отрицательных его значениях объект расширяется и становится короче, а при положительных вытягивается вдоль оси воздействия параметра (рис. 16).
Рис. 16. Вид объекта с разными вариантами Squash-деформации
Стоит отметить, что деформаторы могут применяться не только ко всему объекту целиком, но и к отдельным его вершинам. Попробуем воспользоваться подобным вариантом назначения деформатора Squash для расширения нижней половины объекта. Для этого удалите деформатор Squash, выделите объект, перейдите в режим редактирования вершин ( F8), выделите вершины его нижней части (рис. 17) и вновь назначьте им деформатор Squash с параметрами примерно как на рис. 18.
Рис. 17. Выделение нижних вершин
Рис. 18. Вид объекта со Squash-деформацией, примененной к нижним вершинам
Twist
Удалите деформаторы Sine и Squash, выделите куб и назначьте ему деформатор Twist. Поэкспериментируйте с разными значениями параметра StartAngle (Начальное значения угла) — если данный параметр равен 0, то скручивания нет, а при его увеличении куб скручивается вокруг оси Y тем сильнее, чем больше по модулю значение параметра (рис. 19). Правда, все это верно лишь при нулевом значении параметра EndAngle (Конечное значение угла), а если меняются оба параметра (StartAngle и EndAngle), то степень скручивания растет с увеличением разницы между ними. Обратите внимание также на зависимость изменения формы от направления оси деформатора. Изначально в нашем случае скручивание проводилось по оси Y, попробуйте повернуть деформатор по оси Z на 90° — куб станет скручиваться уже по оси X (рис. 20) и т.д. Кроме того, попробуйте уменьшить значения параметров Low Bound (Нижняя граница) и High Bound (Верхняя граница) до –0,5 и 0,5 соответственно — область влияния деформатора сузится и теперь скручиваться будет лишь средняя часть объекта (рис. 21).
Рис. 19. Скручивание куба при разных значениях StartAngle
Рис. 20. Изменение направления скручивания при повороте деформатора
Рис. 21. Результат сужения области влияния деформатора
Wave
Удалите деформатор Twist, выделите куб и назначьте ему деформатор Wave. Установите значение Amplitude (Амплитуда) равным –0,15 — на верхней грани куба появится одна концентрическая волна (рис. 22). Понаблюдайте за изменением формы объекта при разных значениях амплитуды и обратите внимание, что даже незначительное изменение данного параметра приводит к весьма заметной разнице в деформации. И напоследок уменьшите длину волны (Wavelength) до 0,5 — количество волн на поверхности объекта удвоится (рис. 23).
Рис. 22. Вид куба с одной волной
Рис. 23. Вид куба с двумя волнами
Анимирование деформаторов
В Maya анимировать можно самые разные объекты, включая деформаторы, правда устанавливать на них ключи лучше не через командное меню, а прямо в окнах ChannelBox и AttributeEditor. Для примера попробуем анимировать Bend-деформатор на том же полигональном кубе, что служил основой для предыдущих экспериментов. Удалите созданные для него деформаторы, выделите куб, назначьте деформатор Bend и поверните последний на 90° вокруг оси Z. В режиме анимации с ручным созданием кадров активируйте первый кадр и откройте редактор атрибутов. При выделенном деформаторе установите для параметра Curvature (Кривизна) минимально возможное значение. Нажмите в поле Curvature правую кнопку мыши и выберите из контекстного меню команду SetKey (Установить ключ) — рис. 24, что приведет к созданию ключа для данного параметра. Перейдите по временной шкале в середину диапазона, вновь смените кривизну в поле Curvature (мы выбрали максимально возможный вариант) и создайте для него ключ через контекстное меню (рис. 25). Аналогичную операцию проведите для последнего кадра, установив минимальное значение кривизны (как и в первом кадре) и также создав ключ. Запустите анимацию и увидите, что куб станет деформироваться, плавно переходя из одного Bend-состояния в другое, что внешне будет напоминать своеобразное сворачивание/разворачивание.
Рис. 24. Создание ключа для первого кадра
Рис. 25. Создание ключа для промежуточного кадра