Частицы в 3D графике: Particle Systems

Автор: Юрий Ильин

Что это такое?

Системы частиц - ещё один инструмент, который облегчает 3D-художникам жизнь (и сильно осложняет её компьютерам). В качестве примера можно привести — увы и ах — старые компьютерные игры, относящиеся к ранней эпохе 3D: если кто помнит, факельный огонь в Quake и Hexen II (обе игры построены на одном и том же движке) был реализован в качестве вращающихся светящихся многогранников, по форме «напоминающих» пламя. Сейчас, конечно, так никто не делает; для решения задач такого рода применяются т.н. частицы (particles).

Пламя в Quake (точнее, мод Dark Places): слева - в виде многогранников, справа - в виде частиц. Почувствуйте разницу.

Particle System — это технология массовой визуализации подобных объектов, в массе своей формирующих более крупномасштабные тела, не имеющие чётких геометрических границ (облака, дым/пар, взрывы, снег, дождь, огонь) и/или сыпучие тела (песок, зерно, пыль, волосы, трава).

То есть всего того, что визуализировать «стандартными методами» — через моделлинг — слишком сложно и просто нерационально: моделировать каждую травинку или каждый волос — лишняя трата времени и сил.

Математически каждая частица представляет собой материальную точку с назначенными атрибутами, как то: скорость, цвет, ориентация в пространстве, угловая скорость, и т. п. В ходе работы программы, моделирующей частицы, каждая частица изменяет своё состояние по определённому, общему для всех частиц системы, закону (физическому). Например, частица может подвергаться воздействию гравитации, менять размер, цвет, скорость (в том числе под внешним воздействием) и так далее; после проведения всех расчётов, частица визуализируется. Частица может быть визуализирована точкой, треугольником, спрайтом, или даже полноценной трехмерной моделью.

В целом, системы частиц - это достаточно экономный в плане трудозатрат способ реалистичной визуализации физических явлений. При этом единого стандарта реализации системы частиц в мире на данный момент не существует, и едва ли стоит ожидать её скорого появления, учитывая, что на рынке присутствует немало конкурирующих коммерческих пакетов для работы с частицами, и к тому же многие студии, занимающиеся компьютерной анимацией и спецэффектами для кино, пишут ещё и свои собственные решения. Например, на последнем CG Event представители студии A-VFX, рассказывая о мультфильме «Маша и Медведь», неоднократно подчёркивали наличие у них собственной технологии визуализации волос, с помощью которой в мультфильме были выполнены не только сами волосы/мех, но и трава и пр.

Пробный шар

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

Собственно, здесь - шарик с отражающей поверхностью, который одновременно выполняет роль «эмиттера", источника динамических частиц - разлетающихся во все стороны. Заданы количество (5000), время жизни частиц, количество кадров в анимации, направление их движения и коэффициент случайности - и вот разлетаются в разные стороны «белые мухи».

В качестве частиц могут выступать любые объекты, не исключая, кстати сказать, и сам эмиттер:



Частицы совершенно необязательно должны исчезать по окончании своего срока жизни. В Blender, например, можно задать как неограниченно долгий срок жизни частицы, так и назначить ей «бессмертие» - отбывшие свой срок частицы по-прежнему отображаются. В свою очередь, ещё "не родившиеся" частицы также могут отображаться с первого кадра.

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

Отдельного внимания заслуживают т.н. «статичные» частицы. Название говорит само за себя: статичные частицы используются для визуализации множества нитей, волокон и/или волос и меха. Рудиментарная реализация алгоритмов для визуализации меха присутствовала уже в Quake III, хотя и применялась предельно редко, поскольку крайне негативно сказывалась на быстродействии.

Ниже приведён видеоролик с «последствиями» выращивания волос из сферообразного эмиттера (который сам по себе не визуализируется — т.е. становится невидимым); в принципе, в качестве эмиттера может выступать любой объект, и в Blender частицы будут иметь тот же цвет, что и назначенный объекту материал.

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

просвещение
Разделы:
Рубрики:
Популярное: