3D Studio MAX: первые шаги. Урок 20. Работа с модулем Particle Flow

Светлана Шляхтина

Теоретические аспекты

Создание и настройка системы частиц

Воздействие на частицы физических сил и деформаций отражения

Настройка отображения частиц при визуализации

Примеры

Горящий костер

Праздничный фейерверк

Разбивающаяся ваза

 

Ранее мы уже начали знакомиться с системами частиц и на конкретных примерах рассмотрели такие системы частиц, как Spray, Snow, PArray и т.д. В этом уроке мы продолжим знакомство с нюансами внедрения частиц в сцены, но остановимся на гораздо более сложной системе частиц — Particle Flow, возможности которой намного шире. Если все рассмотренные нами ранее системы частиц были предназначены лишь для формирования какой-то отдельной группы эффектов (например, снега, дождя и т.п.), то системы частиц Particle Flow позволяют генерировать практически любые эффекты, связанные с частицами: струи дождя, брызги воды, хлопья снега, искры огня, взрывы и т.д.

Теоретические аспекты

Система частиц ParticleFlow (Поток частиц) базируется на совершенно ином принципе управления частицами, нежели прочие системы, — поведение частиц определяется не их свойствами, а происходящими с ними событиями, в зависимости от которых частицы разлетаются и сталкиваются, разбиваются на отдельные фрагменты, меняют свой внешний вид и т.д. Число таких событий может быть очень большим, а смена одного события другим регулируется условиями (или критериями). Условно можно считать, что каждое событие на входе получает состояние частицы как набор некоторых ее свойств, выполняет преобразование над свойствами посредством операторов и проверяет новое состояние частицы при помощи критериев — в результате такой проверки частицы переходят к другому событию либо остаются в том же событии для совершения нового цикла преобразований. Такой подход позволяет осуществлять с частицами сложные анимации, которые создаются в основном путем манипуляций с событиями и критериями, а не через указание ключевых кадров.

За создание системы частиц типа ParticleFlow отвечает категория ParticleSystems (Системы частиц) панели Create (Создать), открывающая доступ ко всем типам систем частиц, среди которых имеется и нужный нам тип PFSource (Источник Particle Flow). Технология создания этого типа частиц на первый взгляд напоминает создание других типов систем частиц, поскольку вначале формируется эмиттер (рис. 1), а затем корректируются параметры системы частиц. Однако последняя операция по большей части производится не на панели Modify (там регулируются лишь некоторые параметры эмиттера), а в дополнительном окне ParticleView (Представление частиц) — (рис. 2), открываемом при щелчке на одноименной кнопке панели Modify. Данное окно можно открыть и иначе — нажав на клавишу 6.

 

Рис. 1. Частицы типа PFSource и генерирующий их эмиттер

Рис. 1. Частицы типа PFSource и генерирующий их эмиттер

 

Рис. 2. Окно ParticleView

Рис. 2. Окно ParticleView

 

В окне ParticleView представлена описывающая системы частиц диаграмма событий, состоящая из одного или более потоков частиц — последнее, естественно, возможно лишь в случае, когда в сцене используется несколько излучателей частиц (исключение, когда поток разбивается на несколько подпотоков). Каждое событие (Event) состоит из группы операторов (Operator) и критериев (Test), заключенных внутри отдельного подокна. Операторы определяют особенности поведения частиц и могут влиять на форму и размер частиц, скорость и направление их движения, особенности вращения, используемый для текстурирования частиц материал и т.д. Критерии служат связующим звеном между двумя отдельными событиями и устанавливают условия (связанные с определенным состоянием частиц), при которых одно из событий сменяется другим. Например, внедрение в событие критерия AgeTest приведет к тому, что по достижении частицами некоторого возраста будет выполняться какое-то событие. Визуально в окне ParticleView операторы отображаются посредством иконок синего и зеленого цвета, а критерии имеют иконки желтого цвета. События связаны между собой стрелками, направление которых отражает направление протекания событий.

Весь перечень доступных операторов и критериев располагается в нижней части окна ParticleView. Для добавления произвольного действия (оператора или критерия) в событие достаточно перетащить иконку данного действия на рабочую область диаграммы — в свободную от событий область диаграммы или в конкретное событие. В первом случае перемещение действия приведет к созданию нового события, во втором перемещаемое действие будет добавлено в уже существующее событие. Параметры операторов и критериев регулируются — для этого достаточно выделить нужное действие и изменить некоторые его атрибуты, что производится в правой верхней части окна ParticleView. Для того чтобы через критерий связать отдельные события между собой, требуется определить направление протекания событий, для чего необходимо захватить курсором выступ напротив критерия в первом событии (вид курсора при этом изменится) и перетащить его при нажатой кнопке мыши на левый верхний угол второго события. В итоге события окажутся связанными, на что будет указывать соединяющая их стрелка. Любое из событий может быть активным или неактивным, что видно по цвету иконки в виде лампочки, расположенной в правом верхнем углу события: у активных событий лампочка белая, у неактивных — черная. Неактивные события не влияют на поток частиц. Изменение статуса активности событий производится щелчком по иконке-лампочке.

