Управление частицами с помощью  полей и целей  Maya

Существуют два  наиболее распространенных метода перемещения частиц —  поля  и цели. Поля  (field)  похожи   на  силы (гравитация,   воздух и   турбулентность),   которые влияют  на неподвижные частицы или  на частицы, находящиеся  в движении.   Если  необ­ ходимо переместить  частицу, поля обычно являются самыми  первыми  средствами.  Более того, к  частицам можно добавить  несколько  полей.  В  документации  Майя  содержится подробное описание  работы  каждого  поля.  Целью  (goal)  может  быть  любой  объект  на сцене, даже другие частицы.  Цели  подобны магнитам, которые  притягивают частицы. На поведение частиц может влиять больше одной цели.

Откройте  на  компакт-диске файл  goalsAndFields.ma. Будут  созданы  не- сколько слоев  представления,  каждый с одинаковой сеткой частиц. Частицы  на­

строены для визуализации  в  качестве сфер.  Сетку можно легко создать с помощью  на­ строек в  панели  параметров  инструмента Particle (Частица). Создание сетки  частиц с помощью инструмента Particle (Частица) является примером создания  частиц  без  ис­ пользования   эмиттера.

С  каждым  слоем  представления  связаны различные поля,  а  для  верхнего слоя  ис­ пользуется цель.  Запустите воспроизведение  анимации  и  сравните  поведение  частиц. В дальнейшем будет рассмотрен проект, в  котором создаются и  корректируются поля.

Использование множества полей с частицами  

Откройте с компакт-диска файл snowGnomel.mb. На экране появится малень- кий  трогательный гном, чья жизнь скоро  несколько  ухудшится.  Гном  является

единым полигональным  объектом.

1.    Создайте объемный эмиттер, выбрав  из  набора меню Dynamic s (Динамика)  пункты

Particles => Create Emitter • (Частицы => Создать эмиттер • ) .

2.    Назовите эмиттер snowstor m и  установите  для него тип Volum e (Объем). Устано­ вите значение  скорости равным 100 и щелкните на кнопке Create (Создать).

3.     На экране  появится  куб  или  сфера.  Это объемный эмиттер  (volume  emitter),  пред­ ставленный на рис. 19.8. Переместите эмиттер на 7 единиц  по оси  X и  на 11  единиц по оси  Y. Придайте ему размер 3x3x7. Убедитесь,  что для параметра Volum e  Shap e (Форма объема) в  разделе Volum e  Emitter Attributes (Атрибуты  объемного  эмиттера) установлено значение Cub e (Куб).

Объемный эмиттер может принимать форму куба, сферы, цилиндра,  конуса или  тора. Тип формы эмиттера можно установить  в  разделе Volume Emitter Attributes (Атрибуты  объемно­ го эмиттера) редактора атрибутов.  Естественно, эти  настройки  применимы только для объ­ емного эмиттера.

4.    Выделите форму частиц, которая была создана с эмиттером,  и  откройте редактор  ат­ рибутов. В  разделе  render  Attributes  (Атрибуты визуализации)   переключитесь   в Blobby  surface  (s/w)  (Каплевидная  форма)  и    щелкните на  кнопке  Current  render Туре (Текущий  тип визуализации).

5.    Запустите воспроизведение  нескольких кадров  анимации,  чтобы  на  экране  поя­ вилось  несколько  частиц. Частиц ы каплевидной  формы появятс я как  серые  кру-

ги.  Вероятно, они  в  этот момент огромны. Установите значение их  радиусов  рав­ ным     0.2.

Рис. 19.8. Объемный эмиттер, расположенный над гномом

6.     Перейдите в  начало анимации  и  запустите ее.  Частицы создаются случайно в  про­ странстве, ограниченном кубическим  эмиттером. Оттуда они  распространяются во всех направлениях.

7.     Выделите элемент particleShape l и выберите пункт меню Fields => Gravity (Поля => Гравитация). Выделите в панели каналов поле Gravity Field (Гравитационное поле) и установите  для  его  параметра  Magnitud e  (Величина)  значение 5,  для   параметра Attenuatio n (Затухание) — значение 0, а также убедитесь, что для параметра Us e Ма х Distance   (Использовать  максимальное  расстояние)    установлено  значение  Off (Отключено).

Параметр   Magnitude   (Величина) определяет   полную   силу  поля.   Параметр   Attenuation (Затухание) определяет величину,  на которую уменьшается сила при  увеличении  расстояния между частицей и  полем.

8.     При  запуске  анимации  частицы начнут  падать.  Скорость  их  падения можно  изме­ нить с помощью параметра Magnitud e (Величина)  поля Gravity (Гравитация).  Кор­ ректировка параметров  динамики  или  сохранения формы  частиц также повлияет  на скорость их падения, но поскольку это атрибуты  формы частиц, они  влияют на взаи­ модействие  частиц с любыми  другими  полями,  добавляемыми  на сцену. Иногда это бывает полезно.

Можно добавить  сколько  угодно  полей для  управления  поведением  частиц. В  сле­ дующем разделе добавляется поле воздуха, которое сдувает снег с фигуры  гнома.

