Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Slides:



Advertisements
Presentazioni simili
Ombre e riflessioni in tempo reale
Advertisements

Coordinate cartesiane, polari sferiche e polari cilindriche
Fisica 2 Elettrostatica
Esercizio 1 Un condensatore piano di area A=40 cm2 e distanza tra i piatti d=0.1 mm, e` stato caricato collegandolo temporaneamente ad un generatore di.
Esercizio 1 Un guscio sferico isolante di raggio R=0.1 m e spessore trascurabile, porta una carica positiva Q=1mC distribuita uniformemente sulla superficie.
I VETTORI di Federico Barbarossa
1 la Torre Berardino Force rendering & Collision detection Dipartimento di Ingegneria dellInformazione Siena Ore F1F1 F2F2.
ELETTROMAGNETISMO APPLICATO ALL'INGEGNERIA ELETTRICA ED ENERGETICA
Lezione 4) L’Equazione Iconale e la propagazione delle onde in mezzi disomogenei.
Sfere e cilindri: un viaggio nelle geometrie Progetto Elites 2005.
Studio del moto di una palla che rimbalza
“cassetta degli arnesi”
Esame di Elementi di Grafica Digitale Prof. Matjaz Hmeljak Marco Bacer 12 gennaio 2009.
Costruzione di Interfacce Lezione 4 Nozioni di geometria per la grafica
Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 30 MMeditor e collision detection
Velocità media Abbiamo definito la velocità vettoriale media.
G.M. - Informatica B-Automazione 2002/03 Funzione Indica una relazione o corrispondenza tra due o più insiemi che soddisfa ad alcune proprietà. Il dominio.
G. Pugliese, corso di Fisica Generale
Dinamica di corpi deformabili basata sulle posizioni
Corso di Laurea in Comunicazione Digitale Corso di Realtà Virtuali - a.a. 2009/10 Prof. Paolo Pasteris Tutor: Stefano Baldan Bouncing Balls Obiettivo:
ELETTROSTATICA NELLA MATERIA
Analisi delle corrispondenze
Modelli Globali Daniele Marini.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
1 Modelli Globali Radiosity Daniele Marini. 2 Radiosity Bilancio radiativo in un ambiente chiuso (senza scambio di energia con lesterno) Indipendente.
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
La Funzione Sinusoidale
Vettori Finche’ il moto si svolge in una sola dimensione – moto unidimensionale, moto rettilineo – non abbiamo bisogno di vettori La posizione e’ individuata.
Sistemi di riferimento
Modelli Globali: Ray Tracing
Daniele Marini, Maurizio Rossi
Texturing - Tessiture Daniele Marini.
Le ombre proiettate Daniele Marini.
1 Scan conversione di poligoni Daniele Marini. 2 Test interno-esterno Scan conversione di un poligono = decidere se pixel interno Test di intersezione:
2. Meccanica Fisica Medica – Giulio Caracciolo.
Superfici nascoste Daniele Marini.
1 Visualizzazione scientifica Daniele Marini. 2 Visualizzazione scientifica Trovare un modo per rendere i risultati di un calcolo scientifico, o rilevati.
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Intersezioni e distanze
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Intersezioni e distanze
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
1 Ottimizzazione della scena Daniele Marini. 2 Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici.
Ottimizzazione della scena Daniele Marini. Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici 2 Programmazione.
1 Ottimizzazione della scena Daniele Marini. 2 Esigenze del RT rendering maggiori frame /sec risoluzione più alta oggetti più accurati e realistici.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Intersezioni e distanze Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Ottimizzazione della scena Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Collisioni Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La Ricorsione Marco D. Santambrogio – Ver. aggiornata al 29 Maggio 2014.
LE MACRO.
LEZIONE 3 Istituto d’Istruzione Superiore
Il Campo Magnetico è tridimensionale RX RX TX Antenna RX.
LAVORO DI UNA FORZA Applicando una forza ad una massa se ne determina una variazione di stato di moto: se la massa è ferma, inizierà a muoversi; se si.
Simulazione Interattiva di Capelli Marta De Cinti Anno accademico 2005/2006 Università di Roma “La Sapienza” Relatore Prof. Marco Schaerf Correlatore Ing.
Prof. Giovanni Ianne I vettori.
Campo Elettrico Definizione operativa di campo elettrico: Il vettore campo elettrico associato ad una determinata carica sorgente Q, posta in un.
I GRAFICI – INPUT 1.
La Circonferenza. LA CIRCONFERENZA Assegnato nel piano un punto C detto Centro, si chiama circonferenza la curva piana con i punti equidistanti da C.
Cinematica del punto materiale Studia il moto dei corpi senza riferimento alle sue cause Il moto è completamente determinato se e` nota la posizione del.
Transcript della presentazione:

Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini

Campi applicazione praticamente tutto: giochi, CAD, realtà virtuale complessità elevata dipendente dalla complessità degli oggetti soluzioni approssimate e soluzioni esatte esigenze di real time Accresce il realismo di una simulazione grafica

Fasi determinare se c’e’ collisione collision detection - test sì/no determinare dove c’è collisione collision determination decidere cosa fare quando c’è collisione collision handling

Metodi principali metodi approssimati e veloci (ray tracing) basati su BSP tree basati su BV gerarchici basati su OBB tree basati su k-DOP tree

Metodo approssimato (ray tracing) es. un automobile che viaggia su una superficie: determinare collisione ruote –si dovrebbero analizzare tutte le ruote rispetto alla superficie –semplificare: rappresentiamo l’auto con un insieme di raggi - un raggio per ogni ruota, si testa l’intersezione dei raggi con la superficie

Metodo appross. con raggi - 2 all’inizio il raggio è posto sul punto di contatto ruota-superficie il raggio è diretto verticalmente a ogni passo si fa un test di intersezione raggio- superficie, se la distanza intersezione- origine_raggio è positiva non c’è contatto, se =0 contatto, se <0 penetrazione l’esito del test guida la risposta alla collisione

Metodo appross. con raggi - 3 la superficie può essere composta da molti triangoli per accelerare il calcolo dell’intersezione con la superficie, essa può essere organizzata gerarchicamente il calcolo della intersezione dipende dalle primitive usate nel rappresentare la superficie

Un’altra semplificazione A volte si può ridurre un problema 3D a un problema 2D Esempio: il labirinto Un oggetto (giocatore) che si muove in un labirinto può essere approssimato da una circonferenza Si testa la circonferenza rispetto alle linee del labirinto Meglio: si spostano le linee di un offset pari al raggio della criconferenza Il test ora è tra il centro della circonferenza e le linee spostate

Rilevazione collisioni accurata per molti oggetti Per ”simulazione” intendiamo la modellazione del movimento degli oggetti

Collisione accurata tra oggetti complessi Se è richiesto un risultato accurato si ricorre alla gerarchia di BV Usa gerarchia di BV (BVH) separata per ciascun oggetto Testare un BVH rispetto all’altro BVH per cercare sovrapposizioni Se ci sono sovrapposizioni di triangoli si calcola l’intersezione esatta (se necessario)

Esempio di costruzione di una gerarchia di volumi (BVH) Suddividere il piano Ordina i piani rispetto ai centroidi Dei triangoli + Trova box minimo = …and so on.

Pseudocodice per testare un BVH rispetto a un altro BVH Considera 4 casi: 1) Test tra due nodi foglia 2) Test tra due nodi interni (non foglia) 3) Nodo interno vs. nodo foglia 4) Nodo foglia vs. nodo interno

Commenti Teermiona quando trova la prima coppia di triangoli che collidono Si può modificare per cercare tutte le coppie che collidono e metterle in una lista

Quali BV? Scelte possibili: –AABB, OBB, k-DOP, sfere In generale BV più ”stretti” comportano ricerche più lente BV più laschi alla fine comportano più test tra coppie di traingoli Funzione di costo:

Collisione tra molti oggetti - semplificare! Immaginate centinaia di pietre che rotolano da un monte …. La semplificazione viene spesso chiamata”First-Level Collision Detection (CD)” Si preferisce fare una CD di primo livello per farne una di secondo livello meno frequentemente Supponiamo ci sia elevata coerenza tra frame successivi –Ovvero gli oggetti sono vicini alla posizione precedente –È una ipotesi ragionevole

Sweep-and-prune [Ming Lin] Gli oggetti possono traslare e ruotare Si determina un cubo minimale che contiene un oggetto sotto tutte le possibili rotazioni Eseguire il testi di collisione tre volte rispetto ai tre assi Consideriamo un solo asse per volta Ciascun cubo sull’asse è un intervallo da s i a e i, dove i è il numero del cubo

Sweep-and-prune Ordina tutti gli s i e e i in una lista Attraversa la lista da start a end Quando incontri un s, marca il correspondiente intervallo come attivo in una active_interval_list Quando incontri un e cancella l’intervallo dalla active_interval_list Tutti gli interrvalli nella active_interval_ list hanno sovrapposizioni

Sweep-and-prune L’ordinamento costa: O(n*log n) Ma sfruttiamo la coerenza tra frame! La lista quindi non dovrebbe cambiare molto Si può perciò usare un ordinamento che ”riordina” un insieme già quasi in ordine, come bubble-sort, o insertion-sort Compelssità attesa: O(n)