К наиболее часто используемым операторам можно отнести следующие:

  • PositionIcon (Положение эмиттера) — определяет область испускания частиц;
  • PositionObject (Положение объекта) — позволяет расположить частицы по форме выбранного объекта;
  • Speed (Скорость) — задает скорость движения частиц;
  • Rotation (Вращение) — определяет особенности вращения частиц относительно центра сцены;
  • Spin (Кружение) — позволяет учитывать при вращении угловую скорость самих частиц; чаще всего используется в совокупности с оператором Rotation и устанавливается после него;
  • Display (Отображение) — устанавливает вариант отображения части в окнах проекций;
  • Shape (Форма) — задает форму частиц при визуализации;
  • KeepApart (Соблюдение дистанции) — изменяет направление движения частиц, удерживая их на заданном расстоянии друг то друга;
  • Force (Сила) — задает силовые воздействия на системы частиц, изменяя их динамику, и позволяет имитировать влияние на частицы природных явлений (гравитация, ветер и др.) или искусственно созданных силовых эффектов (взрыв, направленное давление и др.);
  • Material Static (Статический материал) — назначает материал для отображения частиц при визуализации, который не меняется при смене событий и одинаков для всех частиц;
  • MaterialDynamic (Динамический материал) — устанавливает материал для отображения частиц при визуализации, который меняется при смене событий и чаще всего базируется на применении таких текстурных карт, как ParticleAge;
  • Material Frequency (Частотный материал) — назначает материал для отображения частиц при визуализации, который у каждой из подгрупп частиц внутри системы будет различным (подгруппы формируются автоматически на основе указанных процентных соотношений);

В числе наиболее часто применяемых критериев можно назвать следующие:

  • AgeTest — контролирует возраст частиц и при достижении некоторого заданного значения передает управление какому-то событию;
  • Collision (Столкновение) — фиксирует столкновения частиц с дефлектором;
  • CollisionSpawn (Столкновение с размножением) — фиксирует столкновения частиц с дефлектором и при каждом столкновении генерирует поток дополнительных частиц, на которые как бы разлетаются столкнувшиеся с препятствием частицы;
  • FindTarget (Поиск цели) — направляет перемещение частиц в сторону цели и при ее достижении передает управление какому-то событию (это своего рода притягивание частиц мишенью) ;
  • Spawn (Размножение) — генерирует новые частицы;
  • Split Amount (Раскол на части) — разбивает поток частицы на несколько потоков и позволяет передавать их разным событиям.
В начало В начало

Создание и настройка системы частиц

Чтобы немного разобраться с принципами генерации потока частиц ParticleFlow, выберите Create=>Geometry=>ParticleSystems, щелкните на кнопке PF Source и в окне проекции Top нарисуйте эмиттер — никаких частиц при этом видно не будет, так как кадр нулевой. Нажмите на панели анимации кнопку Play, и частицы появятся (рис. 3). При выделенном эмиттере активируйте панель Modify и обратите внимание на то, что на ней можно отрегулировать размеры и форму эмиттера (свиток Emission).

 

Рис. 3. Вид проекций с потоком частиц в одном из промежуточных кадров

Рис. 3. Вид проекций с потоком частиц в одном из промежуточных кадров

 

Для корректировки параметров генерации частиц откройте окно ParticleView, щелкнув на одноименной кнопке панели Modify. Изначально в окне будут отображены два события — PFSource 01 и Event 01 (рис. 4). Первое из них относится к глобальным (GlobalEvent) и отображает сам факт существования частиц — единственный оператор данного события Render 01 отвечает за то, будут ли визуализироваться частицы потока, а если будут, то в каком виде. Второе событие — локальное и отвечает за генерацию частиц эмиттером. Данное событие включает шесть операторов, первым из которых стоит оператор Birth, регулирующий рождение частиц через параметры:

  • EmitStart/EmitStop — определяет первый кадр, в котором произойдет рождение частиц, и последний кадр, после которого частицы больше не будут появляться;
  • Amount — задает количество испускаемых источником частиц.

 

Рис. 4. Первоначальный вид окна ParticleView после создания системы частиц

Рис. 4. Первоначальный вид окна ParticleView после создания системы частиц

 

Выделите в событии Event 01 строку Birth 01 и установите значение параметра Emit Start равным 0, Emit Stop — 100, а Amount — 600 (рис. 5). Это означает, что частицы будут появляться по всех ста кадрах анимации, а общее их число окажется равно 600. Выделите строку Speed 01 и уменьшите значение скорости движения части до 50 — частицы станут двигаться гораздо медленнее, а поток их окажется более плотным (рис. 6).

 