1. Не выделяя ничего, создайте поле воздуха, выбрав пункт меню Fields => Air (Поля => Воздух). Если запустить  анимацию, можно заметить, что ничего не изменилось.  Что­ бы  присоединить  поле к  частицам, нужно  выделить  поле,  затем  выделить  элемент

particleShap e и выбрать пункты меню Fields => Affect Selecte d Object(s) (Поля => Воздействие  выделенного объекта(ов)). Это другой способ  соединить  поле с части­ цами, альтернативный  созданию  поля при  выделенных частицах.

2.    Чтобы открыть окно Dynamic relationship s (Динамические взаимосвязи), выберите  в меню Windo w (Окно)  пункты  relationshi p Editors’ => Dynami c relationship s (Редак­ торы взаимосвязей  =>  Динамические  взаимосвязи).  Это  полезный инструмент для просмотра разнообразных динамических  связей на  сцене,  а  также  для  создания и разрыва  этих связей. Левая часть окна похожа  на иерархическую структуру. Выбери­ те в левой   части элемент particlel. С помощью кнопки Selection Mode s (Режимы выделения) выберите поля  (Fields) .  Появятся поля  Gravity  (Гравитация)   и   Air  (Воздух). Если  выделить одно из  полей, то его подсветка исчезнет, что означает, что связь разорвана. Теперь убедитесь, что оба поля, Gravity (Гравитация) и Air (Воздух), связаны с элементом particleShapel .

3.     В окне иерархической структуры (Outliner ) выделите элемент airField l и  пере­ местите его на 12 единиц по оси X, а также на 8 единиц по оси Y.

4.     В панели каналов установите для поля Air значение параметра Magnitud e (Величина) равным пяти. Установите значение параметра Attenuatio n (Затухание) равным нулю, сбросьте флажок отключите параметр Us e Max Distance (Использовать  максималь­ ное расстояние),   введя значение 0 в  поле Use Max Distance (Использовать  макси­ мальное расстояние). Перейдите  вниз  и установите следующие  атрибуты направле­ ния: для оси X      1, для оси Y и Z — 0.

5.     Запустите воспроизведение   анимации.  Частицы должны  лететь  навстречу гному.

Они будут лететь прямо сквозь бедного парня.

6.     Корректируя атрибут Magnitud e  (Величина)  поля Air (Воздух),  можно  управлять воздействием этого поля на частицы. Для управления  направлением  поля необходи­ мо включить параметр Us e Max Distance (Использовать максимальное  расстояние) и  изменить положение  поля.

7.     При   выделенном поле  Air  (Воздух)  щелкните в   панели   инструментов   на   кнопке Sho w  Manipulator s  Tool (Показать инструменты  манипуляторов).  Теперь имеются интерактивные  элементы управления  для параметров  Magnitud e (Величина),  Мах Distance (Максимальное  расстояние) и Attenuatio n (Затухание).

8.    Пока инструмент Sho w Manipulator s (Показать манипуляторы)  активизирован для поля  Air  (Воздух),  щелкните на  синем переключателе   под  пиктограммой Field  (Поле).  Откроются дополнительные  интерактивные  элементы  управления  для  на­ правления,  скорости  и  площади  поля Air (Воздух).  Попробуйте изменять значения этих элементов  управления  и  проследите, как это влияет  на частицы. Затем устано­ вите  значение  параметра Magnitud e (Величина)  поля снова равным 5 и  отключите параметр     Use     Max     Distance     (Использовать    максимальное    расстояние). (Максимальное  расстояние -1 является аналогом отключения параметра Us e  Мах Distance (Использовать максимальное расстояние).)

9.    Теперь немного развлечемся с гномом. В иерархической структуре выделите элемент particleShape l и, удерживая нажатой клавишу <Ctrl> , выделите объект Gnomey. В меню Particles (Частицы)  выберите пункт Mak e Collide  (Создать взаимодействие). Запустите воспроизведение  анимации.

10.   Как можно заметить,  воспроизведение немного замедлилось,  поскольку Maya  долж­ на вычислять  все  взаимодействия.  Однако теперь частицы отскакивают  от  гнома — как будто гном отбрасывает шарики  пинг-понга.  Давайте сделаем их  немного липки­ ми. Выделите  элемент particleShape l и откройте редактор атрибутов. Перейдите на  вкладку geoConnector1 , в   которой  доступны  четыре   параметра:  Tessellatio n  Factor (Коэффициент  разбиения), resilienc e (Ударная  вязкость), Friction (Трение)  и Offset (Смещение).

Параметр Tessellatio n  Factor (Коэффициент  разбиения)  подобен инструменту  раз­ решения взаимодействий.  Чем выше его значение, тем больше точность  взаимодействия

с  геометрическими   фигурами. Увеличение   значения параметра  Tessellatio n   Factor   (Коэффициент   разбиения)  также  замедлит воспроизведение   анимации.   Пока  оставьте его значение равным 200. Параметр resilienc e (Ударная вязкость) задает эластичность при  столкновении,  т.е. чем выше его значение, тем выше отскок от  поверхности.  Пара­ метр Friction (Трение) задает степень скольжения частицы по  наклонной поверхности,

