Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo...
-
Upload
arcangelo-graziano -
Category
Documents
-
view
222 -
download
5
Transcript of Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo...
![Page 1: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/1.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Bouncing Balls
Obiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravità, attrito, urti tra particelle...)
![Page 2: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/2.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Impostazione lavoro
Adotteremo un approccio incrementale, aggiungendo feature ad ogni nuova versione
Caratteristiche iniziali oggetti: Dimensione Posizione VelocitàCaratteristiche iniziali ambiente: Gravità
![Page 3: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/3.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Struttura sketchClasse Ball descrive le palline e i loro
movimenti nello spazioMain definisce le proprietà
dell'ambiente tiene traccia delle palline in esso contenute tramite una lista dinamica
Alcune variabili di supporto: t: durata in s di un frame
(1/frameRate) ppm: pixel per metro
![Page 4: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/4.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Simulazione fisica - motoPresenza di gravità → moto accelerato
In realtà conviene risolvere l'accelerazione come cambio di velocità istantanea, considerando uniforme il moto tra un frame e il successivo
x= x0v 0 t12at 2
v=v 0at x= x0vt
![Page 5: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/5.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
La classe PVectorInserita nelle ultime versioni di
Processing all'interno della libreria standard, permette di gestire in maniera facile e veloce i calcoli vettoriali (sia 2D che 3D)
Moto pallina in 2 righe di codice! :)Void move(PVector field, float t) {
vel.add(PVector.mult(field,t));
pos.add(PVector.mult(vel,ppm*t));
}
![Page 6: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/6.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Versione 0: ultimi ritocchiAggiunta di semplice interazione:• Mouse click sx → crea pallina
Definizione di un limite superiore al numero di palline presenti (maxBalls)
CODICE
![Page 7: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/7.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Gestione collisioniDue possibili approcci:• A priori → Calcolo preciso dell'urto
con equazioni differenziali PRIMA che esso avvenga
• A posteriori → Gestione urto DOPO che esso è avvenuto
Ci concentreremo sul secondo poiché di più facile trattazione
![Page 8: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/8.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto con le paretiSe la distanza tra il centro della pallina
e la parete è inferiore al raggio, la componente della velocità perpendicolare alla parete viene invertita di segno e moltiplicata per un coeff. tra 0 e 1, che regola l'elasticità dell'urto
v n=−v n0⋅k bounce
![Page 9: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/9.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Fix upFase fondamentale nella collision
response a posteriori, corregge la compenetrazione tra oggetti (che è già avvenuta)
Parte delicatissima, nonché fonte di instabilità e comportamenti indesiderati
In genere si tratta di un processo per tentativi ed errori, alla ricerca di un risultato sufficientemente verosimile
![Page 10: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/10.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Rotolamento contro le paretiOgni volta che la pallina si trova in
contatto con una parete, la componente della velocità parallela alla parete viene decrementata del suo valore moltiplicato per un coefficiente d'attrito tra 0 e 1
v p=v p0−v p0⋅k roll
![Page 11: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/11.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Versione 1: ultimi ritocchiAggiunta rotazione del campo
gravitazionale
Aggiunta di un semplice puntatore triangolare per indicare la direzione del campo gravitazionale
CODICE
![Page 12: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/12.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto tra particelleE' la parte più complessa, sia a livello
concettuale che computazionalePer ogni pallina si calcola la distanza
con ogni altra pallina, e se essa è minore della somma dei raggi c'è una collisione
La complessa interazione tra gli oggetti è approssimata calcolando singolarmente gli urti per ogni coppia di palline
![Page 13: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/13.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto elastico (masse uguali)E' la parte più complessa, sia a livello
concettuale che computazionalePer ogni pallina si calcola la distanza
con ogni altra pallina, e se essa è minore della somma dei raggi c'è una collisione
La complessa interazione tra gli oggetti è approssimata calcolando singolarmente gli urti per ogni coppia di palline
![Page 14: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/14.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto elastico (masse uguali)1. E' comodo cambiare sistema di
riferimento e considerare fermo uno dei due oggetti, sottraendo la sua velocità a entrambe le entità in gioco
![Page 15: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/15.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto elastico (masse uguali)2. La velocità dell'oggetto in moto viene
scomposta rispetto all'angolo di incidenza dell'urto
![Page 16: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/16.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto elastico (masse uguali)3. La componente normale è la velocità
finale dell'oggetto inizialmente fermo, mentre l'altra componente è la velocità finale dell'oggetto in collisione
![Page 17: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/17.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
Urto elastico (masse uguali)4. Occorre infine tornare al vechio
sistema di riferimento, aggiungendo a entrambi gli oggetti la velocità iniziale di quello che avevamo “fermato”
CODICE
![Page 18: Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:](https://reader036.fdocument.pub/reader036/viewer/2022062701/5542eb57497959361e8c1c1a/html5/thumbnails/18.jpg)
Corso di Laurea in Comunicazione DigitaleCorso di Realtà Virtuali - a.a. 2009/10Prof. Paolo PasterisTutor: Stefano Baldan
Bouncing Balls
E se le masse non sono uguali?Se l'urto è elastico ma le masse non
sono uguali, allora è il momento che si conserva, mentre consideriamo fermo il centro di massa
Per ulteriori approfondimenti:http://en.wikipedia.org/wiki/Center_of_momentum_frame
CODICE FINALE