Система частиц — это метод в игровой физике , динамической графике и компьютерной графике , который использует множество мельчайших спрайтов , 3D-моделей или других графических объектов для моделирования определенных видов «размытых» явлений, которые в противном случае очень трудно воспроизвести с помощью традиционных методов рендеринга — обычно это крайне хаотичные системы, природные явления или процессы, вызванные химическими реакциями.
Представленный в фильме 1982 года «Звездный путь II: Гнев Хана» для вымышленного «эффекта Бытия», [1] другие примеры включают воспроизведение явлений огня , взрывов , дыма , движущейся воды (например, водопада), искр , падающих листьев, камнепадов, облаков , тумана , снега , пыли , метеорных хвостов, звезд и галактик или абстрактных визуальных эффектов, таких как светящиеся следы, магические заклинания и т. д. — они используют частицы, которые быстро затухают, а затем повторно испускаются из источника эффекта. Другой метод может использоваться для вещей, которые содержат много нитей, таких как мех, волосы и трава, — включая визуализацию всей жизни частицы за один раз, которая затем может быть нарисована и обработана как одна нить рассматриваемого материала.
Системы частиц определяются как группа точек в пространстве, управляемая набором правил, определяющих поведение и внешний вид. Системы частиц моделируют явления как облако частиц, используя стохастические процессы для упрощения определения динамической системы и механики жидкости , которые трудно представить с помощью аффинных преобразований . [2]
Системы частиц обычно реализуют следующие модули:
Эмиттер реализует скорость появления (сколько частиц генерируется за единицу времени), начальный вектор скорости частиц (направление, в котором они испускаются при создании). При использовании объекта-сетки в качестве эмиттера начальный вектор скорости часто устанавливается нормальным к отдельной грани(ям) объекта, из-за чего частицы кажутся «распыляющимися» непосредственно с каждой грани, но это необязательно.
На этапе моделирования количество новых частиц, которые должны быть созданы, рассчитывается на основе скорости появления и интервала между обновлениями, и каждая из них появляется в определенном положении в трехмерном пространстве на основе положения излучателя и указанной области появления. Каждый из параметров частицы (например, скорость, цвет и т. д.) инициализируется в соответствии с параметрами излучателя. При каждом обновлении все существующие частицы проверяются на предмет превышения срока их службы, в этом случае они удаляются из моделирования. В противном случае положение частиц и другие характеристики изменяются на основе физического моделирования, которое может быть таким же простым, как перевод их текущего положения, или таким же сложным, как выполнение физически точных расчетов траектории, которые учитывают внешние силы (гравитация, трение, ветер и т. д.). Обычно выполняется обнаружение столкновений между частицами и указанными трехмерными объектами в сцене, чтобы частицы отскакивали или иным образом взаимодействовали с препятствиями в окружающей среде. Столкновения между частицами используются редко, так как они требуют больших вычислительных затрат и визуально нерелевантны для большинства симуляций.
После завершения обновления каждая частица визуализируется, обычно в форме текстурированного билборда (т. е. четырехугольника, который всегда обращен к зрителю). Однако иногда это не нужно для игр; частица может визуализироваться как один пиксель в средах с малым разрешением /ограниченной вычислительной мощностью. Напротив, частицы в динамической графике, как правило, представляют собой полные, но маломасштабные и простые в визуализации 3D-модели, чтобы гарантировать точность даже при высоком разрешении. Частицы могут визуализироваться как метаболы при офлайн-рендеринге; изоповерхности, вычисленные из частиц-метаболов, создают довольно убедительные жидкости. Наконец, трехмерные сетчатые объекты могут «замещать» частицы — снежная буря может состоять из одной трехмерной сетки снежинки, дублируемой и вращаемой для соответствия положениям тысяч или миллионов частиц. [3]
В 1983 году Ривз определил только анимированные точки, создав движущиеся симуляции частиц — искры, дождь, огонь и т. д. В этих реализациях каждый кадр анимации содержит каждую частицу в определенном положении в ее жизненном цикле, и каждая частица занимает одну точку в пространстве. Для таких эффектов, как огонь или дым, которые рассеиваются, каждой частице дается время затухания или фиксированное время жизни; такие эффекты, как снежные бури или дождь, вместо этого обычно прекращают жизнь частицы, как только она выходит из определенного поля зрения . [1]
В 1985 году Ривз расширил концепцию, включив в нее визуализацию всего жизненного цикла каждой частицы одновременно, в результате частицы преобразуются в статические нити материала, которые показывают общую траекторию, а не точки. Эти нити можно использовать для имитации волос, меха, травы и подобных материалов. Нити можно контролировать с помощью тех же векторов скорости, силовых полей, скоростей появления и параметров отклонения, которым подчиняются анимированные частицы. Кроме того, визуализируемая толщина нитей может контролироваться и в некоторых реализациях может изменяться по длине нити. Различные комбинации параметров могут придавать жесткость, вялость, тяжесть, щетинистость или любое количество других свойств. Нити также могут использовать текстурное отображение для изменения цвета, длины или других свойств нитей по всей поверхности излучателя. [4]
В 1987 году Рейнольдс вводит понятия стадного , стадного или косячного поведения. Модель boids расширяет моделирование частиц, включая внешние взаимодействия состояний, включая поиск цели, избегание столкновений, центрирование стаи и ограниченное восприятие. [5]
В 2003 году Мюллер расширил системы частиц до струйной техники, моделируя вязкость , давление и поверхностное натяжение , а затем визуализировал поверхности, интерполируя дискретные положения с помощью сглаженной гидродинамики частиц . [6]
Код систем частиц, который может быть включен в игровые движки, системы создания цифрового контента и приложения эффектов, может быть написан с нуля или загружен. Havok предоставляет несколько API систем частиц. Их API Havok FX фокусируется в основном на эффектах систем частиц. Ageia — теперь дочерняя компания Nvidia — предоставляет систему частиц и другой API игровой физики, который используется во многих играх, включая игры Unreal Engine 3. И GameMaker Studio , и Unity предоставляют двухмерную систему частиц, часто используемую инди -разработчиками , любителями или студентами-разработчиками игр, хотя ее нельзя импортировать в другие движки. Существует также много других решений, и системы частиц часто пишутся с нуля, если требуются нестандартные эффекты или поведение.
{{cite book}}
: CS1 maint: дата и год ( ссылка )