и  чем выше его значение, тем сильнее частицы  прилипают к поверхности. И наконец,  па­ раметр Offset (Смещение) указывает, как  далеко от поверхности  частица  сталкивается с ней. Этот параметр важен для тех частиц, которые имеют заметный  объем (например, капли). Дело в  том, что расчет взаимодействия  всех частиц  осуществляется так, как буд­ то частица — это простая точка в  пространстве.  Регулируя значение смещения (или даже устанавливая  ключевые кадры),  можно  добиться большего реализма, как  минимум  за­ претив им проникать в  поверхность.

1.    Установите значение параметра resilienc e (Ударная вязкость) равным 0 и запустите анимацию. Теперь частицы отскакивают не так сильно, а некоторые даже  прилипают к гному и соскальзывают с него.

2.    Установите для параметра Friction (Трение) значение 1. Теперь частицы  прилипают к гному. Уменьшите значение параметра Friction (Трение) до 0.5, и частицы начнут прилипать и  медленно сползать вниз по телу гнома.

Следующая проблема заключается в   том, что  частицы, которые не  попали  в  гнома, продолжают улетать в  бесконечность. Необходимо создать поверхность  земли, на кото­ рую будет падать снег.

1.    Создайте плоскость  NURBS  и  увеличьте  ее так, чтобы она охватила область  вокруг гнома и  место падения частиц. Установите количество  промежутков  между  изопара- метрическими линиями  16×16.

2.    Выделите элемент particleShape l и  плоскость NURBS, а затем выберите  пункт меню Particles => Mak e Collide (Частицы => Создать взаимодействие).  Найдите в  ре­ дакторе    атрибутов    узел    geoConnector 2    и      установите    значение   параметра resilienc e (Ударная вязкость) равным 0, параметра Friction (Трение) — равным 1 и параметра Offset (Смещение) — около 0.1. Теперь при  воспроизведении  анимации частицы прилипают к земле так же, как и  к гному.

3.    У частиц каплевидной  формы имеются интересные особенности. Первая из  них  за­ ключается в  возможности раскрашивания частиц с помощью тонирования.  Выделите частицу и откройте гипершейдер.  Найдите тонер radioactiveGoo, щелкните пра­ вой кнопкой мыши  на его экземпляре и  в  появившемся  контекстном меню выберите

пункт Assig n material То Selection (Применить материал  к выделенному).  Запустите воспроизведение анимации  и,  когда в  поле зрения не останется никаких  частиц, вы­ полните  визуализацию кадра с помощью программной визуализации  Майя.

4.    Фигура атакована ярко-зелеными  шарами. Чтобы сделать его более  сентименталь­ ным,  увеличьте    в  редакторе  атрибутов  значения атрибутов   визуализации  radiu s (Радиус) и   Threshol d  (Порог)  элемента  particleShapel .  Параметр  Threshol d  (Порог) определяет, как сильно  поверхности  каплевидных форм будут притягивать­ ся друг к  другу и  преобразовывать  ее в  шарики.   Чтобы увидеть,  как  это выглядит, осуществите  визуализацию  сцены.  Эти  особенности  не показаны в  виде  со стороны камеры.  Попробуйте установить  значение радиуса равным 0.6 и значение порога — равным    0.5.

Теперь можно окончательно визуализировать бедного гнома и  в  ужасе наблюдать,  как он покрывается радиоактивным  липким  слоем  (рис. 19.9).  Но прежде чем  осуществить визуализацию, необходимо  создать кэш для модели  частиц.

Рис. 19.9. Гном, покрывающийся радиоактивным липким слоем

Кэш частиц  

Кэш частиц (particle cache) является последовательностью  записанных на диск  фай­ лов, которые содержат все данные о положении  частиц при  моделировании.  Как  можно догадаться, эта последовательность  занимает на диске немало места, если  на  сцене при-

сутствует большое  количество частиц. Дважды проверьте доступное  место  на  диске, прежде чем  создавать дисковый  кэш  частиц. Кэш частиц позволяет  перемещать сцену Maya во  времени, так что больше нет необходимости  воспроизводить ее каждый раз сна­ чала.  Кэш также  гарантирует, что при  визуализации  сцены частицы каждый  раз  будут двигаться одинаково.  Это становится  особенно важно при  использовании  случайных чи­ сел  в   выражениях,  особенно  если  визуализацию  предполагается  осуществлять на  не­ скольких машинах. В  противном  случае поведение  частиц при  окончательной визуали­ зации  может  оказаться непредсказуемым.

Явное задание начального значения для случайной продолжительности  существования  час­ тиц, например see d    ( p a r t i c l e l D )  ,-,  обеспечивает  воспроизводимость  результата визуа­ лизации.  Поэтому, если  действительно  нужен случайный, но  воспроизводимый  результат, воспользуйтесь  этим методом.

Чтобы создать дисковый кэш для сцены с гномом, выполните следующие действия.

1.       Выберите в наборе меню Dynamic s (Динамика) пункты Solvers => Creat e Particle Disk Cach e • (Решатели => Создать дисковый кэш частиц • ) .

