Для задания панели будем использовать следующую команду:
billboard name {
texture texture-name
size sizeCoeff pos (x, y, z)
>
Данные параметры задают используемую текстуру, размер панели и ее положение в комнате.
Системы частиц
Еще одним достаточно простым эффектом являются системы частиц. | Системы частиц представляют собой динамические системы достаточно ] простых объектов, представленных обычно в виде панелей. Несмотря на то | что закон, описывающий всю систему, достаточно прост, с помощью такой | системы легко можно моделировать целый ряд сложных эффектов, включая дым, огонь, взрывы и т. п.
Таким образом, система частиц является частным случаем класса Visu- I alObject.
Система частиц состоит из постоянно обновляемого и анимируемого набора элементарных частиц. Каждая такая частица имеет положение в пространстве, скорость, массу, цвет, размер и текстуру. Поэтому удобно представлять отдельные частицы в виде экземпляров следующей структуры:
9
struct Particle {
Particle * next; // next particle in the list
Particle * prev; // previous particle in the list
// Physical & visual parameters
//of the particle Vector3D pos; // it's position
Vector3D velocity; // it's velocity float mass; // it's mass
Vector4D color; // it's color
float size; // it's size
float energy; Texture * texture;
float timeOfBirth;// time the particle was born
float lifeTime; // time the particle will live
float lastUpdateTime;
// time the particle was last updated
// check whether the particle should be killed bool isAlive ( float curTime ) const {
return (timeOfBirth + lifeTime >= curTime) && (size >= EPS) && (energy >= EPS);
}
void kill () // force particle to be killed
// during next update
Добавляем эффекты
{
lifeTime = -1;
}
} ;
При этом структура Particle содержит все необходимые атрибуты, присущие любой частице.
! Поля prev и next позволяют связать все частицы одной системы в дву-(связанный список.