140 likes | 278 Views
GENERATOR DE PARTICULE Proiect SPG. Studenti : Carmen Sosoiu, Mircea Barbulescu Grupa : 341 C4. Ce este un sistem de particule?. O colectie de un numar mare de primitive ce modeleaza fenomene sau obiecte cu o forma “fuzzy” Ce este o particula “primitiva” ?
E N D
GENERATOR DE PARTICULE Proiect SPG Studenti : Carmen Sosoiu, Mircea Barbulescu Grupa : 341 C4
Ce este un sistem de particule? • O colectie de un numar mare de primitive ce modeleaza fenomene sau obiecte cu o forma “fuzzy” • Ce este o particula “primitiva” ? • orice : frunza, picatura, flacara, stea • Folosite in simularea ploii, focului, exploziei, ninsorii etc • Procesate ca un intreg sub niste legi fizice impuse • Sunt definite de niste parametrii precum : • viata particula, gravitatie, viteza, culoare, • numar de particule
Principiul de functionare al sistemelor de particule • Un numar ales de particule sunt initializate cu niste parametrii, cel mai relevant fiind cel de viata. • Acestea se vor misca atata timp cat au "viata" • Particulele moarte sunt reciclate, reinitializate cu aceiasi parametrii, sau cu altii, si vor reintra in • sistem.
Despre Proiect • Proiectul este un generator si editor de particule ce simuleaza urmatoarele efecte: • Foc • Ploaie • Ninsoare • Bule de sapun • Ceata • Explozie • Artificii • Fantana • Magic Sparkles in spirala
Structuri de date(1) • Sistemul de particule este compus din mai multe structuri de tip particula • Sistemul este descris de urmatorii parametrii : • nr particule • slowdown • gravitatie • fade • textura • culoare • dimensiune particule
Structuri de date(2) • Particula este descrisa de urmatorii parametrii : • activa • pozitie • factor de deplasare (directie) • viteza • viata • culoare • dimensiune particule
Ciclul de viata al particulelor • if(life<=0) • life = life_new • pozitia.xyz = pozitia.xyz_new (fie random, fie fixa) • factor de deplasare.xyz = xspeed/yspeed + new_val (fie random,fie fixa) • while(life>0) • pozitia.xyz += factor de deplasare.xyz/(slowdown * 1000) • factor de deplasare.xyz += gravitate.xyz • life -= fade
Implementare: Foc • gravitatie.y pozitiva • particulele pornesc din aceeasi pozitie • life random • life mic => focul mocneste, dimensiune mica • factor de deplasare random • viteza mare => focul arde puternic, intetit, flacarile sunt aruncate mai departe • fade particule
Implementare: Ploaie si Ninsoare • gravitatie.ynegativa / aprox cu 0 • particulele pornesc dintr-o pozitie x random dintr-un plan aflat la un y setat • life random • factor de deplasare random (doar pe y) • viteza.y setata • nu se face fade particule / se face fade particule
Implementare: Bule si Ceata • gravitatie.y0 • pozitie intiala random intr-un volum • life random mica / foarte mare • factor de deplasare.xyz random • nu se face fade particule / se face fade particule
Implementare: Explozie si Artificii • gravitatie.y0 • pozitie intiala random intr-un volum • factor de deplasare.xyz random, in forma sferica • fade particule • explozie : realizata in 3 faze distincte : • explozie foc • fum • scantei
Implementare: Fantana • gravitatie.ynegativa • particulele pornesc din aceeasi pozitie • life fix • viteza.y mare => fantana arunca picaturile mai sus • realizata din 3 jeturi de apa (cu viteza.x diferite) • nu se face fade particule
Implementare: Magic Sparkles • gravitatie.y0 • particulele pornesc din aceeasi pozitie • life random mare • se aplica o functie matematica pe una din coordonate • cu o raza data explicit • nu se face fade particule
Intrebari? (urmeaza test run)