2.       В  окне  параметров  можно  указать  путь  к  папке,  в   которой  будет  создан  кэш.  По умолчанию задан путь к каталогу текущей папки.

3.       По умолчанию кэш  будет создан на основании  кадров, установленных на  временной шкале. В параметрах визуализации  можно задать начальный и  конечный кадры. Уста­ новите диапазон  временной  шкалы от 0 до 100, а этот флажок оставьте сброшенным.

4.       Выделите форму p a r t i c l e l в  окне иерархической структуры и  щелкните на  кнопке Appl y (Применить) для дискового кэша частиц. Индикатор текущего кадра будет пе­ ремещаться  по  временной шкале,  однако  в  виде   камеры  ничего не  изменится  до окончания процесса. Это нормально. Maya просто записывает файлы на диск.

5.       Как только этот процесс завершится,  можно будет перемещаться вперед и  назад по временной шкале и  наблюдать анимацию.  При  необходимости  изменить  модель дис­ ковый кэш частиц придется удалить. Иначе ничего не изменится.  Для удаления вы­ берите   в меню Solvers (Решатели) пункты Memor y Cachin g => Delete (Кэширование памяти  => Удалить).  Обратите  внимание, таким образом  можно как включать, так и отключать кэширование.

6.       Читатель может повторить  весь этот процесс с использованием  программной  визуа­ лизации,  а  по  завершении  сравнить  результат.  Программная визуализация  в  Maya описана в главе 13, "Основы визуализации".

Цели

Цели  (goal) являются одним из  самых полезных инструментов  для  управ­ ления моделированием  частиц. Цели  притягивают  частицы на  основе за­

данных параметров. Целью может быть любой объект,  включая другую форму  частиц. Цели  легко  анимировать  и   даже  включать в   выражения.  Давайте проведем  несколько экспериментов с целями.

1.    Откройте с компакт-диска сцену goalsi.mb . На ней есть эмиттер в начале и локатор на краю сетки. Эмиттер задан для всех направлений  (omnidirectional)

со скоростью  200  частиц в  секунду.  Запустите воспроизведение  анимации  и   пона­ блюдайте за поведением частиц.

2.    Частицы легко распространяются по сцене во  всех направлениях  от центра эмиттера.

Выделите элемент particlel , а затем выделите локатор. В меню Particles (Частицы) выберите пункт   Goal •   (Цель • ) .   Установите значение параметра   Goal   Weigh t (Весовой коэффициент цели) равным 0.5. Запустите воспроизведение анимации.

3.    Частицы летят навстречу локатору.  При  значении  коэффициента  локатора  0. 5  они обстреливают  локатор.  Откройте  редактор  атрибутов   для  элемента  p a r t i c l e l  и найдите раздел Goal Weight s An d Objects (Объекты и  весовые коэффициенты  цели). Запустите анимацию  и   попробуйте двигать  ползунок locator1  вверх   и  вниз  при  ее воспроизведении.   При  этом  будет  корректироваться  коэффициент  цели, или   сила притяжения.  При  значении  коэффициента равном  единице  частицы немедленно по­ мещаются в позицию   локатора, а при  нулевом  значении  цель не оказывает никакого воздействия.

Д Л Я системы частиц можно создать любое количество целей. Каждая цель привлекает час­ тицы в  соответствии  с ее весовым коэффициентом  цели, заставляя их  "балансировать"  ме­ жду разными  целями.

4.     Корректировка параметра Goal Smoothnes s (Плавность цели) также влияет на пе­ ремещение частиц навстречу цели. Попробуйте также  откорректировать  этот  пара­ метр при  воспроизведении  анимации.

5.     Установите значение  параметра Goal Weigh t (Весовой коэффициент цели)  равным 0.5 , значение параметра Goal Smoothnes s (Плавность  цели) — равным  3, а затем уменьшите для частиц значение атрибута Conserv e (Сохранить) до  0.7 .  Частицы будут замедляться по мере приближения к цели, ведь они  будут  терять энергию при движении.  Эффект обстрела при  этом исчезнет.

Для управления  движением частиц цели  и  поля можно объединить.  В этом  разделе поле Drag (Трение) применяется к частице, на которую уже воздействует цель.

1.   Верните параметру Conserv e (Сохранить)  значение 1.0 и примените к частице поле Drag (Трение), выделив  элемент p a r t i c l e l и  выбрав  пункт меню Fields => Drag (Поля => Трение). Переместите пиктограмму  поля Drag (Трение) так, чтобы оно ме­ шало частицам достичь формы локатора,  а затем откорректируйте  значение его па­ раметра Magnitud e (Величина)  до 100. Частицы будут  замедляться при  перемеще­ нии сквозь поле Drag (Трение). Поля и  цели  могут  работать вместе при  моделирова­ нии  частиц.

2.   Удалите поле Dra g (Трение) и создайте другой локатор. Переместите этот локатор на 12 единиц по оси X.

3.   Выделите элемент  particlel ,  затем  элемент  locator 2   и   выберите пункт   меню Particles => Goa l (Частицы => Цель). Убедитесь, что значение параметра  Goal Weigh t (Весовой коэффициент  цели) равно 0 . 5, как  и  для элемента    locator1.     Запустите воспроизведение анимации.