Рис. 5. Настройка параметров оператора Birth 01

Рис. 5. Настройка параметров оператора Birth 01

 

Рис. 6. Вид потока частиц в окне проекции после корректировки параметров операторов Birth и Speed

Рис. 6. Вид потока частиц в окне проекции после корректировки параметров операторов Birth и Speed

 

Попробуем добиться того, чтобы частицы с возрастом меняли свой цвет, причем дважды: первый раз, например, на 30-м кадре жизни, а второй — на 60-м. Это означает, что для проверки возраста потребуется два критерия: по первому событие Event 01 сменится событием Event 02, а по второму на смену событию Event 02 придет событие Event 03. Создайте в событии Event 01 первый критерий AgeTest, перетащив его из нижней части окна ParticleView в нижнюю часть окна события (рис. 7). Выделите в событии строку AgeTest, а затем отрегулируйте параметры критерия — Test Value должен быть равен 30, а Variation — 0. Создайте новое событие Event 02, перетащив оператор Display в свободную от событий область диаграммы (рис. 8). Событие Event 02 должно наступать для тех частиц, возраст которых достиг ровно 30 кадров, и по замыслу частицы должны менять свой цвет. Поэтому выделите строку Display 02 события Event 02 и удостоверьтесь, что цвет частиц действительно изменился (отличается от того, который фигурирует при активизации строки Display 01 события Event 01), — рис. 9. Свяжите критерий AgeTest 01 с событием Event 02, захватив курсором выступ напротив критерия и перетащив его при нажатой кнопке мыши на событие Event 02.

 

Рис. 7. Создание критерия AgeTest

Рис. 7. Создание критерия AgeTest

 

Рис. 8. Появление события Event 02

Рис. 8. Появление события Event 02

 

Рис. 9. Настройка параметров оператора Display 02

Рис. 9. Настройка параметров оператора Display 02

 

Добавьте к событию Event 02 критерий AgeTest и установите для него параметр Test Value равным 60, а Variation — 0. Создайте новое событие Event 03, перетащив оператор Display в свободную от событий область диаграммы, а затем отрегулируйте цвет в действии Display 03 (рис. 10). Свяжите критерий AgeTest 02 с событием Event 03. Запустите проигрывание анимации и убедитесь, что частицы действительно с возрастом меняют свой цвет (рис. 11).

 

Рис. 10. Окончательный вид диаграммы событий

Рис. 10. Окончательный вид диаграммы событий

 

Рис. 11. Вид частиц в окне проекции в нескольких кадрах анимации

Рис. 11. Вид частиц в окне проекции в нескольких кадрах анимации

В начало В начало

Воздействие на частицы физических сил и деформаций отражения

К системам частиц ParticleFlow можно применять различные движущие силы (Forces), правда связываются они с частицами не посредством операции BindtoSpaceWarp, а через оператор Force в окне ParticleView. Для примера попробуем назначить созданной системе частиц гравитационный источник деформации. Но вначале, учитывая, что частицы в нашем примере и без гравитации падают вниз, для наглядности изменим направление их перемещения на противоположное. Для этого активируйте в событии Event 01 оператор Speed 01 и в разделе Direction включите флажок Reverse — частицы станут лететь вверх (рис. 12).

 

Рис. 12. Изменение направления перемещения частиц

Рис. 12. Изменение направления перемещения частиц

 

Создайте источник гравитации, открыв свиток типов объектов категории Forces, кликнув на кнопке Gravity (Гравитация) и сформировав источник гравитации в окне Perspective. Теперь нужно связать источник с системой частиц — для этого переключитесь в окно ParticleView, добавьте в событие Event 01 оператор Force, в области ForceSpaceWarps щелкните на кнопке ByList и укажите в списке созданный источник гравитации (рис. 13). Назначенная по умолчанию гравитационная сила окажется столь сильной, что все частицы станут падать вниз. Отрегулируем степень воздействия гравитационного поля (параметр Strength на панели Modify при активированном эмиттере) и одновременно скорость испускания эмиттером частиц (оператор Speed 01 в событии Event 01) так, чтобы последние вначале вылетали вверх, немного поднимались и лишь затем падали, — мы остановились на значениях 0,25 и 250 соответственно. И напоследок немного расширим поток частиц, чтобы они летели не только строго вверх, а затем строго вниз, но и немного в стороны — для этого увеличьте для оператора Speed 01 значение параметра Divergence (Отклонение), например, до 30 (рис. 14).

 

Рис. 13. Связывание источника гравитации с системой частиц

Рис. 13. Связывание источника гравитации с системой частиц

 

