Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.

Slides:



Advertisements
Presentazioni simili
Il V postulato di Euclide e la nascita delle geometrie non euclidee
Advertisements

Coordinate cartesiane, polari sferiche e polari cilindriche
MANOVELLISMI STUDIO CINEMATICO E DINAMICO
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.
Ottica geometrica 2 11 gennaio 2013
I VETTORI di Federico Barbarossa
1 la Torre Berardino Force rendering & Collision detection Dipartimento di Ingegneria dellInformazione Siena Ore F1F1 F2F2.
Lezione 4) L’Equazione Iconale e la propagazione delle onde in mezzi disomogenei.
Sfere e cilindri: un viaggio nelle geometrie Progetto Elites 2005.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
“cassetta degli arnesi”
Un manipolatore è costituito da un insieme di corpi rigidi (bracci) connessi in cascata tramite coppie cinematiche (giunti) a formare una catena cinematica.
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
Trovare il percorso minimo da b ad ogni altro vertice
CAMPO ELETTRICO E POTENZIALE
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
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
Studente Claudia Puzzo
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Biologia computazionale A.A semestre II U NIVERSITÀ DEGLI STUDI DI MILANO Docente: Giorgio Valentini Istruttore: Matteo Re p5p5 UPGMA C.d.l.
Analisi delle corrispondenze
Geometria analitica Gli assi cartesiani Distanza di due punti
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.
Anche la RB-Delete ha due fasi: Nella prima viene tolto un nodo y avente uno dei sottoalberi vuoto sostituendolo con la radice dellaltro sottoalbero. Per.
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
Determinazione delle superfici visibili
Sistemi di riferimento
Modelli Globali: Ray Tracing
Daniele Marini, Maurizio Rossi
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 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.
Intersezioni e distanze Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Collisioni Corso di Programmazione Grafica e Laboratorio Daniele Marini.
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.
I SISMI Caratteristiche delle rocce Tipi di onda Sismica a riflessione.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La Ricorsione Marco D. Santambrogio – Ver. aggiornata al 29 Maggio 2014.
LE MACRO.
Il Campo Magnetico è tridimensionale RX RX TX Antenna RX.
Problemi risolvibili con la programmazione dinamica Abbiamo usato la programmazione dinamica per risolvere due problemi. Cerchiamo ora di capire quali.
Grafi: rappresentazione e visita
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.
Geometria analitica Gli assi cartesiani Distanza di due punti
La Circonferenza. LA CIRCONFERENZA Assegnato nel piano un punto C detto Centro, si chiama circonferenza la curva piana con i punti equidistanti da C.
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

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 basati su BSP tree basati su BV gerarchici basati su OBB tree basati su k-DOP tree

Metodo approssimato con raggi 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 raggi- 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

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 è insieme 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 BV gerarchici indipendente dal tipo di volumi si costruisce la gerarchia di volumi si determina se c’e’ una coppia di triangoli che collide, termina appena se ne trova una (collision detection) la gerarchia è organizzata ad albero k-ario

basato su BV gerarchici - 2 FindFirstHit(A,B) returns(TRUE,FALSE) if(isLeaf(A) and isLeaf(B)) for each triangle pair T A in A and T B in B if(overlap(T A,T B ) return TRUE else if(isNotLeaf(A) and isNotLeaf(B)) if(Volume(A)>Volume(B)) for each child C A in A FindFirstHit(C A,B) else for each child C B in A FindFirstHit(A,C B ) else if(isleaf(A) and isNotLeaf(B)) for each child C B in B FindFirstHit(C B,A) else for each child C A in A FindFirstHit(C A,B) return(FALSE)

basato su BV gerarchici - 3 complessità: t=n v c v +n p c p +n u c u dove: n v numero di test di overlap BV/BV costo test di overlap BV/BV n p numero di test di overlap di primitive c p costo test di overlap di primitive n u numero di BV aggiornati per movimento oggetti c u costo aggiornamento BV ridurre costo di test overlap BV comporta BV più grossolani e maggior costo c p

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 traforma 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