4.   Если  посмотреть на вид  сверху, то можно увидеть,  что частицы выстроились  в  ли­ нию, равноудаленную от двух целей.  Каждая цель  прикладывает  одинаковую  силу притяжения  к частицам, поэтому они удерживаются между целями.

5.   Откройте в  редакторе атрибутов  раздел Goal Weight s An d Objects (Объекты и  весо­ вые коэффициенты цели). В нем можно увидеть,  что набор атрибутов  и  параметров идентичен примененным  для цели locator1. При воспроизведении анимации попро­ буйте откорректировать ползунок для целей locator1 и  locator2 . Частицы переме­ щаются ближе к той цели, которая имеет большее значение. К форме частиц можно до­ бавить сколько угодно целей и  использовать их для управления моделированием.

6.   Установите флажок Goal Active (Активная цель) для цели  locator2 . Эта цель пере­ станет быть активной, чтобы можно было работать с целью locator1.

7.   В редакторе атрибутов  перейдите к разделу Lifespa n Attributes (Атрибуты  продол­ жительности    существования) и     выберите значение  lifespanP P   Onl y   (Только lifespanPP). Как и  в  предыдущем упражнении,  будет добавлен  атрибут  Lifespan Per Particle (Продолжительность существования отдельных частиц).

8.   В  редакторе  атрибутов   перейдите вниз   к  разделу  Per  Particle  (Array) Attributes (Атрибуты  массива частиц), щелкните правой кнопкой мыши на поле lifespanP P и  в появившемся контекстном меню выберите пункт Creation Expressio n (Создать вы­ ражение).

9.   В главном поле редактора выражений  введите следующую строку:

particleShapel.lifespanPP=rand(2, 3) ;

При  этом для каждой частицы будет установлена продолжительность  существования в  случайном диапазоне от двух до трех секунд.

10. В разделе Per Particle (Array) Attributes (Атрибуты  массива частиц)  редактора  атри­ бутов  щелкните правой кнопкой мыши на атрибуте goalPP, находящемся над атри­ бутом  lifespanPP, и  в  появившемся  контекстном меню выберите  пункт Create ram p (Создать градиент). Когда появится надпись <-arrayMapperl.outValuePP , снова щелкните правой кнопкой мыши  и  в  появившемся  контекстном меню выбери­

те пункт Edit ram p (Редактировать  градиент).

11. . Откорректируйте  градиент так, чтобы он был черным от низа до середины,  убедитесь, что верх градиента белый, и  установите для параметра Interpolation  (Интерполяция) значение Smooth (Сгладить). Запустите воспроизведение анимации.

12. Градиент корректирует коэффициент  цели  для  частиц на  протяжении  существова­ ния каждой частицы. При рождении частица имеет коэффициент цели, равный нулю. Со  временем значение перемещается  вверх   по  градиенту. Вверху  оно  становится равным  единице, и частица начинает резко перемещаться к цели.  Можно неплохо по­ веселиться,  корректируя значения в  градиенте и  соответственно  контролируя пове­ дение частиц при  приближении  к цели.

13. Остановите  воспроизведение анимации  и  вернитесь к окну Attribute Editor (Редактор атрибутов) частицы.  Снова щелкните  правой кнопкой мыши на значении goalP P и  в появившемся  контекстном меню выберите  пункт Edit Array Mappe r  (Редактировать массив  текстуры).  Установите  для  параметра Min  Valu e  (Минимальная  величина) значение 0.01, а для параметра Max Valu e  (Максимальная  величина) — значение

0.5 . При  этом изменятся диапазоны градиента, так что теперь черный равен 0. 01

и белый —0.5 . Это еще один весьма удобный способ точной регулировки  процесса моделирования.

14. Щелкните правой кнопкой мыши на атрибуте goalP P и  в  появившемся контекстном меню выберите пункт Break Connectio n (Разорвать связь), чтобы избавиться от гра­ диента, который управляет атрибутом goalPP.

15. Вернитесь  к  разделу Goa l  Weight s  An d  Object s (Объект ы и   весовые  коэффици ­ енты цели ) редактора атрибутов  и  щелкните на кнопке  Creat e  goalWeightOP P (Создать goalWeightOPP) . Пр и   этом к  атрибутам  массива  частиц добавится другой атрибут.

Атрибуты цели отдельных частиц  

Атрибуты цели  отдельных частиц учитывают  каждую цель, воздействующую  на  час­ тицу, обеспечивая дополнительный  уровень управления  моделированием.  К  каждой це­ ли можно применять градиенты, или работать с каждой целью в  выражениях, или же де­ лать и то и другое.

Создаваемый  атрибут называется  goalWeightOPP. В Майя атрибуты коэффициента цели отдельных частиц нумеруются в  порядке, в  котором цели  добавляются к объекту,  начиная с нуля. Это может немного сбивать с толку, но, по существу, коэффициент  цели  для элемен­ та locator1 упоминается в  массиве   частиц и   в   редакторе  выражений  как  нулевой. Если добавить  второй атрибут коэффициента  цели  отдельных  частиц, он  будет обозначен  как goalWeightlPP.

