Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoArcangelo Graziano Modificato 11 anni fa
1
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo: creazione di un sistema particellare con simulazione di alcuni parametri fisici (gravità, attrito, urti tra particelle...)
2
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: 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à
3
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Struttura sketch Classe Ball descrive le palline e i loro movimenti nello spazio Main 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
4
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Simulazione fisica - moto Presenza 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
5
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls La classe PVector Inserita 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)); }
6
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Versione 0: ultimi ritocchi Aggiunta di semplice interazione: Mouse click sx crea pallina Definizione di un limite superiore al numero di palline presenti ( maxBalls) CODICE
7
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Gestione collisioni Due 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
8
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Urto con le pareti Se 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
9
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Fix up Fase 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
10
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Rotolamento contro le pareti Ogni 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
11
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Versione 1: ultimi ritocchi Aggiunta rotazione del campo gravitazionale Aggiunta di un semplice puntatore triangolare per indicare la direzione del campo gravitazionale CODICE
12
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Urto tra particelle E' la parte più complessa, sia a livello concettuale che computazionale Per 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
13
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Urto elastico (masse uguali) E' la parte più complessa, sia a livello concettuale che computazionale Per 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
14
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: 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
15
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Urto elastico (masse uguali) 2. La velocità dell'oggetto in moto viene scomposta rispetto all'angolo di incidenza dell'urto
16
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: 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
17
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: 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
18
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: 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_fram e CODICE FINALE
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.