Bouncing Balls

18
Corso di Laurea in Comunicazione Digitale Bouncing Balls Bouncing Balls Obiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravità, attrito, urti tra particelle...)

description

Bouncing Balls. Obiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravità, attrito, urti tra particelle...). Impostazione lavoro. Adotteremo un approccio incrementale, aggiungendo feature ad ogni nuova versione Caratteristiche iniziali oggetti: - PowerPoint PPT Presentation

Transcript of Bouncing Balls

Page 1: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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: Bouncing Balls

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