Испытаем атрибут цели  в  следующем упражнении.

1.       В разделе Per Particle Array Attribute (Атрибуты массива частиц) щелкните правой кноп­ кой мыши на атрибуте goalWeightOPP и в  появившемся контекстном меню выберите пункт Creation Expression (Создать выражение). Под выражением  lifespanPP в  поле Expression       (Выражение)      введите          строку        particleShapel.goalWeightOPP=.  5;.

Щелкните на кнопке Edit (Правка). При  этом значение коэффициента цели  для  эле­ мента locator1 станет равным 0 . 5, во многом аналогично предыдущему.

2.        В  окне  редактора выражений   переключите режим на  runtim e  Before   Dynamic s   

(Прогон перед динамикой) и введите  следующую строку:

particleShapel.goalWeightOPP=0.5+(0.5*sin(time));

В этом выражении  вычисляется  синус значения  времени, указанного в  секундах.  Это значение   суммируется  с    коэффициентом  цели    отдельных   частиц  для    элемента locator1. Функция синуса от времени  выдает значение, которое при  воспроизведении анимации плавно изменяется от -1 до 1. Это синусоидальная волна.

Однако коэффициент  цели  не должен быть отрицательным, поэтому значение в  вы­ ражении делится пополам за счет умножения на 0 .5, а затем к получившейся величине прибавляется 0.5. Таким образом,  синусоидальная  волна была  сжата   по   вертикали вдвое  и поднята вверх  так, чтобы значение выражения изменялось  от  нуля до единицы. При  воспроизведении  анимации  притяжение частиц к целям будет  меняться от сильного до слабого и  наоборот. Если  установить значение  параметра Conserv e (Сохранить) час­ тицы равным 0. 7, это станет немного более очевидным.

Теперь  рассмотрим, как  две  цели  могут  взаимодействовать  друг с  другом,  изменяя поведение частицы.

1.    Сделайте   вторую   цель   активной,  щелкнув   на   флажке   под   значением   элемента locator2 . Установите значение равным 0.5. На виде сверху видно, что  теперь час­ тицы перемещаются между двумя целями  вполне натурально.

2.    Вернитесь к выражению времени  выполнения для атрибута goalWeightОР Р и  отре­ дактируйте его. Замените si n на nois e и  запустите воспроизведение  анимации.  Те­ перь частицы между двумя целями  перемещаются случайно.

Можно продолжить совершенствовать  эту анимацию,  добавляя атрибуты  отдель­ ных частиц для цели  locator2 .  Попробуйте смешать градиенты и  выражения  меж­ ду  двумя целями. Комбинируя   все  методы  в   рассмотренном   примере, необходимо ознакомиться с рядом  способов  управлени я   моделированием   частиц. Конечно,  эта тема еще не окончена…

Динамика мягких тел

Каждому  аниматору,  рано  или  поздно,  необходимо  создать  небольшой  эффект  тря­ ски. Динамика мягких тел является отличным способом получить в  анимации  некоторые эффекты  тряски,  и  она  довольно  проста  в  применении.   При  преобразовании  объекта  в мягкое  тело все его вершины или  контрольные  вершины (CV ) становятся частицами. За­ тем на эти частицы могут воздействовать поля, цели  и  выражения.  Динамика мягкого те­ ла может применяться  для создания вторичного  трясущего движения   и простых эффек­ тов  одежды  и  жидкостей. Рассмотрим эти  возможности  на паре упражнений.

1.    Откройте  на компакт-диске  файл  jеllyCube 1 .mb .

2.    В этом файле находится довольно плотный полигональный  куб  и  ухабистая плоскость.  Куб и  плоскость  деформированы с одинаковой  решеткой.  Анима­ ция куба заключается в  скольжении  по ухабистой  плоскости. Если  решетка видна на экране, скройте ее, сняв отметки Deformer s (Деформаторы) в меню Sho w  (Показать)   панели   представления.  При   этом  анимацию куба   будет легче  рассмотреть.

3.    Выделите зеленый  объект   pCube 1  и   в   меню  Soft/rigi d  Bodie s  (Мягкие / Твердые тела) из набора меню Dynamic s (Динамика) выберите пункт Create Soft  Body  •  (Создать  мягкое тело  • ) .

Преобразовать объект  в  мягкое  тело можно тремя способами.

•     Make Soft (Сделать мягким). Преобразует все вершины в частицы.

•     Duplicate, Mak e Cop y Soft (Дублировать,  сделать копию мягкой). Позволяет  создать второй экземпляр,  в   котором  все   вершины или   контрольные  вершины   являются мягкими, но исходный экземпляр  остается  прежним. Это  полезно,  поскольку  можно сделать  вершины исходного объекта  целями  для частиц мягкого  объекта.

•     Duplicate, Mak e Original Soft (Дублировать,  сделать оригинал  мягким).  Напоминает метод Duplicate, Mak e Cop y Soft (Дублировать, сделать копию  мягкой), но объектом целей может быть сделан второй объект.  Это хорошо  работает при  преобразовании решетки, которая деформирует объект, в  мягкое тело.

Давайте посмотрим, как  это  работает,  преобразовав  анимированный   куб  в   объект мягкого тела.

