1 la Torre Berardino Force rendering & Collision detection Dipartimento di Ingegneria dellInformazione Siena Ore F1F1 F2F2
2 1.Detectare le interazioni. 2.Calcolo del proxy (God-Object,…). 3.Calcolo delle forze (Modello locale+globale, dinamica e stabilità). 4.Rendering di forza (PHANToM, modello 2 porte). 5.Aggiornamento della grafica (coerenza tra visione e tatto). Collision detection
3 2-3 Proxy & Local model… Local Model Proxy
4 Per attuare una forza, espressa nel sistema di riferimento cartesiano (x,y,z) dellend effector, è necessario trasformarla in una serie di coppie di forza equivalenti da applicare ai motori (giunti rotazionali). Questa trasformazione avviene attraverso la matrice jacobiana trasposta, che è legata alla cinematica dellinterfaccia. feedback di forza massimo : 6.4N 3 gradi di libertà con feedback di forza : ( ) 6 gradi di libertà di posizionamento : (,roll,pitch,yaw) attrito : 0.06N risoluzione di posizionamento : 0.02 mm frequenza di aggiornamento della forza 4 Come viene attuata una forza…
5 1 Problema della collision detection Lo stato dellambiente virtuale viene modificato dalle interazioni fisiche che avvengono tra i diversi oggetti presenti nella scena. F1F1 F2F2 Modello fisico O A Modello fisico O B Calcolo delle forze Modifica la scena Collision detectio n collisione
6 Problema della collision detection
7 Collisione Utente 1KHz 25fps Force rendering SI NO 1.Lambiente virtuale è costituito da diversi oggetti. Uno di questi è rappresentativo dellend-effector dellinterfaccia haptica. 2.Lobiettivo è quello di sapere ad ogni ciclo di controllo (1KHz) se il PHANToM è entrato o no in collisione con modelli 3D della scena. Problema: Il numero di triangoli che compongono la superficie dei diversi oggetti è elevato ( – ) pensare di eseguire un test di collisione controllandoli uno ad uno non è fattibile nelle tempistiche di controllo richieste dal PHANToM. Problema della collision detection
8 Come posso fare per sapere in tempo reale con quale triangolo ho avuto collisione ?
9 Problema della collision detection In effetti si tratta di eseguire un processo di ricerca in uno spazio geometrico. Spendo del tempo in fase di pre-processing (off-line) per organizzare/strutturare lo spazio di ricerca. Così rendo più efficiente il processo di ricerca (on-line) ex: QuickSort, LookUp table (sin e cos)
10 1.Lidea, allora, è quella di eseguire una scomposizione spaziale della superficie, utilizzando delle primitive geometriche, in questo caso parallelepipedi, che vengono poi organizzate in una struttura gerarchica (albero binario di ricerca) OBB-Tree (Oriented Bound Box Tree). Nota la posizione Hp del PHANToM, in un primo momento viene utilizzato lOBB-Tree al fine di localizzare in quale OBB è posizionata linterfaccia. Se Hp non è contenuto in alcun OBB foglia, sicuramente non vi può essere collisione, altrimenti se il processo di ricerca termina su un OBB foglia, vi è la possibilità di collisione e quindi viene raffinato il processo di ricerca andando a testare tutti e solo i triangoli contenuti in tale OBB, che generalmente sono dellordine delle decina il test è quindi immediato. Organizzazione dello spazio di ricerca : OBB-Tree OBB-Tree (Oriented Bound Box Tree)
11 Calcolo degli OBB 1.Il centro dellOBB è posizionato nel valor medio. 2.Gli autovettori di una matrice simmetrica, come quella di covarianza C sono mutuamente ortogonali, pertanto una volta normalizzati vengono usati come base per lOBB. 3.Infine per dimensionare lOBB vengono presi il min e il max delle proiezione dei vertici lungo le tre direzioni. 1.Fissato un livello di soglia sul numero max di triangoli contenuti negli OBB foglia, si procede con una operazione di splitting che provvede a suddividere in modo ricorsivo gli OBB che contengono un numero di triangoli superiore alla soglia fissata. 2.Posizionamento del piano di sezione 1.a metà del lato più lungo. LOBB-Tree non è bilanciato. 2.media delle proiezioni dei vertici sul lato più lungo
12 Esempio di OBB-Tree
13 Anche la sfera viene utilizzata come primitiva geometrica. Il GHOST SDK utilizza questo approccio.
14 Quello che si fa in effetti per testare lavvenuta collisione e verificare se il segmento congiungente la posizione attuale e quella precedente del PHANToM ha intersezione dapprima con gli OBB e poi con uno dei triangoli. Nessuna collisione Potenziale collisione, cè intersezione con un OBB foglia ma nessuna con i triangoli contenuti nellOBB COLLISIONE, cè intersezione con un OBB foglia e con uno dei triangoli contenuti nellOBB Test di intersezione
15 Generalmente si fa il test di collision detection tra oggetti… Ci può essere collisione solo se cè una intersezione tra OBB foglia. AB A B
16