OpenGL Particle System

Slides:



Advertisements
Presentazioni simili
Dipartimento di Informatica ITIS Leonardo da Vinci Carpi 2011
Advertisements

Introduzione al linguaggio R
Strutture dati per insiemi disgiunti
Laboratorio Processi Stocastici
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
2. Introduzione alla probabilità
Prof. Roberto Capone Dinamica del punto materiale
Introduzione al linguaggio R
Tipi di dato astratti Lista, Pila, Coda, Albero.
Strutture dati lineari
PUNTATORI Introduzione
Universita di Camerino
Matematica I: Calcolo differenziale, Algebra lineare, Probabilità e statistica Giovanni Naldi, Lorenzo Pareschi, Giacomo Aletti Copyright © The.
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Introduzione al linguaggio C
Le funzioni.
Elettrostatica 3 23 maggio 2011
Lez. 131 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Rappresentazione.
L4 - MECCANICA: STUDIO DEL MOTO
La ricerca descrittiva è…
Memoria virtuale Memoria virtuale – separazione della memoria logica dell’utente dalla memoria fisica. Solo alcune parti di un programma devono trovarsi.
Interfaccia del file system
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Funzione di distribuzione (detta anche cumulativa o di ripartizione)
3. Processi Stocastici Un processo stocastico è una funzione del tempo i cui valori x(t) ad ogni istante di tempo t sono v.a. Notazione: X : insieme di.
Root Stefano Lacaprara (slides rubate a Tommaso Boccali)
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Capitolo 9 I numeri indici
Esame di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Marco Bacer 12 gennaio 2009.
ATTENZIONE ! per visualizzare le formule occorre avere installato l’Equation Editor di Office oppure il programmino Math Type ...
Flusso Flusso del campo elettrico Superficie aperta Superficie chiusa
Costruzione di Interfacce Lezione 5 Trasformazioni Affini
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Le forze conservative g P2 P1 U= energia potenziale
La forza di gravitazione universale è conservativa
Il principio di Pascal afferma che
Strumentazione usata:
ONDE ELETTROMAGNETICHE
Tabelle hash.
Introduzione al linguaggio R
memoria gestita staticamente:
Esperimentazioni di fisica 3 AA 2010 – 2011 M. De Vincenzi
I File.
SELECT STATEMENT Clausola WHERE permette di limitare il numero di record da estrarre SELECT */ [DISTINCT] colonna/ espressione [alias],… FROM table [WHERE.
Smoothing Daniele Marini.
1 Programmazione grafica 1 Daniele Marini. 2 Linguaggio di riferimento OpenGL: libreria di procedure che realizza un API (application programmers interface)
Metodo della moltiplicazione
Strutture dati per insiemi disgiunti
Corso di informatica Athena – Periti Informatici
4 Fluorescenza in stato stazionario
Parte 1 Introduzione alla Teoria dei Circuiti
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Unita’ Naturali.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Script 1 Marco D. Santambrogio – Ver. aggiornata al 2 Dicembre 2013.
Elettromagnetismo 2. Il campo elettrico.
3. La relatività generale
Reti di TLC Esercitazione 3
Lavorare con le query Federica Scarrione 18/05/2009 fonte:
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
TERZA LEGGE DI KEPLERO:. Legge di Keplero: Considerando la terza legge di Keplero ci apprestiamo a calcolare la costante per i pianeti de sistema.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
Simulazione Interattiva di Capelli Marta De Cinti Anno accademico 2005/2006 Università di Roma “La Sapienza” Relatore Prof. Marco Schaerf Correlatore Ing.
Computer Graphics Marco Tarini Università dell’Insubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 Lezione.
1 Lezione VII – seconda parte Avviare la presentazione col tasto “Invio”
Campo Elettrico Definizione operativa di campo elettrico: Il vettore campo elettrico associato ad una determinata carica sorgente Q, posta in un.
Transcript della presentazione:

OpenGL Particle System 2008 Riccardo Petelin – EGD prof. Matjaž Hmeljak

Cos’è? A cosa serve? E’ un modello matematico per rappresentare su calcolatore fenomeni naturali con particolari caratteristiche Sono fenomeni in cui è possibile individuare una sorgente e un numero molto grande di costituenti elementari Esempi tipici sono i fuochi d’artificio, le esplosioni, le fontane, la scia di un aereo…

Quake II (ID software 1997)

Qual è l’idea? Molti fenomeni naturali sono costituiti da un numero arbitrariamente grande di costituenti elementari (particelle) Ogni particella ha un comportamento nello spazio e un ciclo di vita descritti da una variabile aleatoria con densità di probabilità nota e dipendente del fenomeno da modellare Ogni realizzazione del modello è quindi sempre diversa ma tutte le particelle “nascono” dalla stessa sorgente

Come si realizza? X, Y, Z sono variabili aleatorie. Nella mia realizzazione ho usato la distribuzione di probabilità uniforme, ma qualsiasi altra distribuzione andrebbe ugualmente bene. Y Y Y X X Z X Z E’ possibile inserire forze esterne che agiscono sulle particelle, come la gravità. Z T=1 T=2 T=0

Come si realizza in OpenGL? Nel mio esempio ho utilizzato le liste concatenate (facendo uso dei puntatori, tipici del C) Esempi più complessi fanno uso dei Vertex array (o Vertex buffer), ma la realizzazione è analoga

Come si realizza in OpenGL? Ogni particella ha una posizione, un vettore direzionale e un tempo di vita. Particle(float x, float y, float z, float r, float g, float b) { // set position position[0] = x; position[2] = y; position[1] = z; // set color color[0] = r; color[1] = g; color[2] = b; // create random direction direction[0] = (10000 - rand()%20000)/10000.0f; direction[1] = (10000 - rand()%20000)/10000.0f; direction[2] = (10000 - rand()%20000)/10000.0f; // set random lifespan life = rand()%15000/9500.0f; } Dopo ogni istante questi valori possono venire aggiornati in base al fenomeno da modellare

Come si realizza in OpenGL? Ad ogni istante si creano nuove particelle che vengono appese in cima alla lista Le particelle con tempo di vita < 0 devono essere periodicamente eliminate da un garbage collector, e la struttura della lista deve essere aggiornata di conseguenza Esplorando la lista è possibile disegnare tutte le particelle nella loro posizione corrente

Gli effetti In base ai valori intrinseci di ogni particella è possibile applicare degli effetti in fase di disegno. Esempio: Quando il tempo di vita è prossimo allo 0 agisco sull’alpha channel per creare una dissolvenza The image is created by John Tsiombikas, using the free-software 3D visualization system (http://engfx3d.berlios.de) and placed in the public domain.

Ricapitolando Esempio: Un possibile modello matematico per i fireworks potrebbe essere (X,Y,Z) unif. su tutto [0,1]3, T gaussiana con m=3 secondi

Appendice: uso di FrameTimer Estensione di terze parti che serve a garantire un frame rate costante indipendente dalla dimensione della finestra di visualizzazione Si include “FrameTimer.h” e si usano i 3 metodi: InitFrameTimer(); SortFrameTimer(); FrameTime(); In pratica FrameTime() fornisce il valore del differenziale dt calcolato secondo l’orologio di sistema, che è proporzionale al frame rate

Ringraziamenti e Bibliografia Rob Bateman, An introduction to Particle Systems (http://www.robthebloke.org/) EGD3D_26X1SFERA.cpp Materiale fornito durante il corso prof. Matjaž Hmeljak The Particle Systems API - David K. McAllister