3D Studio MAX: первые шаги. Урок 17. Системы частиц. Часть 2
В предыдущем уроке мы начали знакомиться с системами частиц, которые незаменимы при моделировании струй дождя, брызг фонтана, хлопьев снега, искр огня и других явлений и объектов, а также на конкретных примерах рассмотрели системы частиц Spray, Snow и РАrrау. В этом уроке мы продолжим изучать нюансы внедрения систем частиц в сцены, но остановимся уже на других системах частиц. При этом будем рассматривать частицы не как независимые объекты, а как объекты, подвергающиеся воздействию разнообразных внешних сил (или деформаций): ветра, гравитации, давления, торможения и т.п. Подобные внешние силы нельзя не учитывать, поскольку в действительности любые частицы падают под действием силы тяжести, могут изменять траекторию под действием ветра, взрывной волны и т.д.
Теоретические аспекты
Система частиц Blizzard
Система частиц Blizzard (Метель) представляет собой расширенный вариант системы Snow, а потому применяется для создания более сложных эффектов: снежных хлопьев, водяных брызг и т.д. Что касается настроек, то в данной системе предусмотрен весь набор параметров системы Snow, дополненный параметрами системы PArray и уникальным параметром EmitterFitPlanar (свиток ParticleType). Последний позволяет управлять координатами наложения текстурной карты на частицы.
Для примера создайте систему частиц типа Blizzard (Метель). Выберите Create=>Geometry=>ParticleSystems, щелкните на кнопке Blizzard и в любом из окон проекций перетащите мышь при нажатой левой кнопке по диагонали. Появится значок эмиттера Blizzard, имеющий обычную прямоугольную форму (рис. 1). Эмиттер может перемещаться и вращаться; его размеры регулируются в группе DisplayIcon свитка BasicParameters — увеличьте размеры эмиттера, указав большие значения ширины (Width) и длины (Length), и переместите эмиттер в верхнюю часть окна проекции (рис. 2).
Рис. 1. Вид проекции Perspective с Blizzard-эмиттером в одном из промежуточных кадров анимации
Рис. 2. Корректировка размеров эмиттера
Управление вращением частиц (данная возможность уникальна для систем Snow и Blizzard) осуществляется через параметры Tumble и TumbleRate группы ParticleMotion свитка ParticleGeneration. Первый параметр (как и для системы Snow) отвечает за регулирование случайного поворота частиц, а второй — за скорость их вращения. Для примера установите значение Tumble равным 1 (это обеспечит максимальное вращение частиц), а TumbleRate равным 5. В этом же свитке настройте параметры EmitStart (Момент появления частиц в сцене), EmitStop (Момент исчезновения частиц в сцене) и DisplayUntil (Окончательное время исчезновения частиц) так, чтобы частицы примерно в одном и том же количестве присутствовали во всех кадрах. Для этого в поле EmitStart нужно установить отрицательное значение, а в полях EmitStop и DisplayUntil — значение 101 (то есть номер первого кадра по окончании анимации, так как общее число кадров анимации равно 100) — рис. 3. Увеличьте размер частиц до 15 (параметр Size в свитке ParticleGeneration) и установите шестиугольную форму частиц при рендеринге (флажок SixPoint в свитке ParticleType).
Рис. 3. Настройка параметров появления, исчезновения и вращения частиц
В заключение обратите внимание на параметры GrowFor и FadeFor, находящиеся в свитке ParticleGeneration. Первый определяет кадровый интервал, внутри которого частицы увеличиваются до определенного им размера, а второй — интервал кадров, внутри которого частицы уменьшаются от установленного размера, постепенно сходя на нет. Оба эти отрезка находятся внутри жизненного интервала Life. По умолчанию параметры GrowFor и FadeFor устанавливаются равными 10 — это означает, что частицы достигают своего максимального размера к 10-му кадру жизни, затем некоторое время их размер остается неизменным, а в течение последних десяти кадров жизни частицы постепенно уменьшаются в размерах. Поэкспериментируйте с настройками данных параметров и понаблюдайте, как меняются размеры частиц: при нулевых значениях параметров размер частиц неизменен на всем протяжении жизни, при положительных значениях частицы вначале растут, а потом уменьшаются (рис. 4).
Рис. 4. Взаимосвязь между параметрами GrowFor и FadeFor и размерами частиц
Система частиц Super Spray
Система частиц SuperSpray (Супербрызги) представляет собой расширенный вариант системы Spray, а потому применяется для создания более сложных эффектов: разлетающихся водяных брызг или искр, клубящегося дыма и т.д. Что касается настроек, то в данной системе предусмотрен весь набор параметров системы Spray, дополненный параметрами системы PArray и группой параметров ParticleFormation (свиток BasicParameters), предназначенных для контроля направления и распространения частиц.
Для примера создайте систему частиц типа SuperSpray (Супербрызги). Выберите Create=>Geometry=>ParticleSystems, щелкните на кнопке SuperSpray и в любом из окон проекций переместите мышь в произвольном направлении. Появится значок эмиттера SuperSpray, представляющий собой пересекающиеся плоскость и круг со стрелкой (рис. 5). Направление перемещения частиц задается направлением стрелки (вектора эмиттера). По умолчанию первоначальное направление зависит от того, в каком окне проекций была создана система частиц. Так, при создании системы частиц в ортографических окнах (Front, Top или Left) вектор эмиттера будет направлен горизонтально, а при создании в окне Perspective — вертикально. Вектор эмиттера несложно изменить, повернув последний требуемым образом, — направление испускания частиц изменится, хотя все они по-прежнему будут двигаться по одной прямой (рис. 6).
Рис. 5. Вид проекции Perspective с Super Spray-эмиттером в нулевом кадре анимации
Рис. 6. Вид проекций с Super Spray-частицами в одном из промежуточных кадров после поворота эмиттера
Более широкие возможности управления направлением и характером распространения частиц открываются через параметры ParticleFormation (рис. 7):
- OffAxis (Вне оси) — определяет угол отклонения потока частиц от вектора эмиттера;
- Spread (Распространение) — управляет степенью распространения частиц в стороны от вектора эмиссии (в плоскости самого эмиттера);
- OffPlane (Вне плоскости) — устанавливает угол эмиссии вокруг вектора эмиттера, (данный параметр не оказывает эффекта, если OffAxis = 0);
- Spread (Распространение) — управляет распространением частиц вокруг плоскости эмиттера.
Рис. 7. Группа параметров ParticleFormation
Прежде чем переходить к экспериментам с настройками, направьте вектор эмиттера строго вверх (так легче контролировать изменения) и установите параметр EmitStart из свитка ParticleGeneration равным –100, а EmitStop равным 100, расширив тем самым промежуток присутствия частиц в сценах (рис. 8). Откройте свиток BasicParameters и установите параметр OffAxis равным 45 — поток частиц отклонится от вектора эмиттера ровно на 45° (рис. 9). Обнулите параметр OffAxis и увеличьте значение верхнего из параметров Spread до 60 — частицы станут разлетаться в разных направлениях, оставаясь, тем не менее, на плоскости эмиттера (рис. 10). Теперь попробуйте постепенно увеличивать значение нижнего из параметров Spread, доведя в результате его значение до 180 (рис. 11) — частицы при движении будут все больше отклоняться от плоскости эмиттера и в конечном счете станут распространяться уже не на плоскости, а в трехмерном пространстве (рис. 12).
Рис. 8. Корректировка параметров свитка ParticleGeneration
Рис. 9. Отклонение потока частиц от вектора эмиттера
Рис. 10. Расширение зоны распространения частиц в стороны от вектора эмиссии (частицы движутся на плоскости)
Рис. 11. Влияние значения нижнего параметра Spread на распространение частиц в пространстве
Рис. 12. Расширение зоны распространения частиц в стороны от плоскости эмиссии (частицы движутся в 3 D -пространстве)
Система частиц PCloud
Система частиц PCloud (Облако частиц) позволяет заполнять частицами некоторые объемные формы (куб, сферу, цилиндр или даже объект произвольной формы) и может применяться, например, для создания стаи птиц, косяка рыб, скопления звезд и т.п. Параметры настройки данной системы включают весь набор параметров системы частиц PArray, который дополнен группами параметров Object-BasedEmitter, ParticleFormation и DisplayIcon (свиток BasicParameters), а также группой ParticleMotion (свиток ParticleGeneration), присутствующими только в системе частиц PCloud (рис. 13).
Рис. 13. Уникальные параметры системы PCloud
Параметры группы ParticleFormation (Характер частиц) предназначены для управления формой эмиттера (BoxEmitter, SphereEmitter, CylinderEmitter и Object-BasedEmitter), а группа параметров Object-BasedEmitter (Объект в качестве эмиттера), доступная только при выборе эмиттера типа Object-BasedEmitter, позволяет указать произвольный объект в качестве эмиттера частиц. Параметры группы DisplayIcon (Внешний вид значка системы) отвечают за регулирование размеров эмиттера в случае, если он имеет кубическую, сферическую или цилиндрическую форму. В группе ParticleMotion (Движение частиц) объединены параметры, регулирующие характер движения частиц: скорость (Speed), разброс значения параметра Speed в процентном соотношении для каждой частицы (Variation) и направление перемещения (RandomDirection — случайное направление, DirectionVector — направление по вектору или ReferenceObject — направление по объекту).
Принципиальным отличием данной системы частиц является то, что частицы по умолчанию неподвижны (параметр Speed равен 0), поскольку лишь в таком состоянии они расположены компактно и правильно заполняют отведенный им объем — в случае изменения значения параметра Speed они сразу же разлетаются. Поэтому довольно часто частицы системы PCloud остаются статичными, а сама PCloud-система применяется для моделирования объектов сцены, состоящих из множества однотипных элементов: листвы деревьев, фрагментов облаков и т.п. Однако статичность самих частиц совсем не исключает их совместного движения (причем с сохранением объема), что достигается назначением им внешних сил (Wind, PathFollow и т.д.), с которыми мы познакомимся чуть позже.
Для примера создайте систему частиц типа PCloud (Облако частиц) с большим количеством частиц и цилиндрическим эмиттером, а затем дополните сцену расширенным примитивом Hedra (рис. 14). В свитке ParticleType установите для частиц тип InstancedGeometry, укажите примитив Hedra в качестве объекта (кнопка PickObject) и отрегулируйте размер частиц (скорее всего, его придется уменьшать, так как размер примитива окажется слишком большим для частиц). Проведите рендеринг — каждая из частиц унаследует свойства примитива Hedra, а все частицы в целом образуют единый объект, немного напоминающий друзу минерала (рис. 15).
Рис. 14. Система PCloud-частиц
Рис. 15. Облако частиц, созданных на базе объекта-образца
Деформации частиц
В отношении частиц предусмотрено применение силовых деформаций и деформаций отражения. Силовые деформации, или деформации типа Forces (Силы), оказывают силовое воздействие на системы частиц, изменяя их динамику, и позволяют имитировать влияние на частицы природных явлений (гравитация, ветер и др.) или искусственно созданных силовых эффектов (взрыв, направленное давление и др.). Создание силовых деформаций обеспечивает тип объектов Forces (Силы) из категории SpaceWarps (Объемные деформации) — рис. 16, при выборе которого становятся доступными следующие варианты силовых деформаций:
- Motor (Мотор) — оказывает на поток частиц силовое воздействие, заставляющее их вращаться;
- Push (Давление) — имитирует направленное давление на поток частиц, приводящее к их перемещению в определенном направлении;
- Vortex (Вихрь) — создает эффект закручивания частиц по спирали;
- Drag (Помеха) — обеспечивает смещение потока частиц при возникновении помех их движению;
- PathFollow (Движение по траектории) — заставляет частицы перемещаться по специально созданной траектории;
- PBomb (Particle Вomb — Бомба для частиц) — создает импульсную взрывную волну, обеспечивающую разброс частиц под воздействием взрыва;
- Displace (Вытеснение) — создает эффект обтекания объекта частицами;
- Gravity (Гравитация) — используется для имитации воздействия силы тяжести;
- Wind (Ветер) — имитирует воздействие ветра, отклоняющего частицы.
Рис. 16. Объекты типа Forces
Большинство силовых деформаций, за исключением PathFollow, назначается примерно одинаковым способом. Достаточно создать источник деформации, отрегулировать его положение, связать с системой частиц, которая должна находиться под влиянием данного источника деформации, и настроить параметры воздействия в свитке Modify.
Для примера создайте систему частиц Blizzard с большим количеством частиц и вектором эмиттера, направленным вправо и вверх (рис. 17). Попробуем назначить данной системе гравитационный источник деформации. Для создания источника откройте свиток типов объектов категории Forces и кликните на кнопке Gravity (Гравитация). В окне Perspective щелкните в той точке, где должен помещаться центр воздействия источника, и перетащите мышь при нажатой левой кнопке по диагонали. Это приведет к появлению прямоугольного значка с нормалью-стрелкой, указывающей направление воздействия источника. При создании источника в окне Perspective нормаль будет направлена вниз, что в данном случае и требуется. При необходимости подкорректируйте положение источника (он должен располагаться под системой частиц) и свяжите его с системой частиц, выделив источник, активировав инструмент BindtoSpaceWarp (рис. 18), нажав левую кнопку мыши на источнике и, не отпуская ее, указав систему частиц. Характер перемещения частиц тут же изменится — теперь, немного отлетев от эмиттера, они станут падать вниз (в то время как ранее продолжали свое движение в направлении вектора эмиттера, чего в действительности быть не может) — рис. 19.
Рис. 17. Исходная система Blizzard-частиц
Рис. 18. Выбор инструмента BindtoSpaceWarp
Рис. 19. Перемещение частиц после назначения им гравитационной деформации
После этого можно отрегулировать характер воздействия источника деформации, например при гравитационной деформации предусмотрено изменение силы гравитации (Strength) и степени уменьшения силы воздействия по мере удаления от источника (Decay) — рис. 20, а также определение формы фронта поля силы тяжести. Поле фронта может быть либо плоским (Planar), либо сферическим (Spherical). При плоском фронте воздействие производится только в направлении нормали источника, а при сферическом распределяется радиально (рис. 21).
Рис. 20. Зависимость характера перемещения частиц от параметра Decay
Рис. 21. Перемещение частиц под воздействием планарной (вверху) и сферической гравитации
Удалите созданный источник гравитации, выделив его и нажав клавишу Del, — частицы вновь станут перемещаться без учета силы тяжести. Попробуем теперь заставить их двигаться по некоторой траектории, что реализуется путем деформации PathFollow (Движение по траектории). Создайте произвольную односплайновую кривую (это будет траектория движения) и источник деформации PathFollow (рис. 22). Выделите источник деформации, на панели Modify в свитке BasicParameters щелкните на кнопке PickShapeObject (Указать объект-форму) и укажите построенную кривую. Свяжите источник деформации с источником частиц с помощью инструмента BindtoSpaceWarps — частицы начнут перемещаться по заданной траектории (рис. 23).
Рис. 22. Появление кривой и источника деформации PathFollow
Рис. 23. Перемещение частиц по траектории
Помимо силовых деформаций частицы могут подвергаться воздействию деформаций отражения, к которым относятся Deflectors (Отражатели), использующиеся для отражения потока частиц от преград, что приводит к изменению направления движения частиц. Отражатели позволяют устанавливать на пути движения частиц разнообразные преграды и регулировать поведение частиц при столкновении с ними: частицы могут отскакивать от преграды (например, капли дождя) либо стекать по ней (дождевые струи) и т.д. За создание отражателей отвечает тип объектов Deflectors (Отражатели) из категории SpaceWarps (Объемные деформации) — рис. 24, обеспечивающий создание плоскостных отражателей Deflector, POmniFlect и PDynaFlect, сферических отражателей SDeflector, SOmniFlect и SDynaFlect и универсальных отражателей UDeflector, UOmniFlect и UDynaFlect. Универсальные отражатели, в отличие от плоскостных и сферических, позволяют отражать частицы не только от плоскости или от сферы, но и от любого другого объекта произвольной формы, который может быть использован в качестве отражателя частиц. Самые простые из названных дефлекторов — Deflector, SDeflector и UDeflector, набор настроек для которых невелик. Остальные дефлекторы имеют расширенный набор настроек, при этом PDynaFlect, SDynaFlect и UDynaFlect предназначены для управления частицами с учетом их физических характеристик (масса и т.п.), а POmniFlect, SOmniFlect и UOmniFlect — с учетом преломления и отражения.
Рис. 24. Объекты типа Deflectors
Чтобы понять, как работают отражатели, удалите сформированный ранее источник деформации PathFollow, откройте свиток типов объектов категории Deflectors и кликните на кнопке Deflector. Создайте в окне проекции Perspective значок отражателя, отрегулируйте его размеры и положение (рис. 25), а затем свяжите источник деформации с источником частиц — если ранее частицы спокойно проходили сквозь плоскость отражателя, то после связывания они будут от него отскакивать (рис. 26).
Рис. 25. Появление в сцене отражателя
Рис. 26. Результат связывания отражателя с системой частиц