Системы частиц
Автор: Alena Категория: Программист
Очень многие приятные эффекты я делала с помощью систем частиц. Системы частиц - это интересный способ создания спецэффектов. Собрав вместе несколько очень маленьких элементов, называемых частицами, и задав им некоторое поведение, можно получить огонь, дым, воду и другие эффекты. Примерами систем частиц в реальной жизни могут служить салют, искры сварки.
У меня каждая частица представляет собой billboard - квадрат, состоящий из двух треугольников, всегда повернутый лицом к камере. На него натянута текстура частицы. На современных видеокарточках вместо квадратов есть возможность использовать точечные спрайты (point sprites). Но поскольку я хочу, чтобы игра хорошо выглядела на как можно более большом числе видеокарт, я использую старый добрый способ с billboard’ами и ничего про точечные спрайты рассказать не могу. Для получения того же салюта надо пачку таких ярко раскрашенных частиц выбросить вверх, сымитировов при этом силу тяжести. Салют мне не нужен, мне нужны постоянно клубящиеся эффекты типа дыма, поэтому я частицы выбрасываю постоянно с некой заданной периодичностью и дальше каждая частица продолжает свою жизнь в зависимости от того, какой системе частиц она принадлежит.
Как это реализовано в коде: все системы частиц являются наследниками одного абстрактного класса частиц, все они обязаны переопределить функцию, отвечающую за траекторию движения. Все остальные параметры, такие как цвет частицы, скорость ее движения, скорость увядания и т.п. не зашиты в код, Джим их проставляет в конфиге.
Делать системы частиц сравнительно просто, а выглядит очень достойно. Вот эффекты, получившиеся в результате

Пар из труб

Дым
Про пыль за машиной я уже рассказывала.
Был эффект, требование к которому Джим сформулировал как “гламурное свечение”. Вот один из его вариантов. Джим остался доволен.

Очень гламурно, имхо.


А исходник абстрактного класса можно?
Автор: Alena (12.01.05, Декабрь 1, 2005, 17:48)Мы решили все-таки не выкладывать исходники в каком-либо виде.
Но, честно говоря, я не знаю как исходник этого класса может пригодиться кому-нибудь кроме меня. Если хочется поподробнее посмотреть реализацию систем частиц, то есть пример в DirectX SDK, есть примеры систем частиц с исходниками на gamedev.net, мне там особенно Particle Chamber нравится.
Автор: Atz (01.04.06, Январь 4, 2006, 1:10)Самый интересный вопрос: сколько там частиц, в этом тумане? На картинках раз, два и три?
Автор: Atz (01.04.06, Январь 4, 2006, 1:11)PS. Кстати, если смотреть близорукими глазами примерно с метра, то картинка номер два - это нечто порнографическое )
Автор: Jim (01.04.06, Январь 4, 2006, 12:17)Частиц много. Сколько конкретно на каждом участке - хрен знает, у меня только общая калькуляция, счет идет на тысячи. А на картинках еще не самые “частичные” сцены. Я вообще неравнодушен к эффектам с частицами. После праздников займусь анимашками, покажу все в движении.
А на картинке номер два еще кой-чего не хватает на самом деле. Может тогда она уже не будет такой порнографической. Хотя с этой порнографией, если подумать, то чего не хватись… Дедушка Фрейд говорил, что вообще все в мире - от секса
Автор: Alena (01.04.06, Январь 4, 2006, 17:52)Как Джим уже сказал, нас более интересна цифра сколько частиц в кадре, а не сколько в каждой конкретной системе частиц. На тех уровнях, что мне передал Джим, около 1000.
:-)