1.        Перейдите в   начало анимации,  а затем выберите  метод  преобразования  Duplicate, Мак е Cop y Soft (Дублировать,  сделать копию мягкой).

2.        Убедитесь,  что среди  прочих параметров  установлены  Hide Non-Soft Object  (Скрыть не мягкие  объекты) и  Mak e  Non-Soft A Goal (Сделать не мягкие  объекты целями). Сбросьте параметр Duplicate Input Grap h (Дублировать  входящую кривую).

3.        Установите   значение   коэффициента   равным    0. 5   и   щелкните   на   кнопке  Appl y  

(Применить).

4.        Запустите воспроизведение  анимации.

Вещи  определенно выглядят вязкими.  Новый куб  имеет желеобразную  поверхность. По  существу, каждая  вершина  не  мягкого,  скрытого  объекта  является целью,  которая влияет на каждую из  частиц, составляющих мягкий,  видимый объект.

1.    В иерархической  структуре теперь можно обнаружить новый объект под  названием copyOf    pCubel .  Раскройте  этот  мягкий объект,  чтобы  увидеть  частицы, состав­ ляющие его вершины.

2.    Убедитесь, что в  разделе Display (Представление)  иерархической структуры  выбран пункт Shape s (Формы) .  Найдите узел формы для исходного  объекта pCubel .  Его название должно быть голубым, это означает, что объект скрыт. Выделите его и в  меню Display  (Представление) панели    инструментов    выберите пункт   Sho w   Selection (Показать выделение). Перейдите в начало анимации и запустите ее воспроизведение.

3.    Теперь  на экране  можно увидеть  как  исходный объект,  так  и   копию мягкого  тела.

Обратите внимание,  как  они  взаимодействуют.  Выделите узел  формы  pCube l   и  в меню Display (Представление)  панели  инструментов  выберите  пункты Hide => Hide Selection (Скрыть => Скрыть выделение).

Поведение мягкого тела отличается от поведения частиц в упражнении с целями,  рас­ смотренном в  предыдущем разделе, так что известно,  что управлять  движением мягкого тела  можно  несколькими   способами.  Можно  уменьшить   сохранение формы  частиц, можно откорректировать  весовые коэффициенты цели  или  же добавить  поля. Наверное, не стоит возиться  с  продолжительностью  существования  частиц, поскольку  это  может привести  к несколько странным  результатам. Мягкие тела также предоставляют альтер­ нативу  для  управления  весовыми  коэффициентами  цели  на  основе отдельных  частиц. Можно  интерактивно  наносить весовые коэффициенты  цели  на куб с помощью инстру­ мента Maya Artisan. Работу с мягкими телами лучше начать с этого инструмента.

Ниже описано,  как наносить  весовые коэффициенты  цели  на объект мягкого тела.

1.    Выделите ухабистую плоскость под кубом и  сделайте ее невидимой.  Перейдите в  на­ чало анимации  и  увеличьте масштаб желеобразного куба.

2.    Сначала следует установить для всех частиц значения весовых коэффициентов  цели равными  1.0. В иерархической структуре выделите форму частиц и убедитесь, что в панели  каналов  или  редакторе атрибутов  для коэффициента  цели  установлено зна­ чение 1. 0. Теперь все готово для начала  редактирования.  Если  запустить  воспроиз­ ведение анимации, то трясущееся движение должно продолжаться.

3.    Выделите геометрическую форму  куба  мягкого  тела  и   в   меню  Soft/rigi d  Bodie s  (Мягкие/Твердые  тела)  выберите  пункт  Paint  Soft  Body Weight s  Tool •  (Инстру­ мент нанесения  весовых коэффициентов  на мягкое тело • ) .

4.    Это  мало  чем  отличается от  окрашивания  костей  или  нанесения деформационных весовых коэффициентов.  Для нанесения всех весовых  коэффициентов  используется кисть. Куб должен стать белым, это указывает на то, что на него нанесены  весовые коэффициенты цели.  Установите   удобный  размер  кисти,   желательно   достаточно большой. Не нужно стремиться к большой детализации.

5.    Установите для   параметра   Paint   Operatio n   (Окрашивание)    значение  replac e (Заменить), а для параметра Valu e (Значение) — значение 0.5 . Начните  окрашива­ ние  верхней части  куба.  Все  коэффициенты  в   нижней части  куба  нужно  оставить равными  1. о, чтобы куб по-прежнему правильно  взаимодействовал  с  поверхностью  (рис. 19.10).

Рис. 19.10. Использование инструмента Maya Artisan для нанесения  весовых коэффициентов цели на мягкое тело

6.    Когда верхние три  четверти  куба будут окрашены в  серый цвет, установите  для па­ раметра Paint  Operatio n  (Окрашивание)  значение Smoot h  (Сгладить) и  щелкните несколько раз на кнопке Flood (Заполнить).  При этом пятнистая окраска превратит­ ся в  прекрасный градиент.

7.    Отложите инструмент Artisan и  запустите  воспроизведение анимации.

