Video Game Dev 2015/2016 Università dell’Insubria
Particle systems
Marco Tarini
Particle systems:
un tipo di Modelli 3D
Rapresentazioni digitali di oggetti 3D…
non facilmente descrivibili attraverso la loro superficie
molto dinamici (topologia variabile)
…come:
nuvole, nuvole di polvere fiamme, esplosioni
spruzzi d’acqua, cascate, getti
pioggia, neve, vento (che porta pulviscoli) sbuffi di vapore, polvere sollevata da passi effetti visuali astratti (di incantesimi, etc) sciame di mosche
scintille, fuochi d’artificio fumo, nuvole, etc…
(aka particle effects)
Sistema di particelle:
insieme di particelle
1 particella rappresenta
una goccia d’acqua, una scintilla di fiamma, una goccia di pioggia, uno sbuffetto di fumo…
stato
di una particella
include: pos, vel, durata rimanente di vita, … e/o anche custom variables: size, temperatura … altre cose riferibili all’aspetto (colore, orientamento …)
vengono emesse dinamicamente
da un «emitter»
vengono distrutte dinamicamente variano dinamicamente stato
secondo criteri prestabiliti
Emitters & Particles
Emitter (plane)
Emitters Particles
Emitter
Il produttore di particelle
è in un nodo nello scene graph
cioè: è posizionato nella scena da una trasformazione cioè: è dotato del proprio spazio oggetto
posizionare e orientare il sistema di particelle
<==>
posizionare e orientare il suo emitter
emette particellesecondo un criterio stabilito…
in posizione pseudo-casuale al proprio interno con una distr. di prob data
generata nel proprio spazio oggetto ad un rate stabilito (num/sec) con uno stato iniziale (es initial vel)
…per un intervallo di tempo stabilito
es: breve (es. esplosione) o medio (es. sangue da ferita) o lungo (es. colonna di fumo)
o indefinitito (es acqua da rubinetto, fiamma da torcia…) La fiammata, l’esplisione, il getto d’acqua…
Forma dell’emitter
Astrazione geometrica utile a guidare la creazione delle particelle
particella creata in una posizione
pseudocasuale all’interno di questa forma stato particella: inizializzato con dati espressi in spazio mondo
es, fumo: vel preponderante in dir Z spazio mondo oppure in spazio emitter
es, fiammata del motore: in dir Z spazio emitter
Sfera, cono, box, piano, punto…
Computo dell’evoluzione del sist di part
Task del Physic Engine
Semplificato (rispetto agli altri oggetti fisici)
numerosità delle particelle elevata!
(10^1 – 10^5)
Computo progresso particelle:
Numerico: stato( t+dt ) F( stato(t) ) Analitico: stato( t ) F( t )
Computato in: spazio emitter, o spazio mondo Particelle possono interagire con (oppure no!)
altre particelle (es. coesione):
expensive! usually, not ambiente (collisions):
se sì: o solo parti statiche della scena, o anche dinamiche se dinamiche: “one way” (di solito), o “two ways” (raro)
Esempio
semplificato in C++
class Particle{
vec3 pos;
vec3 vel;
float life; // how much longer to live ...
}
class ParticleSystem{
std::vector< Particle > particles;
void evolve( float dt );
void render();
void init( vec3 p );
}
Rendering
del Sistema di Particelle
Modo 1: ogni particella resa separatemente, attraverso:
una primitiva base
un point splat / un segmento…
un piccolo modello 3D
pochi (o un!) poligoni, maybe textured un impostor , cioè
un piccolo quad
orientato verso l’osservatore (oppure no) con texture (animate, oppure no)
e.g. alpha maps + RGB maps
il caso di più comune
Textured impostors
for particle rendering
Textured impostors for particle rendering
Rendering
del Sistema di Particelle
Modo 2: multipassata
passata 1:
splat di un di “blob” temporaneo per particella (solo nel depth buffer)
passata 2:
stima in spazio schermo normale dell’unione dei “blob”
passata 3:
rendering della superficie risultante
Authoring dei
sistemi di particelle
Task del curatore di effetti --
fx specialistSpecifica dei criteri e modalità di
creazione
+ evoluzione particelle
attraverso:
programmazione di appositi script, oppure
specifica di insieme di parametri predefiniti (dal motore)
Specifica dell’aspetto delle particelle
texturesper impostors, o piccoli modelli 3D, o parametri dello splat, etc
Non esiste uno standard
ogni game engine ha il suo sistema, il suo formato di file, etc
Particle systems:
cosmetics o gameplay?
Di solito, solo coating grafico
interazioni fisiche: one-way no effect on collision
no effect on gameplay