Рис. 14. Изменение характера полета частиц

Рис. 14. Изменение характера полета частиц

 

Похожим образом настраивается воздействие и других сил, таких, например, как Wind (Ветер), Drag (Помеха) и т.п. А вот деформации отражения, используемые для отражения потока частиц от преград, назначаются потоку частиц ParticleFlow несколько иначе. Попробуем установить подобную плоскую преграду на пути летящих вниз под воздействием гравитационной силы частиц. Откройте свиток типов объектов категории Deflectors и кликните на кнопке Deflector. Создайте в окне проекции Perspective значок отражателя, отрегулируйте его размеры (отражатель должен захватывать все объекты сцены) и положение (он должен располагаться строго под источником частиц) — рис. 15. Теперь следует связать источник деформации с источником частиц, правда сделать это придется уже не через оператор Force, а с помощью критериев Collision (Столкновение) или CollisionSpawn (Столкновение с размножением). Поскольку в нашем случае речь идет об обычном столкновении (а не о столкновении с дополнительной генерацией частиц), воспользуется критерием Collision. Внедрите его в событие Event 02 — в событии Event 01 настраивать столкновение бессмысленно, так как частицы соответствующего возраста просто не успевают долететь до преграды. После этого при выделенном критерии Collision 02 в свитке Deflectors щелкните на кнопке ByList и укажите в списке созданный источник деформации отражения: если ранее частицы красного цвета спокойно проходили сквозь плоскость отражателя, то после связывания они будут от него отскакивать. К зеленым частицам это пока не относится, поэтому в событии Event 03 нужно установить точно такой же критерий Collision — проще это сделать, скопировав одноименный критерий из события Event 02 через контекстное меню (рис. 16). В результате уже все достигшие плоскости отражателя частицы будут от нее отскакивать (рис. 17).

 

Рис. 15. Появление в сцене отражателя

Рис. 15. Появление в сцене отражателя

 

Рис. 16. Настройка столкновения частиц с отражателем

Рис. 16. Настройка столкновения частиц с отражателем

 

Рис. 17. Результат связывания отражателя с системой частиц

Рис. 17. Результат связывания отражателя с системой частиц

В начало В начало

Настройка отображения частиц при визуализации

По умолчанию частицы ParticleFlow визуализируются в виде тетраэдров, и в нашем примере сцена в одном из кадров анимации будет выглядеть примерно так, как представлено на рис. 18. Через параметры оператора Shape можно изменить вид частиц при визуализации, например, на кубы или сферы (рис. 19).

 

Рис. 18. Вид частиц, визуализируемых в виде тетраэдров

Рис. 18. Вид частиц, визуализируемых в виде тетраэдров

 

Рис. 19. Изменение вида частиц при визуализации через оператор Shape

Рис. 19. Изменение вида частиц при визуализации через оператор Shape

 

Однако несложно отображать частицы и иным образом, например при рендеринге каждая частица может заменяться на образец-заместитель, представляющий собой некоторый объект сцены. При этом размеры визуализируемых частиц будут определяться размерами образца-заместителя, а в качестве объекта-образца может выступать не только одиночный объект, но и группа объектов (что невозможно для других типов частиц). Стоит заметить, что данный прием (реализуемый через оператор ShapeInstance) актуален даже в случае замены частиц на обычные сферы, так как сферы, установленные через оператор Shape, плохо сглажены (рис. 20).

 

Рис. 20. Пример частиц, визуализируемых в виде сфер (слева — через оператор Shape, справа — путем замены на объект-образец)

Рис. 20. Пример частиц, визуализируемых в виде сфер (слева — через оператор Shape, справа — путем замены на объект-образец)

 

Можно даже заменять частицы на составные объекты BlobMesh (Метаболы), представляющие собой набор сфер, при сближении соединяющихся друг с другом так, как если бы они были созданы из мягкого, текучего вещества, а при удалении вновь принимающие форму сфер. В этом случае размер визуализируемых в виде метаболов частиц будет по-прежнему регулироваться через оператор Shape. Попробуем заменить частицы метаболами. Активируйте в категории Geometry панели Create тип объектов Compound Objects, щелкните на кнопке BlobMesh, а затем — в произвольном месте сцены — в результате будет создана одна blobmesh-сфера. Переключитесь на панель Modify и в свитке Parameters щелкните на кнопке Add и укажите в открывшемся свитке систему частиц PF Source 01 (рис. 21) — частицы окажутся заменены каплями (рис. 22).

 

Рис. 21. Замена частиц метаболами

Рис. 21. Замена частиц метаболами

 

Рис. 22. Вид частиц, представленных метаболами, при визуализации

Рис. 22. Вид частиц, представленных метаболами, при визуализации

В начало В начало

КомпьютерПресс 9'2007


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует