Введение

Техника в физике игр, графике движения и компьютерной графике.
3D-компьютерная графика.

Система частиц — это техника в физике игр, графике движения и компьютерной графике, использующая множество мелких спрайтов, 3D-моделей или других графических объектов для имитации определенных видов "размытых" явлений, которые сложно воспроизвести обычными методами рендеринга. Обычно это высокохаотичные системы, природные явления или процессы, вызванные химическими реакциями. Впервые представленная в фильме 1982 года «Звёздный путь II: Гнев Хана» для изображения вымышленного «эффекта Бытия», другие примеры включают имитацию огня, взрывов, дыма, движущейся воды (например, водопада), искр, падающих листьев, обвалов, облаков, тумана, снега, пыли, хвостов метеоритов, звёзд и галактик, или абстрактных визуальных эффектов, таких как светящиеся следы, магические заклинания и т. п. – в них используются частицы, которые быстро исчезают и затем повторно излучаются из источника эффекта. Другая техника применяется для объектов, состоящих из множества волокон, таких как шерсть, волосы и трава, и предполагает отрисовку всего времени жизни частицы сразу, после чего она может быть отрисована и обработана как единичное волокно материала. Системы частиц определяются как группа точек в пространстве, управляемая набором правил, определяющих поведение и внешний вид. Системы частиц моделируют явления как облако частиц, используя стохастические процессы для упрощения определения динамических систем и механики жидкостей, которые сложно представить с помощью аффинных преобразований.

Стадия выброса

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

Этап моделирования

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

Стадия рендеринга

После завершения обновления каждая частица отрисовывается, как правило, в виде текстурированного билборда – квадрилатера, всегда ориентированного к зрителю. Однако, это не всегда необходимо в играх; частица может быть отрисована как одиночный пиксель в средах с низким разрешением или ограниченной вычислительной мощностью. Напротив, в моушн-графике частицы обычно представляют собой полноценные, но небольшие и легко отрисовываемые 3D-модели, чтобы обеспечить высокую детализацию даже при высоком разрешении. Частицы могут быть отрисованы в виде метаболов при оффлайн-рендеринге; изоповерхности, вычисленные на основе метаболов частиц, создают весьма реалистичные жидкости. Наконец, 3D-модели могут использоваться вместо частиц – например, снежная буря может состоять из одной 3D-модели снежинки, которая дублируется и вращается для соответствия позициям тысяч или миллионов частиц.

Таксономия систем частиц

В 1983 году Ривз определил только анимированные точки, создавая симуляции движущихся частиц – искры, дождь, огонь и т.п. В этих реализациях каждый кадр анимации содержит каждую частицу в определенной точке ее жизненного цикла, и каждая частица занимает единичную точечную позицию в пространстве. Для эффектов, таких как огонь или дым, которые рассеиваются, каждой частице задается время затухания или фиксированный срок жизни; в то время как эффекты, такие как снегопады или дождь, обычно прекращают существование частицы, как только она выходит за пределы определенного поля зрения. В 1987 году Рейнольдс представил концепции стайного поведения, поведения стада или косяка. Модель «Боиды» расширила симуляцию частиц, включив в нее внешние взаимодействия, такие как поиск цели, избежание столкновений, центрирование стаи и ограниченное восприятие. В 2003 году Мюллер расширил системы частиц до области гидродинамики, моделируя вязкость, давление и поверхностное натяжение, а затем отрисовывал поверхности, интерполируя дискретные позиции с использованием метода сглаженной гидродинамики частиц.

Удобные для разработчика инструменты системы частиц

Код систем частиц, который можно включить в игровые движки, системы создания цифрового контента и приложения для создания эффектов, можно написать с нуля или скачать. Havok предоставляет несколько API систем частиц. Их Havok FX API особенно ориентирован на эффекты частиц. Ageia, теперь дочерняя компания Nvidia, предоставляет API для систем частиц и другой игровой физики, который используется во многих играх, включая игры на Unreal Engine 3. И GameMaker Studio, и Unity предоставляют двухмерную систему частиц, которую часто используют независимые разработчики, любители или студенты, хотя её нельзя импортировать в другие движки. Существует множество других решений, и системы частиц часто пишутся с нуля, если требуются нестандартные эффекты или поведение.