8.    Верхняя часть, в отличие   от нижней,  выглядит хорошо. Выделите куб и  снова выбе­ рите  инструмент   Paint  Soft  Body Weight s  Too l  •  (Инструмент нанесения  весовых коэффициентов на мягкое тело • ) . В разделе Paint Operatio n  (Окрашивание)  выбе­ рите пункт Ad d (Добавить) и  установите значение  параметра Valu e (Значение)  рав­ ным 0.25. Щелкните на кнопке Flood (Заполнить).  Значение серого увеличится до

0.75. Снова запустите воспроизведение анимации.

Можно  продолжить редактировать весовые коэффициенты  мягкого  тела,  пока  ре­ зультат  не  станет удовлетворительным.   Попробуйте наносить различные величины  на разные части, сглаживать  их  и  добавлять, пока не получится желаемый вид.  Иногда не­ плохо выглядят три  сглаженных уровня при  значениях 1. О для верхней части, 0.7 5 — для средней и 0 . 5 — для нижней.

Куб выглядит вязким, но не желеобразным. Желе обладает эффектом волны,  которая проходит через объект, если тронуть его. Чтобы добиться этого эффекта, к  мягкому телу необходимо  добавить пружины.

Пружины мягкого  тела  (soft-body  spring)  отличаются от  упругих ограничителей   твер­ дого тела (rigid-body spring constraint). Для обеспечения необходимого эффекта  пружи­ ны мягкого тела могут быть добавлены между каждой вершиной частицы  мягкого тела.

1.   Выделите куб и  выберите   в меню Soft/rigi d  Bodies (Мягкие/Твердые тела)  пункт

Create Springs •  (Создать пружины  • ) .

2.   В появившемся окне параметров установите для параметра Creatio n Metho d (Метод создания)  значение Wirefram e  (Каркас), для параметра Wir e  Wal k  Length  (Длина шага сетки) — значение 2, а также отключите параметры Us e Per-Sprin g Stiffness (Использовать жесткость отдельных пружин), Use Per-Spring Dampin g (Исполь­ зовать  сопротивление    отдельных  пружин) и     Us e   Per-Sprin g   restLengt h   (Ис­ пользовать длину покоя  отдельных  пружин). Установите  для  параметра  Stiffness (Жесткость) значение 100, а для параметра Dampin g (Сопротивление) — значение 0. Оставьте значение параметра res t Length (Длина покоя) равным 0, а значения пара­ метров End1 и End2 Weight s (Первый/Второй весовые коэффициенты) — равными 1.

3.   Щелкните на  кнопке  Create  (Создать),  и   Майя  обновит  представление   через  не­ сколько секунд.

4.   После создания  пружин на экране будут видны  линии между каждой частицей. Ото­ бражение пружин в  виде  камеры  может замедлить воспроизведение.  Для сокрытия пружин можно сбросить параметр Dynamic s (Динамика)  в  меню Sho w  (Показать) панели  представления или  скрыть объект пружины в  окне иерархической структуры.

5.   Запустите  воспроизведение анимации и  посмотрите на результат.

При  использовании  пружин мягкого тела объект мягкого тела может вести  себя совершен­ но необычно и  даже взрываться.  Не нужно паниковать.  Это происходит, если  значение па­ раметра жесткости  пружин установлено большим. В этом случае необходимо  откорректи­ ровать  дискретизацию   (oversampling)   и    скорость   воспроизведения.   Для   этого   перейдите к предпочтениям временной шкалы  и  установите для  параметра  Playback  Speed (Скорость воспроизведения)  значение Play Every Frame  (Воспроизводить  каждый  кадр),  а для  пара­ метра Playback By Value (Воспроизведение  по значению) —  значение 0.5 . Затем в  наборе меню Dynamics (Динамика)  выберите  пункты Solvers =>  Edit  Oversampling Or Cache Settings (Решатели  => Редактировать параметры дискретизации  или  кэша). В открывшемся диалого­ вом окне установите значение  параметра Oversamples  (Дискретизация)  равным 2. Анимация будет воспроизводиться медленнее, но взрывы мягких тел должны прекратиться.

Динамика  мягких тел  позволяет добавить к  анимации  персонажа  интересные эффекты.   Откройте   с   компакт-диска  файл   softBodyCheeks.mb .   Запустите воспроизведение анимации  и  понаблюдайте за движением челюсти. Ее движение немно­ го  преувеличено,  но главное —  увидеть,  как  это может быть полезно.  Постановка этой анимации  аналогична постановке анимации  желеобразного куба. Чтобы посмотреть, как

75 8                                                                                                                                                                       Глава 19

были  нанесены  значения цели, можно  выделить голову на сцене  и  воспользоваться инст­ рументом  Paint  Soft  Bod y  Weight s (Нанесение весовых  коэффициентов  на мягкое  тело) (рис. 19.11).

Рис. 19.14. Создание экземпляров частиц с применением тора

Источник: Кундерт-Гиббс, Джон,  Ларкинс, Майк,  Деракшани, Дариус, Кунзендорф, Эрик,  и др., Освоение Maya  8.5.:  Пер.  с англ.  – М.:  ООО  «И.Д.  Вильямс», 2007.  – 928  с.:  ил.

По теме:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий