3D Studio MAX: первые шаги. Урок 16. Системы частиц. Часть 1
Для придания реализма моделируемым сценам, помимо добавления атмосферных эффектов, нередко прибегают к внедрению в них множества очень мелких однотипных объектов, количество и вид которых изменяются с течением времени. Такие объекты принято называть системами частиц, и они незаменимы при моделировании струй дождя, брызг фонтана и хлопьев снега, искр огня, фейерверка и салюта, воздушных пузырьков и пыли, звездного неба и летящей стаи птиц и т.п. Именно с данным типом объектов мы и познакомимся в настоящем уроке.
Теоретические аспекты
Системы частиц (ParticleSystems) — это совокупность управляемых с помощью параметров малоразмерных объектов, количество и вид которых различны в каждом кадре анимации. В 3D Studio MAX предусмотрено семь видов систем частиц (рис. 1):
- Spray (Брызги) и SuperSpray (Супербрызги) — обеспечивают эффект водяных брызг;
- Snow (Снег) и Blizzard (Метель) — создают эффект падающего снега и даже настоящей метели;
- PCloud (Облако частиц), РАrrау (Массив частиц) и PF Source (Источник Particle Flow) — предназначены для моделирования широкого спектра эффектов.
Рис. 1. Базовые типы систем частиц
За создание систем частиц отвечает категория ParticleSystems (Системы частиц) панели Create (Создать) — рис. 2, при выборе которой становятся доступными все типы систем частиц. Технология их создания напоминает создание других объектов геометрии. Например, при формировании систем Spray, Snow, Blizzard и Super Spray достаточно просто выбрать тип системы частиц и перетащить мышь при нажатой левой кнопке по диагонали, а затем на панели Modify откорректировать параметры системы объектов. При создании любого типа частиц создается генерирующий их объект — эмиттер. Он определяет площадь, с которой будут падать частицы, и направление их перемещения (задается направлением вектора, выходящим из центра эмиттера). Эмиттер не визуализируется и в самом простом случае является двумерным. В окнах проекций он отображается в виде прямоугольника (рис. 3). Частицы, в отличие от эмиттера, визуализируются, хотя в нулевом кадре их не видно, но они прекрасно отображаются в любом кадре, отличном от нулевого.
Рис. 2. Категория ParticleSystems
Рис. 3. Частицы и генерирующий их эмиттер — частицы отображены розовым цветом, а эмиттер — оранжевым
Для большей части систем частиц эмиттер не только генерирует частицы, но и сам их испускает. Исключение составляют системы ParticleArray и ParticleCloud, в которых испускание частиц производится с другого (предварительно выбранного пользователем) объекта сцены, а за эмиттером сохраняется функция генерирования частиц в соответствии с указанными параметрами.
Spray
Система частиц Spray (Брызги) позволяет генерировать падающие частицы, сохраняющие при перемещении постоянную ориентацию и направление, и предназначена для имитации эффекта падающей воды: водяных брызг, дождевых струй и т.п.
Для примера создайте систему частиц типа Spray (Брызги). Выберите Create=>Geometry=>ParticleSystems, щелкните на кнопке Spray и в окне проекции Top нарисуйте прямоугольный эмиттер — никаких частиц при этом видно не будет (рис. 4), но это лишь потому, что кадр нулевой. Нажмите на панели анимации кнопку Play, и частицы тут же появятся (рис. 5), причем их количество и положение в каждом кадре будет меняться.
Рис. 4. Вид проекции Top со Spray-эмиттером в нулевом кадре
Рис. 5. Вид проекций со Spray-частицами в одном из промежуточных кадров
При необходимости несложно отрегулировать положение частиц, их количество и характер движения через свитки параметров на панели Modify (рис. 6). Так , в области Particles можно определить следующие параметры:
- ViewportCount — максимальное число частиц, отображаемых в окне проекций в любой момент времени;
- RenderCount — максимальное число частиц, видимых в каждом отдельном кадре итоговой визуализации; как правило, для окончательной визуализации сцены следует задавать достаточно большую величину этого параметра — порядка 1000;
- DropSize — размер частиц;
- Speed — средняя начальная скорость каждой частицы в момент отрыва от источника, в дальнейшем, если на частицы не действует какая-либо из объемных деформаций (например, гравитация), то они движутся с этой же скоростью, в противном случае скорость меняется в зависимости от вида и настроек гравитации;
- Variation — разброс значений начальных скоростей и направлений распространения частиц, от значения которого зависит область их распространения — чем больше значение данного параметра, тем шире область распространения.
Кроме того, здесь же выбирается вариант отображения частиц в окнах проекций — Drops (Лучи), Dots (Точки) и Ticks (Крестики).
Вид частиц при рендеринге задается в области Render, где предусмотрено два варианта отображения:
- Tetrahedron — частицы визуализируются в виде вытянутых тетраэдров, длина которых равна значению параметра DropSize, напоминая дождевые капли;
- Facing — частицы визуализируются в виде квадратных полигонов, размеры которых совпадают с размерами частицы; форму данных полигонов можно изменять посредством наложения материалов на основе текстурных карт с масками непрозрачности.
В области Timing регулируется время жизни частиц:
- Start — номер кадра, в котором начнется испускание частиц; по умолчанию данный параметр равен 0, в результате чего в 0-м кадре частицы не видны; если же требуется, чтобы все частицы, задаваемые полями счетчиков, присутствовали уже в 0-м кадре, то в данном поле устанавливается отрицательное значение;
- Life — продолжительность жизни частицы в кадрах; чем больше значение данного параметра, тем дольше виден след, оставляемый частицами; если Life = 0, то частицы следа за собой не оставляют;
- BirthRate — число новых частиц, появляющихся в каждом следующем кадре анимации. Если значение данного параметра превышает максимально допустимое значение — MaxSustainableRate,вычисляемое как частное параметров RenderCount и Life, то генерация частиц производится прерывисто. Для получения устойчивого потока частиц значение BirthRate должно быть меньше или равно MaxSustainableRate. Данный параметр можно изменять только при сброшенном флажке Constant.
В области Emitter определяются размеры эмиттера — его ширина (Width) и длина (Length), здесь же можно отказаться от отображения эмиттера в окнах проекций, для чего требуется включить опцию Hide (скрыть).
Рис. 6. Список параметров системы Spray-частиц
Чтобы разобраться с особенностями настройки названных параметров, активируйте созданную систему Spray-частиц, включите режим анимации с автоматическим созданием ключей, переключитесь на последний кадр и на панели Modify увеличьте размер частиц (DropSize) до 5, а скорость их движения (Speed) до 20 (рис. 7). Отключите режим автоматического создания колючей, вернитесь в 0-й кадр и проиграйте анимацию в окне проекции Perspective и увидите, что при увеличении номера кадра размер частиц увеличивается, равно как и скорость их падения (рис. 8).
Рис. 7. Создание ключей анимации для параметров DropSize и Speed
Рис. 8. Вид частиц в 20-м (слева) и 100-м кадрах
Установите вариант отображения частиц в окнах проекций в виде точек (Dots) — обратите внимание, что теперь изменение размеров частиц не будет фиксироваться в окнах проекций. Уменьшите время их жизни (Life) до пяти кадров и проиграйте анимацию, где сразу станет заметно, что уменьшилось не только время, в течение которого виден след от частиц, но и область их распространения (рис. 9). Верните первоначальное значение параметра Life. Отключите флажок Constant, а затем увеличьте значение параметра BirthRate до 10. Это приведет к порционной генерации частиц, где на некоторых кадрах на экране одновременно будут находиться не одно, а сразу два облака частиц (рис. 10). Включите флажок Constant — частицы вновь станут испускаться эмиттером равномерно.
Рис. 9. Вид частиц в 5-м (сверху) и 100-м кадрах — в обоих случаях четко видна граница максимального распространения частиц
Рис. 10. Вид частиц в 20-м (сверху) и 37-м кадрах
Удалите для параметров DropSize и Speed созданные ранее ключи анимации, увеличьте размер частиц до 4 и проведите рендеринг для одного из промежуточных кадров анимации (рис. 11). Обратите внимание, что все частицы движутся одинаково. Увеличьте разброс значений начальных скоростей и направлений частиц (Variation) до 3 — частицы станут разлетаться не в одном, а сразу в нескольких направлениях (рис. 12). Создайте AVI-файл — примените команду Rendering=>Render, на вкладке CommonParameters активизируйте переключатель ActiveTimeSegment (Активный сегмент времени), укажите имя файла и щелкните на кнопке Render. Просмотрите созданную анимацию в окне встроенного проигрывателя — частицы будут хаотично перемещаться, но количество их окажется невелико. Поэтому увеличьте значение параметра RenderCount примерно до 1000-1500 и вновь проведите визуализацию — поток частиц станет гораздо мощнее (рис. 13).
Рис. 11. Вид сцены при одинаковом движении частиц
Рис. 12. Вид сцены при хаотичном движении частиц и соответствующие ему настройки базовых параметров
Рис. 13. Демонстрация анимации в окне Windows-проигрывателя и соответствующие настройки базовых параметров анимации частиц
Огни фейерверка
Попробуем превратить разлетающиеся частицы в настоящий фейерверк — для этого достаточно подобрать оптимальный для данного случая разброс частиц (мы остановились на 6) и назначить частицам светящийся и отливающий разными цветами материал. Поскольку речь идет о получении разноцветных огней, то в качестве материала может быть использована специально созданная, например в генераторе фрактальной графики, и установленная на канале Diffuse разноцветная Bitmap-текстура, многослойный Composite-материал (в котором сквозь один материал будут просвечивать другие) либо материал Multi/Sub-Object. Мы остановимся на последнем варианте, так как он позволяет назначать материал не всем частицам сразу, а каждой следующей частице отдельно — очередная частица принимает материал на основе собственного номера (0-я получает 1-й материал, 1-я — 2-й и т.д.). Создайте материал Multi/Sub-Object и ограничьте число входящих в него подматериалов, например, пятью (кнопка Set Number). Последовательно назначьте в качестве подматериалов стандартные материалы с разными цветами на канале Diffuse и большим значением SpecularLevel для получения эффекта свечения (рис. 14). Один из кадров полученной в результате анимации представлен на рис. 15.
Рис. 14. Настройка параметров материала Multi/Sub-Object
Рис. 15. Огни фейерверка
Разноцветное конфетти
А теперь создадим на основе Spray-частиц разноцветное конфетти. Для этого вначале сформируйте систему частиц с большим по размеру эмиттером, указав подходящие значения ширины (Width) и длины (Length) в области Emitter, разместите эмиттер в верхней части окна проекции Perspective (рис. 16), а затем на панели Modify в области Render включите вариант Facing. Проведите рендеринг — частицы станут квадратными, причем размер квадратов будет напрямую зависеть от значения DropSize (рис. 17).
Рис. 16. Исходная система частиц
Рис. 17. Визуализация в режиме Facing
Как правило, вариант отображения Facing используется не напрямую (когда частицы представлены обычными квадратами), а в сочетании с полупрозрачным материалом, имеющим маску, — тогда можно придать частицам произвольную форму. Поскольку мы создаем конфетти, то нам потребуется маска в виде обычного белого круга на черном фоне, которую можно создать в любом растровом редакторе (рис. 18). Самое простое — создать Blend-материал, который позволяет смешивать два материала, в том числе и с применением маски, и назначить его системе частиц. В таком случае все частицы будут круглые, но окажутся одного цвета. А разные цвета будут получены благодаря использованию материала Multi/Sub-Object, поэтому будем применять данный тип материала в качестве основного, а Blend-материалы — как подматериалы. Создайте новый материал типа Multi/Sub-Object с тремя подматериалами и в качестве каждого из подматериалов установите материал Blend. Откройте первый материал Blend и верхним для него подматериалом назначьте стандартный полностью прозрачный черный материал, а нижним — цветной с большим значением SpecularLevel, по окончании установите маску (рис. 19). Аналогичным образом настройте другие Blend-материалы, использовав для них отличные от уже задействованного цветовые оттенки — в итоге вы получите такой же материал Multi/Sub-Object, как показан на рис. 20. Возможный вид одного из кадров созданной в результате анимации представлен на рис. 21.
Рис. 18. Черно-белое изображение круга
Рис. 19. Настройка параметров первого Blend-материала
Рис. 20. Настройка параметров материала Multi/Sub-Object
Рис. 21. Разноцветное конфетти