Первые шаги в Maya. Урок 14. Программно-визуализируемые системы частиц (часть 1)
Воздействие на частицы физических сил
Примеры внедрения частиц в сцену
Для придания реалистичности моделируемым сценам нередко прибегают к внедрению в них множества однотипных объектов очень малого размера, количество и вид которых изменяются с течением времени. Такие объекты принято называть системами частиц, и они незаменимы при моделировании струй дождя, брызг фонтана и хлопьев снега, искр огня, фейерверка и салюта, воздушных пузырьков и пыли, звездного неба и летящей стаи птиц и т.п. Об этом типе объектов и пойдет речь в данном уроке.
Теоретические аспекты
Системы частиц (Particle Systems) — это совокупность управляемых с помощью параметров малоразмерных объектов, количество и вид которых различны в каждом кадре анимации. В Maya имеется очень много видов систем частиц, при этом большинство из них визуализируется лишь аппаратно, и только некоторые — программно. Первые не появляются при обычной программной визуализации и требуют включения системы аппаратного рендеринга и применения программы для монтажа изображения (например, Composer), позволяющей настраивать внешний вид частиц независимо от остальных объектов сцены. Программно-визуализируемые системы частиц отображаются при обычном рендеринге — ими мы и ограничимся в данном уроке.
В Maya предусмотрены три вида программно-визуализируемых систем частиц (их можно идентифицировать по наличию обозначения s/w — рис. 1):
- BlobbySurface (Слившиеся сферы) — представляют собой набор четко очерченных сферических частиц, которые при столкновении сливаются друг с другом и могут визуализироваться с различными типами материалов;
- Cloud (Облака) — визуализируются в виде сфер, имеющих размытые и сглаженные границы, благодаря чему возникает впечатление единого облака; данным частицам, как правило, назначают объемный материал ParticleCloud (Облако частиц) — применение для них обычных материалов приводит к тому, что частицы не отображаются при визуализации;
- Tube (Трубки) — представляют собой лишенные оснований цилиндры, данные частицы визуализируются только вместе с материалами объемного типа (чаще всего им назначается материал ParticleCloud).
Рис. 1. Программно-визуализируемые системы частиц
За работу с системами частиц отвечает меню Particles (Частицы) — оно доступно лишь в режиме Dynamics (Динамика), активируемом при нажатии клавиши F4. В нем находятся команды как непосредственно для создания частиц, так и для выполнения с ними некоторых операций. Создавать частицы можно двумя способами. Можно внедрить их в сцену вручную, воспользовавшись инструментом ParticleTool (Создание частиц), — к этому способу прибегают лишь в тех случаях, когда требуется точно определить положение каждой частицы, например для имитации скоплений некоторых объектов (звезд, птиц, рыб и т.п.).
Однако гораздо чаще частицы не рисуются вручную, а автоматически генерируются эмиттером. Эмиттер создается командой CreateEmitter (Создать эмиттер), вызываемой из меню Particles (Частицы), и определяет площадь, на которой будут падать частицы, а также направление их перемещения. Эмиттер не визуализируется и в окнах проекций представлен либо в виде обычного круга с крестиком, либо в виде такого же круга, но заключенного в некую объемную форму (рис. 2). Частицы, в отличие от эмиттера, визуализируются даже при программном рендеринге (при условии, что они принадлежат к одному из программно-визуализируемых типов). В нулевом кадре их не видно, но они прекрасно отображаются в любом другом кадре.
Рис. 2. Частицы и генерирующий их эмиттер (частицы отображены розовым цветом, а эмиттер — голубым)
Чаще всего эмиттер не только генерирует частицы, но и сам их испускает. Однако при необходимости источником частиц может стать любая поверхность, кривая или некоторый объем пространства, что зависит от типа эмиттера. В Maya могут быть задействованы следующие типы эмиттеров (рис. 3):
- Directional (Направленный) — обеспечивает распространение частиц из одной точки в заданном направлении;
- Omni (Всенаправленный) — формирует частицы, которые распространяются из одной точки во всех направлениях;
- Surface (Поверхностный) — позволяет испускать частицы одной из поверхностей объекта сцены, который может представлять собой полигональный объект либо объект, созданный на базе NURBS-кривых;
- Curve (Криволинейный) — обеспечивает распространение частиц NURBS-кривой;
- Volume (Объемный) — формирует частицы, которые возникают в некоторой точке фиксированного объема (куба, сферы, цилиндра, конуса или тора) и распространяются во всех направлениях.
Рис. 3. Типы эмиттеров
Как правило, программно-визуализируемые системы частиц визуализируются в виде слившихся сфер (B lobbySurface), облаков (Cloud) или трубок (Tube). Однако они могут быть представлены и иным образом, например при рендеринге каждая частица может заменяться на образец-заместитель (Instancer) — рис. 4, представляющий собой некоторый объект сцены. Такие частицы называют созданными по геометрическому образцу (InstancedGeometry), и они незаменимы для имитации скоплений некоторых объектов (птиц, рыб и т.п.).
Рис. 4. Различные варианты отображения частиц: 1— Blobby Surface, 2 — Cloud, 3 —Tube, 4 — Instanced Geometry
Параметры эмиттера и формируемой им системы частиц устанавливаются сразу при их создании (для этого следует щелкать на квадратике, расположенном справа от команды CreateEmitter), либо корректируются позднее в окне каналов (ChannelBox) или в окне редактора атрибутов (AttributeEditor). При этом в зависимости от того, какие параметры требуется изменить, следует выделять либо эмиттер, либо систему частиц (это обычно удобнее произвести в окне Outliner). Основные параметры эмиттера сконцентрированы в свитках BasicEmitterAttributes, Distance/DirectionAttributesи BasicEmissionSpeedAttributes (рис . 5):
- Emitter Type — позволяет установить тип эмиттера;
- Rate — определяет число частиц, испускаемых за одну секунду эмиттером;
- MinDistance/MaxDistance (Минимальное расстояние/Максимальное расстояние) — указывает граничные расстояния от эмиттера, на котором могут создаваться частицы;
- Speed — определяет скорость перемещения частиц;
- SpeedRandom (Случайная скорость) — задает границы диапазона, в котором скорость частиц будет меняться.
Рис. 5. Базовые параметры настройки эмиттера
Базовые параметры частиц расположены на вкладке particleShape, основными из них являются следующие (рис. 6):
- LifespanMode — определяет продолжительность присутствия каждой частицы в сцене (то есть время жизни частиц);
- Particle Render Type — устанавливает тип визуализации частиц.
Рис. 6. Базовые параметры настройки системы частиц
При этом каждый из типов визуализации частиц регулируется через индивидуальный список параметров, вызываемый при нажатии на кнопку CurrentRenderType (Параметры к текущему типу визуализации) из свитка Render Attributes. Например, частицы типа Cloud (Облако) имеют атрибуты Radius (Радиус), SurfaceShading (Тонирование поверхности) и Threshold (Пороговое значение) — рис. 7.
Рис. 7. Индивидуальные параметры системы частиц Cloud
Поведение частиц зависит не только от значений вышеназванных параметров, но и от иных воздействий. Во-первых, на системы частиц могут воздействовать разнообразные физические силы — поля, в частности турбулентность и гравитация, под действием которых траектория частиц будет изменяться. Во-вторых, частицы могут сталкиваться с поверхностями объектов сцены, разбиваясь на дополнительные частицы, исчезать и вновь появляться на том же месте после столкновения. И наконец, частицы могут притягиваться целью (или мишенью), которая может быть как статичной, так и движущейся, что в итоге также приводит к изменению траектории движения частиц. С некоторыми особенностями воздействия на частицы полей мы ознакомимся в этом уроке, а вопросам столкновения частиц и притягивания их мишенью будет посвящен следующий урок.
Создание частиц
Для примера создайте эмиттер, воспользовавшись командой Particles=>CreateEmitter (Частицы=>Создать эмиттер), — никаких частиц при этом видно не будет, но это лишь потому, что кадр нулевой. Нажмите на панели анимации кнопку Play, и частицы тут же появятся (рис. 8), причем их количество и положение в каждом кадре будут меняться.
Рис. 8. Вид проекции Persp с частицами и эмиттером в нулевом (слева) и в одном из промежуточных кадров
При необходимости несложно отрегулировать положение частиц, их количество, особенности испускания их эмиттером и характер их движения через окно каналов или редактор атрибутов. Чтобы немного разобраться с особенностями настройки параметров, активируйте 1-й кадр, выделите эмиттер и измените его тип (параметр Emitter Type) с установленного по умолчанию Omni на Directional. Затем проиграйте анимацию — частицы станут испускаться эмиттером уже не во всех направлениях, а строго в одном (рис. 9). Установите при выделенном эмиттере в окне каналов значение параметра Rotate Z равным 90, и эмиттер изменит направление испускания частиц, которые будут вылетать из него уже не горизонтально, а вертикально (рис. 10). Можно заставить частицы разлетаться в разные стороны, увеличив значение параметра Spread (Разброс): выделите систему частиц и в редакторе атрибутов установите данный параметр равным, например, 0,2 — вид потока частиц сразу же изменится (рис. 11). Несложно добиться и того, чтобы частицы вылетали не из одной точки, а из некоторой области — для этого достаточно увеличить значение в поле MaxDistance (Максимальное расстояние), например, до 5. После этого частицы будут появляться не только из центра эмиттера, но и в любом месте отрезка, выходящего из центра эмиттера, направленного в направлении испускания частиц и имеющего длину, равную 5 (рис. 12).
Рис. 9. Смена типа эмиттера
Рис. 10. Результат изменения направления вектора эмиттера
Рис. 11. Увеличение разброса частиц
Рис. 12. Расширение области испускания частиц
Вернитесь к исходной системе частиц с эмиттером Omni, отменив несколько последних действий. Выделите систему частиц и в окне каналов (строка Particle Render Type) измените установленный по умолчанию тип визуализации частиц Points на BlobbySurface (рис. 13) — вид частиц в окне проекции тут же изменится (рис. 14). Выделите эмиттер и уменьшите количество испускаемых в секунду частиц (параметр Rate) со 100 до 10 — частиц в сцене станет гораздо меньше (рис. 15).
Рис. 13. Смена типа визуализации частиц
Рис. 14. Вид частиц типа BlobbySurface в окне Persp
Рис. 15. Уменьшение количества генерируемых в секунду частиц
Выделите эмиттер, переключитесь на первый кадр анимации, выделите в окне каналов параметр Speed, отвечающий за скорость перемещения частиц, и установите для него анимационный ключ, выбрав из контекстного меню команду Key Selected (Ключи для выделенных параметров). Перетащите ползунок на последний кадр, увеличьте в окне каналов скорость движения частиц (Speed) до 10 и вновь создайте ключ анимации. Вернитесь в 1-й кадр, проиграйте анимацию в окне проекции Perspective, и вы увидите, что при увеличении номера кадра скорость движения частиц заметно возрастает. Можно даже установить скорости частиц случайными, что сделает процесс их движения более правдоподобным — для этого достаточно увеличить значение параметра SpeedRandom (Случайная скорость), определяющего границы диапазона, в котором скорость частиц будет меняться, например, до 5 (рис. 16).
Рис. 16. Настройка случайного изменения скорости частиц
А теперь попробуем сделать так, чтобы частицы испускались не из одной точки, а с некоторой поверхности. Создайте NURBS-куб и выделите его верхнюю грань (рис. 17), а затем воспользуйтесь командой Particles=>EmitfromObject (Частицы=>Испускать с поверхности объекта). В итоге поверхность превратится в источник частиц, в чем несложно убедиться, запустив проигрывание анимации (рис. 18). Обратите внимание, что назначение поверхности эмиттером привело к появлению нового эмиттера и новой системы частиц, при этом новый эмиттер представляет собой объект, дочерний к верхней поверхности куба (рис. 19). Изначально частицы с поверхности испускаются во всех направлениях. Попробуем сделать так, чтобы частицы вылетали строго в одном направлении от поверхности (точнее, строго вверх по нормали к ней), — для этого выделите эмиттер и в окне каналов измените его тип на Surface (параметр Emitter Type). Частицы станут вылетать так, как необходимо (рис. 20).
Рис. 17. Выделение верхней грани куба
Рис. 18. Вид частиц в некоторых кадрах анимации при всенаправленном испускании
Рис. 19. Окно Outliner с новым эмиттером и новой системой частиц
Рис. 20. Вид частиц в некоторых кадрах анимации при однонаправленном испускании