Первые шаги в Maya. Урок 16. Эффекты рисования. Часть 1
Рисование на сцене и поверхностях
Примеры создания сцен с использованием эффектов рисования
Смоделировать сцену со сложными элементами органического происхождения, например с облаками, травой, кустарниками, цветами и деревьями, отнюдь не просто, ведь создание вручную столь внушительного числа подобных объектов займет очень много времени. А если вдобавок еще нужно, чтобы данные объекты не просто присутствовали в сцене в качестве фона, но и участвовали в ней (предположим, трава колыхалась на ветру, а деревья гнулись под его порывами), то подобная операция еще сложнее по причине слишком высоких трудозатрат. Иное дело, если воспользоваться специальным модулем Paint Effect (Эффекты рисования), простые примеры применения которого мы и рассмотрим в данном уроке.
Теоретические аспекты
Модуль Paint Effects предназначен для создания и анимирования сложных органических объектов, таких как колышущаяся трава, сверкающие молнии, разлетающиеся на ветру волосы, падающие капли дождя и т.п. Более того, полученные с его помощью объекты со временем могут изменяться, полностью преображаясь, например при желании можно создать анимацию раскрытия цветка: в первых кадрах это будет закрытый бутон, а в конце — уже полностью раскрывшийся цветок, причем его распускание будет выглядеть вполне реалистично. Или даже продемонстрировать растущие словно по волшебству деревья и кустарники.
За работу с эффектами рисования отвечает меню с одноименным названием PaintEffects, доступное в режиме Rendering (клавиша быстрого вызова — F5). А создаются эффекты рисования путем непосредственного рисования в сцене с помощью выбранных в окне Visor кистей, список которых весьма обширен (рис. 1). Здесь имеются специальные наборы кистей для создания травы Grasses, цветов (Flowers и FlowersMesh), деревьев (Trees и TreesMesh), травянистых растений (Plants и PlantsMesh), огня (Fire), световых эффектов (Electrical) и т.д., а также традиционные кисти, позволяющие рисовать фломастерами, карандашами, акварельными, масляными и пастельными красками. Кроме того, предусмотрена возможность создания и сохранения собственных кистей.
Рис. 1. Окно Visor с доступными кистями
Кисти создают штрихи на предназначенной для этого NURBS-поверхности или просто в окне проекции, что приводит к появлению наборов соответствующих объемных объектов. Штрихи бывают двух типов — простые и растущие. Первые выглядят как обычные линии, полученные перемещением кисти по холсту, когда образец просто дублируется вдоль указанного пути (рис. 2). Создание растущих мазков приводит к появлению множества дополнительных объектов — трубок (tube). Трубки растут не в одном направлении (вдоль пути, как в случае простых мазков), а сразу в нескольких, у каждой кисти своих. В процессе роста они могут не только увеличиваться в размере, но и образовывать другие трубки (ветви и листья, бутоны и цветы). По умолчанию рост трубок продолжается автоматически до полного завершения построения объекта (даже если на момент отпускания мыши в процессе рисования последние из объектов были созданы только наполовину) — это происходит благодаря установке флажка TubeCompletion (Завершение трубок). В обоих случаях формируются новые объекты — штрихи (Stroke), обладающие впечатляющим набором свойств, которые можно изменять обычным образом через окно каналов или через редактор атрибутов.
Рис. 2. Типы штрихов при разном масштабировании — простые (сверху) и растущие
Штрихи привязаны к Nurbs-кривым, вдоль которых так или иначе они расположены (рис. 3). При непосредственном рисовании кистью данная кривая формируется автоматически, однако может быть и обратная ситуация, когда вначале создается кривая, к которой затем добавляется кисть. Благодаря наличию данной кривой возможности редактирования штрихов расширяются, так как становится возможным не только изменять их размер, форму, густоту расположения и т.п. (что регулируется через параметры штрихов), но и перемещать их, вращать и масштабировать обычным образом (последнее производится путем воздействия на кривую). При этом выделять штрихи, так же как и связанную с ними NURBS-кривую, лучше через окно Outliner (рис. 4).
Рис. 3. Штрихи и связанная с ними NURBS-кривая
Рис. 4. Окно проекции и окно Outliner при выделенной NURBS-кривой
Рисование на сцене и поверхностях
Самый простой вариант рисования в модуле PaintEffects — рисование непосредственно в окне проекции кистью. Для примера попробуем нарисовать прямо в окне проекции небольшой фрагмент травы. Нажмите клавишу F5 для перехода в режиме Rendering, выберите в меню PaintEffects команду GetBrush (Выбрать кисть), а затем в открывшемся окне Visor (Просмотр образцов) укажите произвольный образец травы в папке Grasses (мы остановились на кисти GrassClump). Нарисуйте произвольную кривую, что и приведет к созданию определенного фрагмента травы (рис. 5). Сохраните сцену (позже мы к ней вернемся). Данный фрагмент можно без труда перемещать, вращать и масштабировать, выделив NURBS-кривую, с которой он связан, и применив к ней соответствующие преобразования (рис. 6).
Рис. 5. Рисование травы на сцене
Рис. 6. Вращение и масштабирование фрагмента травы
Возможен и другой вариант: если объекты должны быть размещены вдоль некоторой сложной кривой, то довольно часто удобнее вначале нарисовать саму кривую и лишь потом назначить ей требуемую кисть. Рассмотрим это на практике. Смоделируйте произвольную NURBS-кривую (рис. 7). Выделите ее, активируйте нужную кисть и примените команду PaintEffects=>CurveUtilities=>AttachBrushtoCurves (Paint Effects=>Утилиты кривой=>Назначить кисть кривой) — трава окажется расположена точно вдоль отведенной ей кривой (рис. 8). Правда, в данном случае получилось, что трава растет вниз, а не вверх, но это совсем несложно исправить, изменив нормаль кривой, для чего требуется в разделе NormalDirection редактора атрибутов включить флажок UseNormal (рис. 9).
Рис. 7. Появление кривой
Рис. 8. Трава вдоль кривой
Рис. 9. Изменение нормали кривой
Поскольку работа с модулем PaintEffects требует немалых компьютерных ресурсов, то ненужные объекты на время отладки других объектов разумнее скрывать — отнесем к таким ненужным объектам только что созданный спиралеобразный фрагмент травы. Скройте его, выделив вместе с NURBS-кривой и воспользовавшись командой Display=>Hide=>HideSelection.
Рисовать можно не только прямо на сцене, но и на конкретной NURBS-поверхности — для этого ее следует сделать доступной для эффектов модуля PaintEffects, применив к ней команду PaintEffects=>MakePaintable (Эффекты рисования=>Сделать раскрашиваемым). Для примера создайте сферу, примените к ней указанную выше команду, активируйте кисть GrassClump и смоделируйте фрагмент травы на шаре (рис. 10). Стоит заметить, что при рисовании на поверхности штрихи связываются не с Nurbs-кривой, а сразу с поверхностью, что приводит к некоторым особенностям их редактирования — при масштабировании поверхности размер нарисованных штрихами объектов не меняется (рис. 11), хотя перемещать и вращать их можно прямо с поверхностью (как и штрихи, связанные с Nurbs-кривой).
Рис. 10. Рисование травы на шаре
Рис. 11. Масштабирование фрагмента травы на шаре
Кроме того, можно автоматически генерировать штрихи на поверхности — строго определенным образом либо совершенно случайно. Создайте новую сцену с Nurbs-плоскостью. Выделите кисть, выделите плоскость и щелкните на квадратике справа от команды PaintEffects=>AutoPaint=>PaintGrid (Эффекты рисования=>Авторисование=Рисование по сетке). В открывшемся окне настроек увеличьте количество рядов по обеим осям, например, до 7 (рис. 12) и щелкните на кнопке Apply — плоскость покроется выбранными объектами (рис. 13). Отмените последнюю операцию, вновь активируйте кисть и плоскость, а затем откройте окно настроек PaintRandom (команда PaintEffects=>AutoPaint=>PaintRandom — Эффекты рисования=>Авторисование= >Рисование случайным образом) и точно так же увеличьте количество рядов по обеим осям. В итоге объекты по плоскости будут разбросаны уже в произвольном порядке (рис. 14).
Рис. 12. Настройка параметров AutoPaintGrid
Рис. 13. Плоскость с объектами, размещенными по сетке
Рис. 14. Плоскость с объектами, размещенными случайным образом
Настройка параметров
Параметры эффектов рисования можно настраивать предварительно либо уже после формирования штрихов. В первом случае это производится через окно настроек кисти, вызываемое при нажатии комбинации клавиш Ctrl+ B, а во втором — через редактор атрибутов или окно каналов.
Вернитесь к ранее сохраненной сцене с травой. Вновь возьмите кисть GrassClump и активируйте окно перспективы. Обратите внимание на вид указателя мыши: при работе в режиме эффектов рисования он напоминает карандаш, причем для удобства размер кисти отображается на указателе мыши в виде размера сопровождающего его круга. Менять данный размер можно либо прямо в окне проекции (для этого следует перемещать мышь влево/вправо при нажатой левой кнопке и клавише B, причем размер красного круга при этом будет уменьшаться/увеличиваться); либо корректируя параметр GlobalScale (Общий масштаб) в окне настроек кисти, в редакторе атрибутов (рис. 15) или в окне каналов. Увеличьте размер кисти и создайте еще один небольшой фрагмент травы, которая в итоге окажется значительно выше предыдущей (рис. 16). Помимо размера кисти на формирование объекта влияет и ее ширина BrushWidth, от которой зависит размер области, где будет распределяться некое фиксированное количество образцов (в данном случае — травинок), — чем меньше область, тем травинки будут расти гуще, и наоборот. Данный параметр находится в свитке BrushProfile (профили кисти) и тоже регулируется через окно настроек кисти или редактор атрибутов. Поэкспериментируйте с ним и сформируйте разные по густоте фрагменты травы (рис. 17). Что же касается количества образцов на единицу длины штриха, то оно задается параметром SampleDensity (Плотность образца) и изменять его можно только через редактор атрибутов или через окно каналов. Для тренировки выделите фрагмент негустой травы и повысьте его плотность, увеличив значение параметра SampleDensity, например, до 10 (рис. 18).
Рис. 15. Изменение параметра GlobalScale
Рис. 16. Появление второго фрагмента более высокой травы
Рис. 17. Добавление фрагментов травы, различающихся по густоте
Рис. 18. Увеличение плотности фрагмента травы
Помимо названных параметров можно регулировать еще огромное количество атрибутов, поэтому лучше делать это в редакторе атрибутов, так как там параметры разбиты по разделам и подразделам, а значит, в них проще ориентироваться. Наиболее важные параметры сосредоточены в разделе Tubes (Трубки), отвечающем за рост трубок (рис. 19). Данные параметры находятся в подразделах:
- Creation (Создание) — управляет процессом создания трубок и включает такие параметры, как TubesperStep (Трубок на один шаг), LengthMin/LengthMax (Минимальная/максимальная длина), TubeWidthl (Ширина трубки) и др.;
- Growth (Рост) — позволяет включать/отключать появление веток, листьев, бутонов и цветов, а также управлять особенностями их роста;
- Behavior (Поведение) — обеспечивает управление поведением штрихов под действием динамических сил (ветра, турбулентности и т.д.).
Рис. 19. Раздел параметров Tubes
Для экспериментов с настройкой параметров раздела Tubes создайте новую сцену, увеличьте ее масштаб, выберите в разделе кистей для рисования кисть TulipOpen и сделайте один короткий мазок кистью, что приведет к появлению одного цветка тюльпана (рис. 20). Активируйте редактор атрибутов, раскройте в разделе Tubes подраздел Growth и включите в нем флажок Branches (Ветви) — на каждом стебельке вырастет еще один цветонос с цветком. Увеличьте в разделе Creation значение параметра TubesperStep — число стеблей с цветами станет больше. Откройте в разделе Behavior раздел Forces (Силы) и увеличьте значение гравитационной силы (параметр Gravity) — цветки наклонятся к земле (рис. 21). Сохраните данную сцену.
Рис. 20. Исходный цветок
Рис. 21. Результаты преобразования цветка
Для ускорения доступа к конкретной кисти (если предполагается, что она потребуется для дальнейшей работы) настройки кисти несложно сохранить, добавив ее в библиотеку кистей Visor либо на полку Shelf. Для этого вначале (после настройки параметров кисти) необходимо воспользоваться командой GetSettingsfromSelectedStroke (Скопировать настройки выделенного штриха) из меню PaintEffects, а затем выполнить команду SaveBrushPreset (Сохранить предустановленные параметры кисти) из этого же меню и в открывшемся диалоговом окне ввести имя кисти (поле Label) и установить переключатель SavePreset (Сохранить предустановленные значения) в нужное положение. Например, при сохранении на полку для переключателя выбирается вариант To Shelf — после этого на открытой в данный момент вкладке Shelf появится новый ярлык (рис. 22). Когда он станет ненужным, его несложно будет удалить, перетащив при помощи средней кнопки мыши на значок мусорной корзины (находится в правой части полки).
Рис. 22. Появление ярлыка кисти на вкладке Shelf