Sweep-and-prune algorithm Mantieni una variabile booleana per ciascuna coppia di intervalli Scambia elementi quando cambia l’ordinamento Se tutte le variabile booleane per i tre assi sono true,  sovrapposizione

basato su BSP tree la scena è organizzata in BSPtree l’oggetto può essere: sfera, cilindro o poliedro convesso che contiene l’oggetto (guscio convesso convex hull) è dinamico, se l’oggetto si sposta da p 0 a p 1 determina dove avviene la collisione lungo il segmento p 0 - p 1 nei giochi l’oggetto è approssimato da sfere o cilindri

basato su BSP tree - 2 il test dovrebbe venire valutato rispetto ai piani di separazione dei sottospazi si preferisce spostare il piano lungo la direzione ortogonale (si allarga o stringe sottospazio): piano=n.x + d ---> n.x + d +-r a e c d b a b c de f fp p

basato su BSP tree - 3 una delle regioni del sottospazio è considerata piena (l’oggetto non può entrare), è il sottospazio negativo se l’oggetto è nel sottospazio positivo n.x + d ≥0 si sottrae r: n.x + d -r si valuta la distanza di p dal piano

basato su BSP tree - 4 la sfera è una grossolana approssimazione, si può usare guscio convesso lo spostamento del piano d si sceglie nella direzione più ortogonale al piano: -max vi in S (n.(v i -p 0 )) dove S è l’insieme dei vertici del guscio, il segno meno indica che il punto deve stare all’esterno il punto p 0 può essere nel piede o l’ombelico di un personaggio, la posizione del punto viene aggiornata secondo la direzione di spostamento: p 1 =p 0 +w

basato su BSP tree - 5 si puà usare un cilindro, è più veloce p0p0 r z y x p0p0 p0p0 t p0p0 e e

basato su BSP tree - 5 si sposta il piano al punto t si calcola e si sposta il piano di e = |n.(t-p 0 )| occorre calcolare t, se n z >0 la componente z è quella di p 0 se n x =n y =0 il piano è parallelo ai cerchi del cilindro se si puo’ prendere t=p 0 altrimenti si trova un punto sul bordo

basato su BSP tree - 6 possono esserci inaccuratezze

basato su BSP tree - 7 HitCheckBSP(N,v0,v1) return(RUE,FALSE) if(not isSolidCell(N)) return FALSE esle if(isSolideCell(N)) p impact =v0 return TRUE hit=FALSE if(clipLineInside(N shift out v0,v1,w0, w1) hit = HitCheckBSP(N.negativechild,w0,w1) if (hit) v1=p impact end if(clipLineOutside(N shift in v0,v1,w0, w1) hit = HitCheckBSP(N.positivechild,w0,w1) end return hit

basato su OBB tree si riduce n v numero test overlap volumi e n p numero testo overlap primitive il costo c v per OBB è maggiore che per AABB durante il test si può orientare OBB agli assi riducendo il costo n v e n p sono minori per OBB rispetto AABB la creazione di un OBB richiede il calcolo del guscio convesso O(nlogn), la profondità dell’albero costa O(logn), il costo totale è O(nlog 2 n)

basato su OBB tree - 2 due OBB A e B sono archiviati con le matrici di rototraslazione M A,M B rispetto al genitore test di overlap di A e B nel sistema di riferimento di A, A è un AABB, si trasforma B nel riferimento di A: T AB =M -1 A M B se i volumi si intersecano occorre discendere la gerarchia

basato su OBB tree - 3 facciamo il test rispetto al sottovolume C nel suo riferimento si trasforma B nel sistema di A con T AB poi si trasforma B nel riferimento di C con M C -1 T CB = M C -1 T AB si procede ricorsivamente usando lo pseudocodice già visto esiste un software free che lo implementa: RAPID (robust accurate polygon interference detection)

basato su k-DOP test di overlap dei volumi più veloce BV più accurato (minor numero di n p ) tutto ciò se k è piccolo, altrimenti degenera in guscio convesso c’è un costo di aggiornamento dei volumi in movimento c u e p u si è mostrato che k=18 dà un ottimo risultato la costruzione di 18-DOP può partire da un AABB aggiungendo 12 piani con somme delle 6 normali iniziali

altri problemi dipendenza dal tempo: la collisione va rilevata in relazione ai fps della animazione –occorre controllare il frame rate, es. 50 fps richiedono 20 ms ciascuno, se 15 ms servono al rendering ne restano 5ms per la collisione –una tecnica è di attraversare l’albero non per profondità ma per ampiezza

altri problemi - 2 gestione della collisione: cosa fare –es. rimbalzo di una pallina: –si determina la collisione –se viene rilevata: si calcola la nuova traiettoria e velocità secondo le leggi della riflessione In generale è oggetto del modello fisico scelto