` DEGLI STUDI DI SIENA UNIVERSITA ` DI INGEGNERIA FACOLTA Corso di Laurea Specialistica in Ingegneria Informatica, orientamento Robotica ed Automazione Tesi di Laurea Interazione Visuo-Aptica con Oggetti Deformabili Attraverso pi´u Punti di Contatto ed Analisi su GPU. Relatore Chiar.mo Prof. Ing. Domenico Prattichizzo Correlatore Dott. Maurizio de Pascale Controrelatore Prof. Ing. Santina Rocchi Candidato Marcello Orlandesi A.A. 2004/2005 ... The best way to predict the future is to invent it. Alan Kay Ai miei nonni Filippo e Gino Ringraziamenti Voglio ringraziare la mia famiglia perch´e mi ha dato la possibilit´a di arrivare a questo tragurado, standomi vicino e sostenendomi in ogni momento, in particolar modo mio fratello Gino, che ha sopportato la mia assenza da casa per cinque anni facendosi carico di tutti i compiti familiari; un ringraziamento particolare va a Sonia, che mi ha accompagnato ogni istante in questi anni condividento con me ogni attimo, con pazienza ed amore. Ringrazio inoltre Marco Fei, un vero amico con il quale ho attraversato un periodo importante della mia vita, assieme abbiamo condiviso gli esami e la tesi, e la sua presenza ´e stata fondamentale per la stesura di quest’ultima. Grazie al Prof. Domenico Prattichizzo che, attraverso la grande passione per il suo lavoro, ha saputo darmi l’impulso necessario per farmi arrivare a questo traguardo, ed al Dott. Maurizio De Pascale che mi ha seguito per la realizzazione di questo lavoro. Grazie inoltre ai prof. Garulli, Bianchini, Rocchi, Fort ed Alioto, i quali oltre ad avermi insegnato eccellentemente i contenuti delle materie didattiche, sono stati sempre corretti nei miei confronti in ambito di lavoro, mettendo a disposizione molto del loro tempo. Un doveroso ringraziamento 4 va in fine ai miei colleghi di lavoro Paola Ortali, Massimo Limongelli, Erica Massai, Cristina Brozzi, Fabio Carusi e soprattutto al Dott. Lorenzo Cacchiani, che davvero mi sono stati vicino, dandomi gentilmente tutto l’aiuto possibile, sia morale che tecnico. Indice 1 Introduzione 12 2 Dinamica per Oggetti Virtuali 16 2.1 Moto Smorzato . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 Soluzioni Numeriche di Equazioni Differenziali 21 3.1 Equazioni Differenziali . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Metodo di Eulero Esplicito . . . . . . . . . . . . . . . . . . . . 22 3.3 Metodo di Eulero Implicito . . . . . . . . . . . . . . . . . . . . 23 4 Interfacce Aptiche 26 4.1 Gli ambienti virtuali . . . . . . . . . . . . . . . . . . . . . . . 26 4.2 Caratteristiche delle interfacce Aptiche . . . . . . . . . . . . . 27 4.3 Applicazione delle Interfacce Aptiche . . . . . . . . . . . . . . 30 4.4 Attuazione delle Interfacce Aptiche . . . . . . . . . . . . . . . 32 4.5 Cinestesia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.6 Controllo di forza nelle interfacce aptiche . . . . . . . . . . . . 39 5 Haptik Library 44 6 Schede Video Programmabili 46 6.1 Computer Graphics . . . . . . . . . . . . . . . . . . . . . . . . 46 5 INDICE 6 6.2 Graphics Processing Unit . . . . . . . . . . . . . . . . . . . . . 51 6.3 Vertex Shader . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.4 Pixel Shader . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 7 Metodo Implementato 61 7.1 Modellizzazione di Oggetti Deformabili . . . . . . . . . . . . . 61 7.2 Analisi e Simulazione del Contatto con Oggetti Virtuali Deformabili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 7.3 Analisi e Simulazione del Contatto Multiplo con Oggetti Virtuali Deformabili . . . . . . . . . . . . . . . . . . . . . . . . . 69 7.4 Studio degli Effetti Luminosi su Ambienti Virtuali . . . . . . . 73 7.5 Calcolo ed Aggiornamento delle Normali . . . . . . . . . . . . 83 7.6 Implementazione su GPU . . . . . . . . . . . . . . . . . . . . 85 8 Programmazione delle Schede Video 89 8.1 C for Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . 89 8.2 GPU Vs CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 8.3 The Graphics Hardware Pipeline . . . . . . . . . . . . . . . . 92 8.3.1 Trasformazione dei vertici . . . . . . . . . . . . . . . . 93 8.3.2 Triangolarizzazione e rasterizzazione . . . . . . . . . . 93 8.3.3 Interpolazione, Texturing e Coloring . . . . . . . . . . 94 8.3.4 Operazioni di Rastering . . . . . . . . . . . . . . . . . 94 8.3.5 Vertex Processor Programmabili . . . . . . . . . . . . . 95 8.3.6 Fragment processor programmabile . . . . . . . . . . . 97 9 OpenGL e DirectX 99 9.1 OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 9.2 DirectX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 INDICE 7 10 Conclusioni 101 Bibliografia 104 A Caratteristiche Schede Video Programmabili 106 A.1 nVIDIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 A.2 ATI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Elenco delle figure 2.1 Sistema composto da una massa a cui ´e applicata una molla ed uno smorzatore. . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2 Andamento lineare della legge F = Kx. . . . . . . . . . . . . 17 2.3 Andamento sinusoidale del moto armonico semplice. 2.4 Andamento sinusoidale di un moto armonico semplice prodotto . . . . . 19 da un sistema soggetto ad una forza F in cui: la forza ha lo stesso verso dell’accelerazione del moto (caso ’a’) oppure verso contrario (caso ’b’). 2.5 . . . . . . . . . . . . . . . . . . . . . . . 19 Moto armonico smorzato in condizioni di smorzamento critico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.1 Errore introdotto dal metodo di Eulero esplicito nella funzione x2 + y 2 = costante. 4.1 . . . . . . . . . . . . . . . . . . . . . . . 23 Diagramma a blocchi del funzionamento di un’interfaccia aptica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4.2 Phantom. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.3 A sinistra DaVinciTM surgical System, a destra ZeusTM. 4.4 Rappresentazione di un sistema Master-Slave. . . . . . . . . . 32 4.5 Power Loader, Sci-Fi movie Aliens 1986. 4.6 Modellazione di oggetti rigidi. . . . . . . . . . . . . . . . . . . 36 8 . . 31 . . . . . . . . . . . 34 ELENCO DELLE FIGURE 9 4.7 Rappresentazione della collision detection. . . . . . . . . . . . 37 4.8 Modellazione di oggetti deformabili. 4.9 Dettaglio del loop nel caso di oggetti deformabili. 4.10 Controllore dell’interfaccia aptica. . . . . . . . . . . . . . . 38 . . . . . . . 39 . . . . . . . . . . . . . . . 40 4.11 Sistema con molla. . . . . . . . . . . . . . . . . . . . . . . . . 41 4.12 Sistema con massa, molla e smorzatore. . . . . . . . . . . . . 41 4.13 Controllore di impedenza open-loop. . . . . . . . . . . . . . . 43 4.14 Controllore di impedenza open-loop con model-feedforward. . . 43 4.15 Controllore di impedenza con sensore di forza in retroazione. 5.1 43 Interfaccia dell’Haptik Library: permette di usare il mouse come se fosse il probe di un’interfaccia aptica. . . . . . . . . . 45 6.1 Architettura di base per computer graphics. . . . . . . . . . . 47 6.2 Stadi per l’elaborazione delle primitive. . . . . . . . . . . . . . 49 6.3 Rappresentazione del Volume di Vista. . . . . . . . . . . . . . 50 6.4 Esempio di triangolarizzazione. . . . . . . . . . . . . . . . . . 54 6.5 Schema di un Vertex Shader. . . . . . . . . . . . . . . . . . . . 55 6.6 Esempio di triangolarizzazione di un albero motore. . . . . . . 56 7.1 Esempio di superficie triangolarizzata. 7.2 Rappresentazione di vettori normali ai vertici dei triangoli. 7.3 Curva triangolarizzata con normali sui vertici . . . . . . . . . 64 7.4 Simulazione della deformazione di un piano dovuta alla colli- . . . . . . . . . . . . . 62 . 63 sione con una interfaccia aptica. . . . . . . . . . . . . . . . . . 66 7.5 Modello per le deformazioni locali . . . . . . . . . . . . . . . . 69 7.6 Simulazione della deformazione di un piano dovuta al multicontatto con tre interfacce aptiche. . . . . . . . . . . . . . . . 70 ELENCO DELLE FIGURE 7.7 10 Simulazione della deformazione di un piano dovuta al multicontatto con due interfacce aptiche. . . . . . . . . . . . . . . . 71 7.8 Rappresentazione del punto in cui si sovrappongono le forze derivanti da due interfacce aptiche diverse. . . . . . . . . . . . 72 7.9 Rappresentazione della deformazione dovuta a due interfacce aptiche considerando la forza minima nei punti di intersezione. 73 7.10 Rappresentazione della deformazione dovuta a due interfacce aptiche considerando nei punti di intersezione la forza minima aumentata di un valore k funzione dell’intensit´a della forza. . . 74 7.11 Rappresentazione della deformazione dovuta a due interfacce aptiche considerando nell’intorno dei punti di intersezione la forza minima aumentata di un valore k funzione del raggio. . 74 7.12 Rappresenatazione dell’angolo θ fra il vettore N normale alla superficie ed il vettore L della direzione del raggio luminoso. . 76 7.13 Come si pu´o vedere, la luce che arriva all’osservatore non dipende dalla sua posizione. . . . . . . . . . . . . . . . . . . . 77 7.14 Nel caso di superficie non totalmente opaca, la luce non viene riflessa in ugual modo in tutte le direzioni (’a’), mentre da una superficie lucida, la luce viene riflessa soltanto nella direzione R di riflessione (’b’). . . . . . . . . . . . . . . . . . . . . . . . 78 7.15 Caso di riflessione perfettamente speculare: l’osservatore pu´o vedere la luce riflessa soltanto se la posizione di vista ´e allineata con la riflessione stessa. . . . . . . . . . . . . . . . . . . . . 79 7.16 Caso di due triangoli con un lato in comune: le normali nei vertici del lato condiviso saranno le stesse per entrambi i triangoli. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 ELENCO DELLE FIGURE 11 7.17 La normale nv ´e ottenuta come media delle normali ai poligoni che condividono il vertice. . . . . . . . . . . . . . . . . . . . . 83 7.18 Rappresentazione dei vettori normali alla superficie del piano in assenza di forze esterne. . . . . . . . . . . . . . . . . . . . . 84 7.19 Rappresentazione del contatto fra il probe di una interfaccia apticha ed il piano ottenuta con implementazione su GPU: a) Piano deformato; b) Deformazione con vettori normali alla superficie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.20 Rappresentazione del contatto fra i probes di due interfacce aptiche ed il piano ottenuta con implementazione su GPU: a) Piano deformato; b) Deformazione con vettori normali alla superficie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 7.21 Rappresentazione del contatto fra i probes di due interfacce aptiche ed il piano ottenuta con implementazione su GPU. . . 88 8.1 Esempio di pipeline. . . . . . . . . . . . . . . . . . . . . . . . 92 8.2 Pipeline hardware grafico. . . . . . . . . . . . . . . . . . . . . 93 8.3 Step della pipeline. . . . . . . . . . . . . . . . . . . . . . . . . 95 8.4 Step della pipeline. . . . . . . . . . . . . . . . . . . . . . . . . 95 8.5 Flow Chart di un processore di vertici programmabile. 8.6 Flow Chart del Programmable Fragment Processor. . . . . . . 98 . . . . 96 Capitolo 1 Introduzione L’oggetto di questa tesi ´e lo studio della simulazione di oggetti virtuali deformabili soggetti a deformazioni locali da parte di pi´ u interfacce aptiche. In un primo tempo sono state studiate le propriet´a degli ambienti virtuali, in particolar modo si ´e cercato di capire quali sono le caratteristiche necessarie ad un oggetto virtuale affinch´e, una volta simulato, restituisca all’operatore le stesse sensazioni della realt´a. In questa fase quindi sono state esaminate le varie tecniche di rappresentazione degli oggetti, dalla triangolarizzazione delle superfici, alla determinazione di modelli matematici per la dinamica, fino all’attribuzione dei parametri per rappresentare le caratteristiche morfologiche. Affinch´e l’operatore ricopra un ruolo attivo all’interno di un ambiente virtuale ´e necessario che riesca ad interagire con esso; per questo motivo, all’interazione audio-visiva, ´e stata affiancata quella tattile, realizzata meccanicamente tramite Interfacce Aptiche. Per rendere ci´o possibile ´e stata studiata la deformazione degli oggetti virtuali, realizzando un modello matematico che implementa la dinamica dell’oggetto in presenza di deformazione provocata da forze provenienti dal mondo reale. Prima con una sola interfaccia aptica 12 CAPITOLO 1. INTRODUZIONE 13 (Tocco Singolo), per poi estendere questo scenario al caso in cui sono presenti pi´ u interfacce aptiche (Multicontatto). In questa fase ´e stato approfondito anche lo studio della stabilit´a degli oggetti virtuali soggetti a forze esterne, andando ad esaminare alcuni modelli matematici per oggetti deformabili e non deformabili. L’ultima fase, per rendere una simualzione il pi´ u vicino possibile alla realt´a, ´e quella basata sullo studio della luce su ambienti virtuali. Gli oggetti reali sottoposti a luce reagiscono, a seconda del materiale con cui sono stati creati, in modo diverso, presentando sfumature, ombre, assorbendo e riflettendo a loro volta della luce. A questo proposito sono stati esaminati vari modelli di illuminazione su oggetti virtuali rigidi. Lo studio implementato in questo lavoro presenta una soluzione per il caso di illuminazione su parti dell’oggetto deformate. L’informazione basilare per rendere questo possibile ´e data dalla dinamica dei vettori normali alla superficie. Gli effetti luminosi sono infatti realizzati andando a studiare l’angolo che si forma fra la sorgente luminosa ed il vettore normale alla superficie dell’oggetto; quando avviene una deformazione, la parte di superficie coinvolta cambia inclinazione rispetto alla posizione di riposo, con la conseguente inclinazione della sua normale. L’obiettivo ´e stato quello di creare un modello matematico per la dinamica delle normali coinvolte nelle parti dell’oggetto deformato. In ultima analisi ´e stata studiata la portabilit´ a della deformazione, di oggetti virtuali, su schede video dotate di Graphics Processing Unit (GPU). Con l’avvento delle schede video programmabili si cerca di sollevare computazionalmente il pi´ u possibile la CPU del calcolatore cercando di portare parte di codice da svolgere nelle GPU. Queste sono realizzate attraverso hardware molto veloce, ma tuttavia molto limitato. In questa tesi, il calcolo pi´ u oneroso (in termini computazionali) ´e dato dall’aggiornamento dei vet- CAPITOLO 1. INTRODUZIONE 14 tori normali alla superficie degli oggetti simulati, ´e stato studiato quindi un metodo per portare questa operazione in GPU. Il problema fondamentale ´e quello dato, appunto, dalla limitazione dell’hardware grafico, visto che, per calcolare i vettori normali in un vertice, ´e necessario fare un prodotto vettoriale fra i lati dei triangoli adiacenti al vertice interessato e le attuali GPU non consenstono questa operazione dal momento che non offrono la possibilit´a di scambiare informazioni fra vertici adiacenti. In definitiva, ogni vertice viene processato singolarmente ed indipendentemente dagli altri. Per aggirare questa restrizione ´e stata implementata una dinamica che rende fattibile l’aggiornamento delle normali su GPU, ottenendo risultati apprezzabili. Il lavoro presentato in questo documento `e cos`ı suddiviso: nel Capitolo 2 si analizza il moto smorzato, dinamica usata per la deformazione degli oggetti simulati. Nel Capitolo 3 invece si riportano i metodi numerici usati per la solzione di equazioni differenziali, usati per risolvere le equazioni derivanti dal modello assunto per il moto degli oggetti. Il Capitolo 4 ´e dedicato alle interfacce aptiche, dalla definizione dell’ambiente virtuale nel quale operano fino alla descrizione tecnica dell’hardware che le compongono. Nel Capitolo 5 ´e descritta l’Haptik library, ossia una libreria, usata per le simulazioni durante lo sviluppo di questo lavoro, che permette di adoperare il mouse del PC come se fosse il probe di un’interfaccia aptica. Nel Capitolo 6 sono descritte le schede video programmabili, con le loro caratteristiche hardware ed il loro funzionamento. Nel Capitolo 7 ´e presentato il metodo studiato per le deformazioni locali degli oggetti, passando dal singolo contatto a quello multiplo, con relativo aggiornamento delle normali per gli effetti luminosi. Nel Capitolo 8 ´e riportato il linguaggio di programmazione usato per programmare le GPU, mentre nel Capitolo 9 sono descritte le OpenGL e DirectX. In fine, nel Capitolo 10, sono riportate le conclusioni di questo CAPITOLO 1. INTRODUZIONE lavoro. 15 Capitolo 2 Dinamica per Oggetti Virtuali Affinch´e un oggetto virtuale abbia un moto all’interno della simulazione del mondo reale, necessita stuadiare dei modelli fisico-matematici che rappresentino tutte le caratteristiche da applicare all’oggetto affinch´e questo sia il pi` u realistico possibile. Di seguito ´e illustrato il modello usato per svolgere questo lavoro. 2.1 Moto Smorzato Un moto oscillatorio smorzato, ´e modellizzato tramite un sistema composto da una molla alla quale ´e applicata una massa ed uno smorzatore, come illustrato in Figura 2.1. Tralasciando inizialmente il contributo dello smorzatore, si ottiene che la forza necessaria per muovere la massa in modo tale da estendere (o comprimere) la molla, in assenza di attrito tra il corpo ed il piano, ´e F = Kx (2.1) dove K rappresenta la costante elastica della molla ed x ´e la misura dello 16 CAPITOLO 2. DINAMICA PER OGGETTI VIRTUALI 17 Figura 2.1: Sistema composto da una massa a cui ´e applicata una molla ed uno smorzatore. spostamento dalla posizione di riposo. Questa legge ´e di tipo lineare come si nota nel grafico grafico 2.2. Figura 2.2: Andamento lineare della legge F = Kx. Posizionando la massa in una posizione diversa da quella a riposo, la molla si carica di una energia poteziale pari a Ep = Kx2 2 (2.2) Se il sistema viene lasciato in evoluzione libera, tender´a a tornare nella posizione di equilibrio; durante questa fase l’energia potenziale si trasforma in energia cinetica la cui espressione ´e data da Ec = mv 2 2 (2.3) CAPITOLO 2. DINAMICA PER OGGETTI VIRTUALI 18 in cui v rappresenta la velocit´a del corpo. Una volta tornato nella posizione iniziale, tutta l’energia potenziale si ´e trasformata in energia cinetica e quindi il sistema non si trova ancora in condizioni di equilibrio. Questo ´e il motivo per cui la molla, se era stata compressa, inizia ad estendersi perdendo energia cinetica e riacquistando energia potenziale. In condizioni ideali questo processo andrebbe avanti all’infinito seguendo la seguente legge Ep + Ec = Kx2 mv 2 + = costante 2 2 (2.4) Il fenomeno fisico appena descritto prende il nome di Moto armonico semplice il cui andamento viene esplicitato dalla legge x = x0 sin(ωt) (2.5) in cui x0 rappresenta l’ampiezza di oscillazione e ω la pulsazione propria 1 del sistema. L’andamento in funzione del tempo di tale moto ´e rappresentato in figura 2.3. Supponendo di sollecitare il sistema con una forza F, ripetuta nel tempo, del tipo F = Asin(Ωt) (2.6) se la forza ha lo stesso verso dell’accelerazione del moto armonico, l’ampiezza di oscillazione aumenter´a come illustrato in figura 2.4a, altrimenti si otterr´a una diminuzione dell’ampiezza di oscillazoine come in figura 2.4b. Quando la pulsazione Ω coincide con la pulsazione propria del sistema ω si raggiungono le condizioni critiche ottenendo un aumento dell’ampiezza che 1 La pulsazione propria del sistema ´e legata alla costante elastica della molla ed alla p massa dall’equazione ω= k/m CAPITOLO 2. DINAMICA PER OGGETTI VIRTUALI 19 Figura 2.3: Andamento sinusoidale del moto armonico semplice. Figura 2.4: Andamento sinusoidale di un moto armonico semplice prodotto da un sistema soggetto ad una forza F in cui: la forza ha lo stesso verso dell’accelerazione del moto (caso ’a’) oppure verso contrario (caso ’b’). tende all’infinito e, quindi, provocando la rottura del sistema. Per evitare all’elemento elastico di oscillare all’infinito o di entrare in risonanza e, quindi, di provocare la rottura del sistema, si introduce un elemento smorzante collegandolo in parallelo alla molla come mostrato in 2.1. L’azione smorzante ´e proporzionale alla velocit´a di spostamento del corpo di massa m secondo la legge R = cv = cx˙ (2.7) in cui R rappresenta la forza di smorzamento, x˙ ´e la velocit´a con cui si sposta il corpo di massa m e c ´e la costante di smorzamento. Con l’introduzione dell’elemnto smorzante si ottiene un moto armonico smorzato, cio´e un moto oscillatorio in cui l’ampiezza di oscillazione tende a CAPITOLO 2. DINAMICA PER OGGETTI VIRTUALI 20 diminuire nel tempo. Esiste un valore di c, chiamato smorzamento critico, per il quale il sistema si arresta in una sola oscillazione come mostrato in figura 2.5. Figura 2.5: Moto armonico smorzato in condizioni di smorzamento critico. Capitolo 3 Soluzioni Numeriche di Equazioni Differenziali Il moto degli oggetti ´e rappresentabile matematicamente tramite equazioni differenziali. Per descrivere quindi la dinamica di un oggetto in un ambiente virtuale ´e necessario implementare dei sistemi di equazioni differenziali che esprimano le caratteristiche di moto dell’oggetto come se fosse nel mondo reale. In questo Capitolo sono trattati alcuni metodi classici per la soluzione di sistemi di equazioni differenziali. 3.1 Equazioni Differenziali Le equazioni differenziali descrivono la relazione tra una funzione sconosciuta e le sue derivate. Risolvere un’equazione differenziale significa trovare una funzione che soddisfi la relazione data, tipicamente mentre soddisfa anche alcune condizioni aggiuntive. In un problema canonico del valore iniziale, il comportamento del sistema ´e descritto da una Equazione Differenziale 21 CAPITOLO 3. SOLUZIONI NUMERICHE DI EQUAZIONI DIFFERENZIALI22 Ordinaria (ODE) nella forma x˙ = f (x, t) (3.1) dove f ´e una funzione nota, x ´e lo stato del sistema e x˙ ´e la derivata di x rispetto al tempo; tipicamente x ed x˙ sono dei vettori. Per la risoluzione di tali equazioni, vengono utilizzati metodi esclusivamente numerici, nei quali sono considerati incrementi temporali diescreti partendo da un valore iniziale x(t0 ). Ad ogni passo, viene usata la funzione derivativa f per calcolare un incremento approssimativo in x (di x ), in un intervallo di tempo dt ed in seguito viene incrementato x di dx, per ottenere il nuovo valore. Calcolando una soluzione numerica, la funzione derivativa f viene considerata come un Black-Box. 3.2 Metodo di Eulero Esplicito Il pi´ u semplice metodo numerico risolutivo, per equazioni differenziali, ´e denominato metodo di Eulero. Il valore iniziale di x ´e chiamato x0 = x(t0 ) e viene stimato x ad un certo tempo t0 + h con x(t0 + h), dove h ´e il parametro che indica il passo temporale. Il metodo di Eulero calcola semplicemente x(t0 + h) facendo un passo nella direzione della derivata: x(t0 + h) = x0 + h(x(t ˙ 0 )) (3.2) Tuttavia questo metodo non ´e molto accurato. Si consideri il caso di una funzione f in 2D rappresentata da cerchi concentrici. Un punto p appartenente ad f dovrebbe orbitare per sempre in uno dei cerchi. Invece, ad ogni passo del metodo di Eulero, si muover´a tramite una linea spezzata su cerchi di raggio maggiore, andando a seguire un cammino non pi´ u circolare ma a spirale. Inoltre, il metodo di Eulero pu´o essere instabile per valori di h non CAPITOLO 3. SOLUZIONI NUMERICHE DI EQUAZIONI DIFFERENZIALI23 sufficientemente piccoli. Questo perch´e, per come ´e strutturato, tale metodo introduce un certo errore ad ogni passo; vediamone la causa andando a studiare la serie di Taylor: x(t0 + h) = x(t0 ) + hx(t ˙ 0) + h2 hn dn x + ... + + ... 2! n! dtn (3.3) Il metodo di Eulero tronca la serie al secondo termine scartando tutti gli altri; questo introduce un errore di O(h2 ). Figura 3.1: Errore introdotto dal metodo di Eulero esplicito nella funzione x2 + y 2 = costante. Tale metodo ´e computazionalmente efficiente dal momento che richiede un solo calcolo per ogni passo. 3.3 Metodo di Eulero Implicito Qaundo si presentano equazioni differenziali di tipo stiff (ODE stiff) sarebbe desiderabile cambiare formulazione del problema; tuttavia talvolta ci´o non ´e possibile e quindi si ricorre a metodi risolutivi cos´ı detti impliciti. CAPITOLO 3. SOLUZIONI NUMERICHE DI EQUAZIONI DIFFERENZIALI24 Con la tecncia di Eulero Implicito, data un’equazione differenziale del tipo x(t) ˙ = f (t) (3.4) per aggiornare il sistema in avanti nel tempo viene usata la seguente equazione xnew = x0 + hf (xnew ) (3.5) dove xnew ´e il valore da calcolare e x0 quello conosciuto. Per poter calocalre xnew occorre rimpiazzare f(xnew ) con un’approssimazione lineare basata sullo sviluppo in serie di Talylor di f. L’incremento ∆x viene calcolato come ∆x = xnew − x0 (3.6) in modo da poter riscrivere l’equazione generale del metodo come x0 + ∆x = x0 + hf (x0 + ∆x) (3.7) ∆x = hf (x0 + ∆x) (3.8) ovvero Inoltre, f(x0 +∆x) viene approssimato con f(x0 )+f ’(x0 )∆x. Usando questa approssimazione ∆x pu´o essere riscritto come ∆x = h(f (x0 ) + f 0 (x0 )∆x) Esplicitando rispetto a ∆x si ottiene µ ¶−1 1 0 ∆x = I − f (x0 ) f (x0 ) h (3.9) (3.10) Dove I ´e la matrice identit´a. Calcolare xnew =x0 +∆x ´e molto pi´ u semplice che usare un metodo esplicito, dal momento che si tratta di risolvere un sistema lineare ad ogni passo. Tuttavia il calcolo di µ ¶−1 1 0 f I − f (x0 ) h (3.11) CAPITOLO 3. SOLUZIONI NUMERICHE DI EQUAZIONI DIFFERENZIALI25 nel caso di dinamiche complesse ´e veramente molto oneroso dal punto di vista computazionale. Ad esempio, nel caso in cui vengano simulate le dinamiche di dieci corpi rigidi in un ambiente virtuale, le dimensioni delle matrici coinvolte risultano essere estremamente elevate (120x120); facendo la semplificazione di conoscere ad ogni passo la derivata della funzione f, si tratta sempre di calcolare l’inversa di matrici molto grandi. Considerando inoltre un tempo di campionamento relativamente basso, si ottengono tempi di risposta piuttosto elevati, spesso non compatibili con i tempi di risposta necessari per applicazioni real time. Capitolo 4 Interfacce Aptiche Per dare all’utente la possibilit´a di interagire attivamente con la realt´a virtuale e, quindi, esercitare azioni di controllo su di essa, ´e necessario adoperare sistemi robotici che permettono di ottenere nel mondo reale forze derivanti dall’attivit´a svolta dall’operatore su quello virtuale. Tali sistemi vengono chiamati Interfacce aptiche e vengono di seguito descritti. 4.1 Gli ambienti virtuali Negli ultimi anni si ´e assistito alla comparsa di un numero sempre maggiore di sistemi destinati alla generazione di Ambienti Virtuali. In tali ambienti l’utente percepisce, intorno a se, o ad una sua rappresentazione, un ambiente simulato. L’immersione in tali ambienti pu´o essere raggiunta a diversi livelli. L’operatore deve innanzitutto poter percepire la propria presenza all’interno dell’ambiente in cui risulta immerso. Deve inoltre essere in grado di poter muovere i sensori attraverso i quali percepisce le informazioni che caratterizzano l’ambiente virtuale, ossia ´e consentita la navigazione all’interno dell’ambiente. Questi due livelli di immersione sono ottenuti mediante la 26 CAPITOLO 4. INTERFACCE APTICHE 27 simulazione della grafica e dell’audio, in modo da conferire stimoli di natura visiva e uditiva. Infine, affinch´e l’utente svolga un ruolo attivo nella realt´a virtuale, ´e necessario simulare le caratteristiche legate al senso del tatto, ossia la possibilit´a di controllo che si pu´o esercitare sull’ambiente simulato. Per realizzare questo livello di immersione ´e necessario riprodurre stimoli tattili e le forze che il mondo reale eserciterebbe sull’utente. Questo tipo di simulazione richiede il calcolo in tempo reale di tutte le situazioni di contatto per stabilire l’entit´a delle forze che devono essere percepite dall’operatore. ´ necessario quindi caratterizzare gli oggetti presenti nell’ambiente virtuale E anche dal punto di vista fisico, attribuendo loro grandezze quali peso, inerzia, rigidezza, viscosit´a, rugosit´a, ecc. Una simulazione di questo tipo, in grado di riprodurre sensazioni tattili e di forza, ´e ottenuta mediante dispositivi definiti Interfacce Aptiche. 4.2 Caratteristiche delle interfacce Aptiche Le Interfacce Aptiche sono dispositivi robotici studiati per interagire direttamente con l’operatore umano, aventi la funzionalit´a di indurre in quest’ultimo la percezione di forze relative, ad esempio, al contatto con un oggetto virtuale. Questi dispositivi sono stati concepiti sulla base dell’ipotesi che l’interazione fisica con l’ambiente circostante consista nella percezione di forze il cui valore ´e funzione della posizione degli arti dell’operatore usati per esplorare l’ambiente. Le interfacce aptiche, oggi sviluppate, sono dispositivi elettromeccanici il cui end-effector ´e, da un lato, permanentemente collegato all’arto dell’operatore e dall’altro ´e collegato ad un sistema di attuatori (Figura 4.2). I movimenti dell’end-effector vengono imposti dall’operatore e rilevati da CAPITOLO 4. INTERFACCE APTICHE 28 Figura 4.1: Diagramma a blocchi del funzionamento di un’interfaccia aptica. un sistema di controllo, che aziona gli attuatori in modo da fornire all’utente il feedback di forza in funzione della posizione dell’end-effctor. Se ad esempio si vuole simulare la presenza di una palla di fronte all’operatore i passi che devono essere eseguiti sono i seguenti: L’interfaccia aptica, tramite i propri sensori di posizione, rivela la posizione del dito dell’utente. Un modulo software, detto di ambiente virtuale, determina se il dito ´e in contatto o meno con la palla virtuale. Se lo ´e, il modulo software calcola la corrispondente forza di contatto. A questo punto i motori del robot vengono azionati in maniera da indurre la percezione di tale forza. La traiettoria dell’end-effector ´e quindi determinata dal bilancio delle forze prodotte, istante per istante, dalle dita dell’operatore e da quelle prodotte dagli attuatori dei giunti del robot. In questo modo ´e possibile sia creare il contatto con superfici complesse, sia creare dei vincoli al movimento dell’operatore per guidarlo lungo traiettorie predefinite. Affinch´e un dispositivo robotico possa essere ritenuto idoneo alla simu- CAPITOLO 4. INTERFACCE APTICHE 29 Figura 4.2: Phantom. lazione dell’interazione fisica con l’ambiente, deve possedere tre caratteristiche fondamentali: 1 Elevata trasparenza. Durante la fase in cui non si determinano interazioni con l’ambiente circostante, l’utente non deve avvertire la presenza del dispositivo. In altri termini l’interfaccia aptica deve essere realizzata in modo da ridurre al minimo le forze di reazione, necessarie al suo trascinamento, che questa esercita sull’operatore durante i suoi spostamenti nello spazio libero. Dal punto di vista tecnico, occorre ridurre al minimo le forze, indotte sull’operatore, dovute al peso proprio del dispositivo, agli attriti interni e alle masse in movimento (forze inerziali). Questa condizione pu´o essere ottenuta sia agendo sulla componente meccanica del dispositivo (cinematica, sistemi di trasmissione, attuatori, parti strutturali, etc.) sia sulla componente di controllo degli attuatori, adottando opportune tecniche di compensazione (attrito, inerzia, gravit´a); 2 Elevate rigidezza. Durante la fase di interazione il dispositivo deve essere in grado di indurre realisticamente la percezione del contatto CAPITOLO 4. INTERFACCE APTICHE 30 con gli oggetti. Questi ultimi, al limite, possono essere infinitamente rigidi. Il dispositivo quindi, dovr´a essere in grado di mostrare all’operatore rigidezze sufficientemente elevate. Anche in questo caso si pu´o agire tanto sulla componente meccanica (trasmissioni, parti strutturali) tanto sulla componente di controllo (elevato guadagno d’anello); 3 Elevata banda passante. Durante la transizione tra la fase di non contatto e quella di contatto, il dispositivo deve essere in grado di generare delle forze con elevata dinamica temporale (alto contenuto spettrale). Questo ´e particolarmente vero nel caso in cui sia necessario simulare urti con oggetti rigidi. Dal punto di vista tecnico questa caratteristica pu´o essere ottenuta elevando la frequenza propria della componete meccanica. 4.3 Applicazione delle Interfacce Aptiche Per come sono state concepite le Interfacce Aptiche, uno dei principali campi d’impiego ´e l’addestramento in Ambiente Virtuale, per tutti quei compiti che potrebbero essere rischiosi sia per l’utente sia per tutte le cose o persone che si troverebbero nell’area di lavoro reale, evitando cos´ı di sottoporli al rischio dell’inesperienza dell’operatore. I settori applicativi sono svariati basti pensare a quello medico, con prove d’intervento su pazienti virtuali, oppure a situazioni ad alto rischio o particolarmente delicate come manipolare materiale radioattivo nelle centrali nucleari o installazioni sottomarine o costruzioni spaziali. Un altro campo d’impiego ´e legato alla riabilitazione in campo medico. Essa consiste nella movimentazione assistita di arti, del paziente, attraverso l’aiuto di un operatore, in modo da stimolare la rigenerazione del sistema nervoso. In questo caso le interfacce aptiche possono CAPITOLO 4. INTERFACCE APTICHE 31 essere programmate per far compiere all’arto da riabilitare una traiettoria il pi´ u possibile vicina a quella ottimale, stabilita precedentemente dal medico. Utilizzando queste strutture robotiche ´e anche possibile monitorare i miglioramenti. Infine esiste un’altra applicazione in cui le Interfacce Aptiche sono particolarmente indicate: la teleoperazione, il cui principio di funzionamento ´e illustrato in Figura 4.3. Figura 4.3: A sinistra DaVinciTM surgical System, a destra ZeusTM. Il sistema ´e in questo caso composto di due moduli: un sistema master aptico ed un sistema slave. L’operatore muove degli strumenti che sono rigidamente vincolati con l’end-effector del robot master. Attraverso i sensori di posizione di quest’ultimo ´e possibile calcolare la traiettoria compiuta dallo strumento impugnato dall’operatore. Il robot slave riceve i dati necessari a ricostruire tale traiettoria ed ´e in grado di posizionarsi nello spazio e riprodurre i movimenti, imposti dall’operatore al robot master. L’endeffector di quest’ultimo robot consiste nel vero e proprio utensile che andr´a a compiere realmente l’operazione richiesta. Lo slave ´e provvisto di uno o pi´ u sensori di forza, che misurano l’entit´a delle forze che nascono tra l’uten- CAPITOLO 4. INTERFACCE APTICHE 32 sile e i corpi con cui entra in contatto. Esiste un flusso di informazioni di forza di ritorno, che permette al robot master di riprodurre le stesse forze, fornendo cos´ı all’operatore la sensazione di contatto. I vantaggi della teleoperazione sono, oltre a quello di poter operare in tutti gli ambienti inaccessibili e ostili all’uomo, quello di poter guidare l’operatore durante esecuzione del task operativo, spingendolo ad eseguire la migliore traiettoria possibile e la possibilit´a di evitare un eventuale tremore della mano. Infine attraverso la teleoperazione sono possibili operazioni con forti riduzione di scala delle forze e/o dello spazio. In questo modo un movimento di una decina di centimetri della mano dell’operatore si pu´o tradurre in spostamenti dell’ordine di millimetri per l’utensile a bordo dello slave. Oppure una forza di alcuni Newton prodotta dall’operatore pu´o portare lo slave alla manipolazione di oggetti anche molto pesanti. Figura 4.4: Rappresentazione di un sistema Master-Slave. 4.4 Attuazione delle Interfacce Aptiche Nel paragrafo 4.2 sono state illustrate le caratteristiche fondamentali di una interfaccia aptica. I componenti meccaniche che influscono maggiormente CAPITOLO 4. INTERFACCE APTICHE 33 sulle suddette caratteristiche sono gli attuatori del dispositivo. Le caratteristiche auspicabili per un interfaccia aptica si traducono in corrispondenti caratteristiche auspicabili per gli attuatori: • Elevato rapporto Forza/Ingombro; • Elevato rapporto Forza/Peso; • Elevato rapporto Forza/Inerzia; • Elevato fattore dinamico; • Elevata banda passante; • Elevata controllabilit´a della forza; • Costi contenuti; Un attuatore di forza ideale dovrebbe generare in uscita la forza desiderata indipendentemente dai movimenti del carico. Viceversa gli attuatori reali presentano delle limitazioni che li discostano dal comportamento ideale, dovute principalmente alle inerzie, agli attriti, e a una banda passante limitata. La presenza delle inerzie crea in uscita una forza aggiuntiva, che ´e legata alle accellerazioni del carico. Tale forza non deve essere avvertita dall’operatore ed ´e quindi necessario compensarla. La presenza di inerzie rilevanti rispetto al carico applicato comporta quindi una maggiore complessit´a del controllo dell’attuatore. Gli attriti interni, che si determinano tra le componenti dell’attuatore in moto relativo, sono responsabili della minima forza esercitabile dall’attuatore. Il fattore dinamico quantifica questa caratteristica, essendo definito come rapporto tra la massima forza e la minima generabile dall’attuatore. Nella progettazione degli attuatori si tende, generalmente, a massimizzare questo CAPITOLO 4. INTERFACCE APTICHE 34 Figura 4.5: Power Loader, Sci-Fi movie Aliens 1986. fattore dinamico, cercando di ridurre, per quanto possibile, gli attriti interni. Nei servomotori in corrente continua tale fattore ´e compreso tra 30 e 100. La banda passante di un attuatore ´e la frequenza massima fino alla quale ´e possibile effettuare un accurato controllo di forza. Tale valore dipende dalla natura del principio fisico adottato per la trasformazione di energia (da energia elettrica a energia meccanica) e dall’inerzia delle parti mobili dell’attuatore. Nella maggior parte dei casi gli attuatori utilizzati nelle interfacce aptiche sono dei servomotori elettromagnetici. Questi possono essere impiegati in due modi differenti: interfacciati direttamente con il carico o utilizzati insieme con dei riduttori. Entrambi i casi presentano degli inconvenienti. Quando sono impiegati direttamente possono essere controllati accuratamente, in virt´ u della loro relazione lineare, che li caratterizza, tra la forza in uscita e la corrente in entrata, e possono essere considerati una buona approssimazione di un attuatore di forza ideale. Questo caso di utilizzo ´e per´o poco efficiente, perch´e gli attuatori si trovano ad operare a, relativamente, bassa velocit´a e alta forza di uscita, condizioni tipicamente CAPITOLO 4. INTERFACCE APTICHE 35 richieste nei dispositivi aptici. Infatti in questo caso il motore viene dimensionato in base alla massima forza richiesta, risultando sovradimensionato, rispetto alla potenza effettivamente desiderata in uscita, e quindi pesante e ingombrante. In alternativa, qualora si impieghino dei riduttori, posso essere utilizzati motori molto pi´ u piccoli e leggeri. L’introduzione dei riduttori nel sistema d’attuazione provoca, per´o, un incremento sensibile dell’inerzia e degli attriti complessivi. Per mitigare questi effetti ´e possibile usare un sensore di forza a valle del riduttore e tramite un opportuna azione di controllo sull’attuatore ´e possibile ridurre l’errore tra la forza desiderata e quella effettivamente generata. Questo tipo di controllo risulta per´o molto pi´ u complesso e delicato. Qualora sia possibile, ´e conveniente posizionare gli attuatori sulla parte fissa del dispositivo, questa soluzione risulta infatti praticabile in quanto non peggiorativa delle caratteristiche inerziali dell’interfaccia aptica. 4.5 Cinestesia L’uomo ´e dotato di sistemi sensoriali interni che fanno percepire i cambiamenti che avvengono dentro al nostro organismo: segnalano cose come fame, sete, stanchezza e il bisogno di respirare. Siamo inoltre dotati del senso labirintico, o senso dell’equilibrio, localizzato nell’orecchio interno, che ´e sensibile alla forza di gravit`a, alle accelerazioni e alle rotazioni. Abbiamo infine la cinestesia, o senso di posizione, che ci rende consapevoli della tensione muscolare e del movimento e della posizione degli arti anche a occhi chiusi. La Cinestesia ´e quindi la percezione che l’uomo ha della posizione e del movimento del corpo e degli arti, ovvero un insieme di sensazioni (muscolari, legamentarie) che indicano gli spostamenti nello spazio dei diversi elementi CAPITOLO 4. INTERFACCE APTICHE 36 corporei; esso ci informa, in qualsiasi momento, del luogo che occupiamo nello spazio e delle relative posizioni delle nostre braccia, gambe, testa ed altre ´ grazie a questa capacit`a che siamo in grado di portare le parti del corpo. E mani al naso con gli occhi chiusi. Nell’interazione fra uomo ed ambiente virtuale, ´e necessario riprodurre, tramite interfacce aptiche, il senso della cinestesia, affinch´e l’utente percepisca gli stimoli provenienti dall’ambiente simulato come se provenienti dal mondo reale. La cinestesia, come scienza, ´e fondamentale per la progettazione di interfacce aptiche poich´e, ad esempio, permette di stabilire il range massimo e minimo di frequenze alle quali i sensi umani sono in grado di reagire correttamente; ad esempio 1-2Hz ´e la massima larghezza di banda alla quale il tatto pu´o reagire a segnali di forza/posizione inaspettati, 320Hz ´e la banda oltre la quale le dita umane non possono discriminare due segnali di forza consecutivi, etc.. Figura 4.6: Modellazione di oggetti rigidi. Dal punto di vista matematico quindi abbiamo una forza F restituita dall’ambiente virtuale da trasformare in coppie motore τ per consentire all’interfaccia aptica di rendere tale forza percepibile all’utente secondo la seguente CAPITOLO 4. INTERFACCE APTICHE 37 relazione: τ = JT F (4.1) in cui J ´e la matrice Jacobiana che mette in relazione le velocit´a dei giunti con quella dell’end-effector dato un certo sistema di riferimento. Una delle caratteristiche fondamentali nella simulazione del tatto in ambienti virtuali ´e la presenza di oggetti deformabili o meno. Qualora si tratti di oggetti rigidi, l’interazione utente/oggetto ´e rappresentata tramite lo schema di Figura 4.6, in cui la percezione dell’oggetto si ha quando HapticP osition = ObjP osition (4.2) Nel caso di oggetti deformabili si ha invece la modellizzazione illustrata in Figura 4.8 in cui la forza virtuale esercitata dall’interfaccia aptica riceve un feedback dall’oggetto deformabile cos´ı da generare un ulteriore loop con il virtual environment che fornisce l’object position. Nel Local Model si ha come ingresso la differenza tra Haptic Position ed Object Position, parametri indispensabili per la Collision Detection. Figura 4.7: Rappresentazione della collision detection. CAPITOLO 4. INTERFACCE APTICHE 38 Dopo una triangolarizzazione dell’oggetto1 , per ottenere una rappresentazione geometrica dell’intero sistema, si considera applicato ad ogni vertice del triangolo un sistema massa-molla. Considerando i parametri di Figura 4.7 si ottiene la relazione ∆x = K0 xh Kh + K0 (4.3) Per ottenere un forte senso di realismo, ´e necessario che ∆x → 0 e questo si ottiene solo ponendo Kh >> K0 (4.4) in cui K0 ´e l’impedenza caratteristica dell’oggetto deformabile e Kh ´e l’impedenza restituita dall’interfaccia aptica. Tuttavia, per garantire la stabilit´a del loop che coinvolge il virtual environment (Figura 4.8, Figura 4.9), ´e necessario che ¯ ¯ ¯ Kh ¯ ¯ ¯− ¯ K0 ¯ < 1 (4.5) K h < K0 (4.6) ovvero Figura 4.8: Modellazione di oggetti deformabili. 1 Tecnica usata per la rappresentazione delle superfici di oggetti reali in ambienti virtuali, che verr´a descritta nei capitoli successivi. CAPITOLO 4. INTERFACCE APTICHE 39 Figura 4.9: Dettaglio del loop nel caso di oggetti deformabili. Osservando i risultati in 4.4 e 4.6 otteniamo due condizioni contrastanti da mediare attraverso una soluzione di compromesso. 4.6 Controllo di forza nelle interfacce aptiche Lo sviluppo di interfacce aptiche per applicazioni di realt´a virtuale ´e in competizione con lo sviluppo di manipolatori industriali ormai presenti da oltre venti anni. Questa rapida evoluzione deve la sua esistenza all’avvento di workstation sempre pi´ u potenti, in grado di fare il rendering di ambienti virtuali in real time. Per migliorare la qualit`a del feedback delle interfacce aptiche in applicazioni di realt´a virtuali viene analizzato il feedback del controllore di forza. La progettazione avanzata di controllori pu´o incrementare la trasparenza del dispositivo aptico ed aumentare il realismo della simulazione. Ogni volta che il link di una interfaccia aptica ´e in contatto con un oggetto dell’ambiente virtuale si ha una forza f diretta verso l’oggetto, ed una forza di reazione -f diretta dall’oggetto al link; tale forza si trasmette sulle coopie dei giunti secondo la relazione 4.1. Nota la dinamica, ´e possibile fare due tipi di controllo: • Motion Control, in cui si controlla la traiettoria del robot indipendentemente dalla forza applicata. Tale forza risulta essere un disturbo CAPITOLO 4. INTERFACCE APTICHE 40 Figura 4.10: Controllore dell’interfaccia aptica. e nel caso di iterazioni tra ambiente virtuale e quello reale (ad esempio nel caso della teleoperazione), non avendo un controllo della forza, possono nascere forze di intensit´a elevata. • Force Control, in cui la forza non ´e un disturbo, ma un elemento essenziale da controllare; Le caratteristiche degli oggetti virtuali deformabili coinvolte nelle simulazioni sono • Stiffness; • Compliance; • Impedance CAPITOLO 4. INTERFACCE APTICHE 41 • Admittance; in cui Stiffness e Compliance legano posizioni e forze, mentre Impedance e Admittence mettono in relazione velocit´a e forze. Figura 4.11: Sistema con molla. Considerando il caso rappresentato in Figura 4.11 la stiffness ´e la costante elastica K della molla, mentre, osservando la dinamica in Figura 4.12 Figura 4.12: Sistema con massa, molla e smorzatore. l’ Impedance si pu´o esprimere come f = zv (4.7) dove, considerando la trasformata di Laplace della dinamica z= ms2 + Bs + K s (4.8) CAPITOLO 4. INTERFACCE APTICHE 42 Compliance ed Admittance, sono rispettivamente gli inversi di Stiffness ed Impedance. Nel caso del Force Control si controlla la forza nel punto di contatto e, per fare questo, interessa conoscere la rigidit´a (stiffness) dell’oggetto con cui si ha l’interazione. La qualit´a delle interfacce aptiche pu´o essere misura in termini di accuratezza dell’impedenza. Uno dei principali obiettivi per ottenere alta precisione ed accuratezza dell’impedenza ´e la diminuzione della dinamica dell’interfaccia aptica stessa, dal momento che tali dinamiche vengono percepite dall’operatore umano come facenti parte dell’ambiente simulato. Per eliminare tale disturbo, i progettisti agiscono sul peso dei materiali e sugli organi di movimento dell’interfaccia; inoltre, per arrivare ad ottenere un’alta fedelt´a della simulazione, le dinamiche dell’interfaccia aptica devono essere ridotte relativamente all’impedenza dell’ambiente virtuale. Considerando lo schema di Figura 4.10, si nota che nell’interfaccia aptica non compaiono sensori di forza, ma encoders della posizione. Qualora non si abbia contatto con un oggetto virtuale risulta verificata la seguente uguaglianza Fh =0 xh mentre, in caso contrario si ottiene Fh = Ze + Q xh (4.9) (4.10) dove Ze ´e l’impedenza dell’ambiente virtuale e Q ´e un fattore che dipende dalle prestazioni dell’interfaccia aptica stessa. Per ridurre ulteriormente la dinamica dell’interfaccia aptica, potrebbe essere utile lavorare sul controllo attivo dell’oggetto. Una migliore compensazione pu´o avvenire grazie ad un sensore di forza/coppie inserito nel dispositivo (Figura 4.15). Mentre la forza di gravit´a e l’uso di CAPITOLO 4. INTERFACCE APTICHE 43 Figura 4.13: Controllore di impedenza open-loop. Figura 4.14: Controllore di impedenza open-loop con model-feedforward. frizioni sono spesso usati per ridurre questi effetti, la variazione delle dinamiche inerziali richiede un feedback di forza o accelerazione. Inoltre, il controllo del feedback consente una progettazione pi´ u robusta, importane qualora le caratteristiche fisiche dell’interfaccia aptica cambino nel tempo. Figura 4.15: Controllore di impedenza con sensore di forza in retroazione. Capitolo 5 Haptik Library Per utilizzare l’interfaccia aptica sul computer in cui sono state eseguite le simulazioni di un ambiente virtuale in questo lavoro, ´e stata utilizzata la libreria creata dall’Universit´a degli Studi di Siena, all’interno del laboratorio SIRSLAB. Questa permette di usare un comune dispositivo come il mouse per interagire con l’ambiente virtuale, ovviamente senza riuscire ad avere nessuna forza nel mondo reale proveniente dall’interazione con quello virtuale, ma comunque ottenendo l’effetto visivo (nel monitor del PC) dell’attivit´a svolta dall’utente nella realt´a simulata come se stesse agendo con il probe di un’interfaccia aptica. Per poter applicare una interfaccia aptica al proprio PC, esistono fondamentalmente due possibilit´a: utilizzare le Application Programming Interface (API) messe a disposizione dal costruttore o utilizzare divers di terze parti. Nel primo caso si tratta di API semplici, con un numero limitato di caratteristiche, spesso insufficienti per gli sviluppatori. Nel secondo caso, invece, si corre il rischio di avere a che fare con librerie molto grandi (in termini di byte), complete e adatte a pi´ u tipologie di interfacce aptiche, ma spesso non troppo aggiornate e/o non in grado di supportare tecnologie recenti e in 44 CAPITOLO 5. HAPTIK LIBRARY 45 Figura 5.1: Interfaccia dell’Haptik Library: permette di usare il mouse come se fosse il probe di un’interfaccia aptica. continuo sviluppo come nel caso delle GPU. L’Haptik Library ´e una libreria con una architettura component based, che supera i limiti precedentemente elencati ed introduce caratteristiche interessanti quali indipendenza dal tipo di device, tolleranza a varie versioni di drivers e compatibilit´a con devices futuri, SDK1 e librerie. Questa libreria non contiene ne primitive grafiche, ne algoritmi fisici e neppure complesse classi gerarchiche; il tutto ´e costruito attorno ad una struttura flessibile di plugins caricabili dinamicamente. L’Haptik Library gestisce i plugins e stabilisce la connesione con l’applicazione; ogni plugin implementa effettivamente le routines necessarie al funzionamento di una certa classe di dispositivi. 1 Le SDK sono una raccolta di strumenti e documentazione da abbinare ad un compilatore di linguaggio C. Capitolo 6 Schede Video Programmabili L’avanzamento della tecnologia nel campo della computer graphics ha portato alla concezione di schede video dotate di Graphics Processing Unit (GPU), ossia di unit´a in grado di processare ed eseguire istruzioni di codice scirtto in un linguaggio di programmazione dedicato chiamato C for Graphics (Cg). Le schede video dotate di questa tecnologia risultano essere molto veloci nel rendering di immagini e, quindi, sono adoperate per alleggerire il carico computazionale della Central Processing Unit (CPU) del calcolatore nelle applicazioni in cui sono richieste prestazioni real-time. In questo Capitolo vengono descritte le caratteristiche di questi dispositivi. 6.1 Computer Graphics La Computer Graphics ´e la materia che studia la sintesi di immagini mediante computer. Solitamente si hanno in input i dati che caratterizzano e decrivono la scena da sintetizzare e si ottengono come output le immagini. La computer graphics fu usata in un primo tempo (fino al 1983/84) per sviluppare, nei calcolatori, un’interfaccia utente pi` u comoda rispetto alle 46 CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 47 tradizionali command line; infatti l’interazione con il calcolatore, fino ad allora esclusivamente svolta tramite riga di comando, viene rivoluzionata usando finestre, icone, cursori ed altro ancora. Viene inoltre adoperata per sviluppare simulazioni ; quest’ultimo campo nasce grazie alla possibilit´a offerta dai moderni sistemi di computer graphics di generare immagini realistiche in real-time. Oggi l’applicazione di questa materia riguarda molti settori, dallo sviluppo di videogiochi, al cinema, allo sviluppo di ricostruzioni virtuli di ambienti 3D. I dispositivi di output sono prevalentemente i monitor (ad esempio, fra i pi´ u comuni ai giorni d’oggi, CRT/LCD), mentre quelli di input sono, ad esempio, il mouse, il trakball1 , touch screnn ed altri. L’hardware dedicato per questa materia ´e composto da schede grafiche dotate di processore, frame buffer e memorie grafiche ausiliarie. Figura 6.1: Architettura di base per computer graphics. L’architettura harware di un generico sistema per la computer graphics 1 Tipo particolare di mouse che prevede la sfera nella parte superiore del dispositivo e manovrata direttamente dalla mano dell’utente. CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 48 ´e illustrato in Figura 6.1. In riferimento a tale figura si notano gli elementi fondamentali hardware come il Frame buffer, ossia una porzione di memoria dedicata alla memorizzazione dell’immagine come insieme di pixel da mostrare a video e la Graphics Board, cio´e una scheda hardware dedicata ad elaborare dati grafici e a pilotare il Display raster. Il comportamento di questi elementi pu´o essere cos´ı sintetizzato: • Frame buffer: utilizzato per l’immagazzinazione dell’immagine da visualizzare sul display; • Graphics Processing Unit (GPU): utilizzata per compiere elaborazioni specifiche necessarie per formare l’immagine (descritta nel prossimo paragrafo); • Graphics Memory: memoria ausiliaria utilizzata dalla GPU per compiere le operazioni sopra descritte. Sviluppare ambienti simulati, in 3D, significa creare scene in un mondo virtuale 3D composte da oggetti geometrici con attributi pittorici, immagini e testo. Le scene sono orientate secondo un punto di vista dal quale si devono visualizzare le immagini corrispondenti. Devono essere create inoltre le condizioni necessarie per un’interazione fra utente ed oggetti che compongono le scene le quali devono essere animate in conseguenza di cambiamenti di punto di vista, posizione degli oggetti ed eventuali deformazione degli stessi. Per la sintesi di immagini 3D devono essere definite due entit´a fondamentali: • Gli oggetti; • L’osservatore. CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 49 Ogni oggetto ´e la rappresentazione digitale di forma e caratteristiche di un oggetto reale tridimensionale. L’osservatore (viewer) ´e uno strumento che permette di ottenere un’immagine di una scena da un dato punto di vista; il rendering ´e il processo con cui un viewer genera un’immagine a partire da una scena. Per descrivere la forma geometrica di un oggetto virtuale sono necessarie delle primitive geometriche fornite dalle API; queste permettono di specificare un insieme ridotto di geometrie, come punti, spezzate ed insiemi di poligoni (mesh). Geometrie anche molto complesse si possono approssimare con insiemi formate da tali primitive. Per descirvere invece le caratteristiche pittoriche necessitano colori, trama delle texture e variabili necessarie per il materiale di composizione dell’oggetto stesso (spessore, riempimento,...). Figura 6.2: Stadi per l’elaborazione delle primitive. Essendo la scena composta da entit´a geometriche semplici (primitive) descritte per mezzo di liste di vertici, l’algoritmo di rendering ´e strutturato in modo da disegnare tutte le primitive elaborandole una alla volta in modo indipendente. Ogni primitiva, quindi, passa attraverso una sequenza di stadi di elaborazione, in ciascuno dei quali viene sottoposta a determinate operazioni (Figura 6.2). Il fatto di strutturare un render in modo da processare una primitiva indipendentemente dalle altre ed in pipeline ben determinate, permette di progettare hardware grafico che espliciti il parallelismo nei due livelli: CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 50 • Diversi stadi della pipeline eseguiti in parallelo su diverse primitive (parallelismo nella singola pipeline); • Diversi gruppi di primitive alimentano diverse pipeline (parallelismo delle diverse pipeline); u lenti della pipeline possono essere parallelizzati pi´ u massic• I passi pi´ ciamente per bilanciare il carico dei vari stadi. Ogni oggetto nella scena ha, in generale, il proprio sistema di riferimento; ´e necessario quindi, prima di tutto, portare tutti i vertici che definiscono le primitive nello stesso sistema di riferimento. Per fare questa operazione ogni vertice viene sottoposto ad una trasformazione geometrica.2 Figura 6.3: Rappresentazione del Volume di Vista. A questo punto viene deciso che cosa ´e visibile dal viewer corrente; le parti di primitiva che stanno al di fuori dell’inquadratura vengono eliminate interrompendo la pipeline. 2 La trasformazione geometrica pu´o essere diversa da primitiva a primitiva, ma identica per quei vertici che definiscono una data primitiva. CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 51 I vertici che rientrano nel Volume di vista vengono proiettati su un’immagine virtuale (Figura 6.3) in modo da calcolare la posizione della proiezione di ogni vertice sul piano immagine. Ogni posizione del piano immagine ´e in corrispondenza con una cella (pixel) del frame buffer. A questo punto, sapendo in quali posizioni del frame buffer finiscono i vertici di ogni primitiva visibile, ´e necessario calcolare tutti i pixel che nel frame buffer sono ricoperti dalla primitiva: tale operazione prende il nome di rasterizzazione. Ciascuno dei pixel considerati viene quindi colorato con un colore ricavato da quelli dati ai vertici secondo una certa regola stabilita a priori. 6.2 Graphics Processing Unit Le prime schede video in commercio avevano l’unico compito di trasformare le informazioni digitali fornite dal computer in formato analogico, cio`e nelle immagini visualizzate poi sul monitor. Oggi, le schede video sono componenti estremamente evoluti e potenti, dotate di funzioni specifiche per l’elaborazione degli oggetti 3D. Il loro funzionamento di base, per`o, rimane sostanzialmente identico. I programmi inviano alla schede video le informazioni relative alle immagini da visualizzare come sequenze di bit. I bit, tramite Digital to Analog Converter (DAC), vengono poi convertiti in un segnale analogico che viene trasmesso al monitor. Molte volte il DAC viene indicato con il termine RAMDAC. Il segnale analogico risultante `e composto da una serie di informazioni relative ai canali RGB, ovvero Red, Green and Blue. Quasi tutte le schede video e i monitor pi` u recenti sono dotati del connettore Digital Visual Interface (DVI), ossia di una tecnologia che permette di trasmettere direttamente i dati digitali, senza trasformarli in formato analogico, evitando quindi la possibilit`a che il segnale subisca delle interferenze CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 52 durante l’invio. Le schede video dell’ultima generazione hanno pi` u transistor di alcuni processori. Questo fa si che nelle schede grafiche prodotte da nVIDIA, sia stato introdotto il concetto di GPU, una abbreviazione di Graphics Processing Unit, per renderle confrontabili con la CPU del calcolatore. L’incremento del numero dei transistor nelle schede grafiche `e dato dall’obiettivo di renderle pi` u flessibili. Al momento le schede possono fare molto pi` u delle tradizionali 3D pipeline. L’aggiunta di nuova flessibilit´a apre molte possibilit´a nel 3D, ma anche nella manipolazione dell’immagine. Nei giochi 3D la programmabilit´a delle schede offre la possibilit´a di aggiungere un gran numero di nuove caratteristiche come ad esempio: Bump-mapping, Displacement Mapping, Toonshading, e la gestione dinamica dell’ambiente 3D. In queste schede ´e presente una pipeline programmabile composta dai seguenti due componenti: • Vertex-shaders; • Pixel-shaders. Quando viene eseguito il render di ogni poligono, usato per la rappresentazione della superficie, il valore del colore di ogni pixel ´e estratto dal pixel corrispondente dalla texture3 del poligono stesso. Il pixel Shaders pu´o anche eseguire calcoli per ogni pixel, come ad esempio fare il Merging con un’altra texture, sottrarre una costante dalla componenti del colore o moltiplicare il 3 Texture (tessitura): si intende la caratteristica superficiale di un materiale. Indica una mappa fotografica che si applica su un determinato oggetto geometrico per farlo sembrare costituito da un determinato materiale, come marmo, legno, metallo, vetro,.... solitamente realizzata tramite un’immagine in formato bitmap per essere inserita negli oggetti grafici 3D in modo da renderli pi` u realistici possibile. CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 53 pixel per una matrice di trasformazione. le GPU programmabili sono iniziate con la nVIDIA GeForce3 e da allora anche le schede grafiche pi´ u economiche hanno sia il Vertex che il Pixel Shader. Tendenzialmente queste schede hanno pi´ u pipeline parallele per gli shaders, le quali consentono di gestire pi´ u dati simultaneamente. Le prime versioni del Pixel shader supportavano solamente un numero limitato di operazioni 4 . Ci sono molte differenze che devono essere considerate quando vengono creati degli effetti sulle schede grafiche o nei processori. Le schede grafiche sono molto limitate, dal momento che ad ogni passo possono essere eseguite un numero ridotto di operazioni; ci sono anche alcune restrizioni che riguardano i salti condizionati, anche se nelle schede pi´ u recenti possono essere eseguiti in modo migliore. Attualmente, i linguaggi per programmare le schede grafiche possono essere paragonati a quelli utilizzati per programmare i processori. Cg e HLSL sono molto simili al linguaggio C e questo rende semplice la traduzione del codice scritto per il processore, nel codice per schede grafiche. 6.3 Vertex Shader Il vertex shader `e uno degli elementi essenziali per la grafica 3D. I mondi 3D sono tutti composti da modelli che si fondano sul triangolo come elemento grafico minimo. Ogni spigolo del triangolo ´e noto come vertice e viene riferito a una posizione nel mondo 3D, ulteriormente descritto utilizzando varie propriet`a, 4 Per ogni pixel potevano essere implementate otto operazioni sul colore ed otto sulle texture. CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 54 Figura 6.4: Esempio di triangolarizzazione. quali ad esempio la dinamica del vertice e le informazioni legate alla sua normale. Il primo stadio della pipeline del vertex shader elabora i singoli vertici del triangolo. Ogni vertice viene elaborato esaminando la sua posizione nella scena 3D, oltre alla posizione del punto di vista e delle sorgenti luminose presenti nell’ambiente virtuale. Grazie ai calcoli di trasformazione per matrici 3D, queste informazioni sui vertici vengono poi trasformate nello spazio 3D della cinepresa. Il Vertex Shader `e un’elaborazione grafica usata per aggiungere degli effetti speciali agli oggetti in un ambiente 3D, per mezzo di operazioni matematiche sui dati del vertice degli oggetti. Ogni vertice pu`o essere definito da molte variabili diverse. Ad esempio, si definisce un vertice sempre in base alla sua posizione in un ambiente 3D, utilizzando le coordinate (x,y,z). Inoltre, si possono definire i vertici grazie ai colori, alle texture e alla luminosit`a. In realt´a, i Vertex Shader non modificano il tipo di dati ma, semplicemente, ne cambiano i valori; in questo modo, un vertice appare con una texture o un colore diverso, oppure con una posizione diversa. Prima dell’introduzione della scheda video nVIDIA GeForce3, gli effetti shading sul vertice erano tal- CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 55 Figura 6.5: Schema di un Vertex Shader. mente difficili da trattare che potevano essere elaborati solo offline, per mezzo di server farm. Ora gli sviluppatori possono usare Vertex Shader per dare vita e personalit´a ai caratteri e alle ambientazioni, ad esempio per raffigurare la nebbia che cala in una valle ed avvolge una collina; oppure per ottenere delle espressioni del volto realistiche, facendo cos`ı apparire delle fossette o delle rughe quando un personaggio sorride. Alcuni esempi di effetti shading sul vertice sono l’elaborazione dei colori a matrice, per permettere ai programmatori di creare un’animazione realistica dei personaggi, in modo da offrire dei movimenti convincenti; deformazione delle superfici, che consente agli sviluppatori di creare delle superfici realistiche (ad esempio le onde o la superficie increspata dell’acqua); morphing del vertice, usato per cambiare la forma degli elementi del triangolo, in modo da ottenere una movimentazione naturale dei personaggi. Questi sono CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 56 50 0 −50 100 50 0 200 150 −50 100 50 0 −100 −50 Figura 6.6: Esempio di triangolarizzazione di un albero motore. solo alcuni degli esempi d’innumerevoli effetti che gli sviluppatori possono ottenere usando Vertex Shaders. Tramite l’elaborazione personalizzata della pelle e dei movimenti, gli sviluppatori possono creare degli effetti realistici per i personaggi e per le scene, sfruttando al massimo la tecnica grafica. Dal punto di vista hardware, il Vertex Shader `e un potente processore SIMD (Single Istruction, Multiple Data) capace di eseguire manipolazioni sulle geometrie tramite programmi definiti dagli sviluppari. Il processore agisce nella fase di Trasform & Lighting. Normalmente in questa fase i vertici dei modelli vengono prelevati dalla memoria, trasformati secondo operazioni geometriche, sottoposti a calcoli di illuminazione e proiettati sullo schermo. I normali motori di T&L (es: quelli del GF, GF2 e Radeon) mettono a disposizione una serie molto limitata di macro-funzionalit`a predefinite che i driver CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 57 si occupano di richiamare nella giusta sequenza. Lo scopo delle unit`a vertex shader ´e quello di prendere i dati che rappresentano la geometria di una scena, se necessario manipolarli (ad esempio tramite programmi vertex shader) e quindi riprogettare la scena (inizialmente tridimensionale) per la visione sui monitor bidimensionali dei computer. Una volta che i dati sono stati elaborati dalle unit`a Vertex Shader, vengono divisi in diversi blocchi e passati alle unit`a Pixel Shader che si occupano di svolgere ulteriori operazioni, come ad esempio l’applicazione di texture. 6.4 Pixel Shader Il Pixel Shader `e una tecnologia per l’applicazione di effetti grafici ai modelli poligonali. Si basa sull’elaborazione in tempo reale dei singoli pixel. Le attuali schede video pi` u evolute hanno dei Pixel Shader in grado di elaborare circa 3,3 miliardi di pixel al secondo. Per ogni fotogramma, se consideriamo una frequenza di 100 immagini al secondo, possono essere applicati fino a 16 effetti grafici. Numerosi limiti pratici, a cominciare dalla velocit`a della memoria video, rendono per`o impossibile questo risultato. Il Pixel Shader pu`o essere sfruttato dai programmatori per generare effetti grafici senza occupare il processore del PC. L’Antialising permette di correggere le antiestetiche calettature che vengono visualizzate lungo il bordo degli oggetti bidimensionali e tridimensionali. Esistono tre differenti versioni di antialiasing. Il Supersampling `e stata la prima modalit`a di antialising introdotta nelle schede video. Si tratta di una tecnologia che raddoppia o quadruplica automaticamente la risoluzione dell’intera immagine. I pixel vengono interpolati e cio`e fra ogni coppia di punti viene calcolato il colore intermedio. In questo modo i bordi risultano meno evidenti. Purtroppo richiede l’utilizzo di una CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 58 grande quantit`a di risorse da parte del processore grafico. Il Multisampling, invece, al posto dell’intera immagine elabora solo le zone corrispondenti ai bordi. A volte, per`o, l’operazione pu`o risultare errata e i bordi degli oggetti o non vengono riconosciuti o sono sbagliati. Il Full Scene Antialising `e una tecnica che offre un compromesso fra le due descritte precedentemente. I programmatori possono utilizzare entrambi i sistemi scegliendo quello pi` u adeguato allo stile grafico delle scene. La memoria della scheda video gioca un ruolo fondamentale nel determinare la qualit`a delle immagini e la fluidit`a dei filmati. Il processore grafico invia i dati alla memoria video. Rispetto alla classica RAM del computer, la memoria video risulta pi` u veloce ed efficiente . Inoltre sfrutta un sistema a doppia porta: la prima invia al RAMDAC le informazioni di un singolo fotogramma, mentre la seconda riceve dal processore grafico quelle relative al successivo. Quando le informazioni sono state trasmesse, nella prima area vengono trasferiti i dati della seconda mentre in quest’ultima vengono caricati i dati del fotogramma seguente. In questo modo il flusso dei fotogrammi risulta costante permettendo di visualizzare filmati e animazioni senza scatti. Nella scelta di una scheda video `e opportuno anche analizzare le porte a disposizione. L’ombreggiatura dei pixel `e un’operazione intrinsecamente impegnativa dal punto di vista matematico. Le equazioni grafiche, soprattutto per quanto riguarda l’illuminazione, sono estremamente complesse e hanno bisogno di un gran numero di calcoli. Effetti quali la rifrazione, la riflessione, la normalizzazione e il rilievo, richiedono un gran numero di calcoli matematici di vario tipo. Oltre a ci`o, la simulazione di materiali complessi in tempo reale richiede una quantit`a enorme di potenza di calcolo. Moltiplicazione e somma sono funzioni matematiche molto comuni nella grafica 3D. Questi calcoli, definiti anche come multiply-add (MADD), sono presenti nelle trasformazioni, nel- CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 59 l’illuminazione, nel calcolo di mappe normali e in numerose altre operazioni. Il motore CineFX della nVIDIA, accelera le operazioni MADD contribuendo a incrementare il throughput complessivo dei pixel shader. Ad esempio, le GPU GeForce 7800 vantano prestazioni MADD anche doppie rispetto ai dispositivi della generazione precedente. Esistono anche schede d’acquisizione di tipo PCI con a bordo tutto l’hardware necessario per la codifica istantanea dei filmati nei formati compressi pi` u diffusi. La tecnologia AGP o Accelerated Graphics Port, nata dall’evoluzione del bus PCI 2,1 circa 9 anni fa, `e definitivamente tramontata. Al suo posto `e gi`a stata introdotta la tecnologia PCI Express, dotata di una struttura hardware simile a quella delle schede PCI e AGP e caratterizzata dallo stesso tipo di connettore a pettine. Dato che un bus PCI Express raddoppia le prestazioni rispetto a un bus 8x, esistono due diverse soluzioni per sfruttare la tecnologia PCI Express all’interno di una scheda video: con supporto nativo oppure con uso di un bridge. Nel primo caso il processore grafico dialoga usando direttamente il bus PCi Express. La modalit`a nativa consente di ottenere una banda di trasmissione sincrona da scheda video a chipset per un massimo di 4 GBps, sia in ricezione, sia in trasmissione. Nel secondo caso viene usato un circuito ponte che converte i segnali da AGP a PCI Express. In questo modo un processore grafico di tipo AGP pu`o essere montato senza problemi su una scheda dotata di tecnologia PCI Express. NVidia ha scelto quest’ultima modalit`a per riconvertire le proprie schede AGP. Le prestazione subiscono per`o una drastica riduzione dovuta alle limitazioni dello stesso standard AGP: 2 GBps in ricezione e circa 10 MBps in trasmissione. Grazie alla nuova tecnologia TurboCache una quota della memoria di sistema del computer viene trattata in modo identico alla memoria video. Questo permette di compiere tutte le operazioni di rendering direttamente nella memoria di sistema. Turbo Cache CAPITOLO 6. SCHEDE VIDEO PROGRAMMABILI 60 sfrutta appieno la potenza del collegamento PCI Express e l’acceso alla RAM di sistema avviene da parte del processore grafico scavalcando completamente il processore del PC. Oltre a nVidia e ATI anche XGI ha iniziato la sperimentazione della propria tecnologia turbo cache che verr`a probabilmente resa disponibile sotto il nome di Dash Cache. I nuovi modelli di schede video per computer portatili sono equipaggiati con speciali sezioni video. NVidia a questo proposito ha realizzato la GeForce Go 6600. Essa sfrutta la tecnologia Turbo Cache, che combina la capacit`a e la banda della memoria video dedicata con la memoria di sistema per aumentare le prestazioni senza incidere sui consumi energetici. Inoltre adopera la tecnologia PowerMizer 5.0, che garantisce il massimo delle prestazioni senza intaccare troppo l’autonomia della batteria. Anche ATI ha realizzato una soluzione video di nuova generazione per i portatili, chiamata Mobility Radeon X700. Si tratta di un processore grafico espressamente studiato per i portatili dedicati agli amanti dei videogiochi. Basato su una tecnologia costruttiva a 11 nanometri, sfrutta le nuovissime memorie GDDR3 e l’architettura PCI Express. Infine, grazie alla tecnologia PowerPlay, garantisce una perfetta gestione dei consumi e una lunga durata delle batterie. Capitolo 7 Metodo Implementato In questo Capitolo ´e descritta la metodologia usata per raggiungere l’obietivo del lavoro presentato, ovvero l’implementazione di un algoritmo per il rendering delle deformazioni locali su oggetti virtuali deformabili dovute all’interazione con pi´ u interfacce aptiche. In ultima analisi viene studiata la portabilit´a del metodo studiato su graphics processing unit. 7.1 Modellizzazione di Oggetti Deformabili L’obiettivo di questo lavoro ´e la simulazione del multicontatto di un oggetto deformabile. Lo studio iniziale ´e quello che riguarda le caratteristiche degli oggetti simulati, ossia definire quali sono le propriet´a che rendono un oggetto virtuale il pi´ u possibile vicino a quello reale. Sicuramente, affinch´e l’utente abbia nell’ambiente virtuale le stesse sensazioni della realt´a, necessita che gli oggetti simulati abbiano dimensioni e colori realistici e che, al contatto con l’operatore, si comportino come se fossero reali. Quando si vuole rappresentare un qualsiasi oggetto all’interno di un am61 CAPITOLO 7. METODO IMPLEMENTATO 62 Figura 7.1: Esempio di superficie triangolarizzata. biente virtuale, uno dei metodi possibili ´e tramite elementi infinitesimali di volume, trattabili poi da metodi quali ad esempio FEM, per studiare come il corpo si muove o si deforma. Qualora si tratti di oggetti complessi o di dimensioni importanti, diventa computazionalmente oneroso calcolare il comportamento di ogni volume infinitesimale in cui il corpo ´e stato scomposto, soprattutto se la deformazione o il movimento impresso al corpo devono essere visualizzabili in real-time, cio´e con una frequenza di aggiornamento compresa fra 30Hz e 60Hz. Per poter fare fronte a tale situazione, vengono introdotte alcune semplificazioni: per prima cosa sono stati considerati solo i volumi infinitesimali superficiali dell’oggetto in esame e poi, di tali blocchetti, vengono processati solo i vertici sulla superficie, approssimando cos´ı il corpo con un insieme di punti pi´ u o meno grande, a seconda di quanto si vuole riprodurre fedelmente la superficie esterna. A tali vertici sono date delle propriet´a, per poter simulare le caratteristiche dell’oggetto rappresentato, come ad esempio stiffness CAPITOLO 7. METODO IMPLEMENTATO 63 (cio´e durezza o resistenza a forze di contatto), vincoli di posizione o relazioni ´ anche possibile attribuire delle dinamiche pi´ con altri vertici. E u o meno complesse a tali vertici, come ad esempio un sistema massa-molla, con o senza smorzatore. Una volta stabilito il numero di vertici, per poter riprodurre la superficie dell’oggetto, ´e necessario unirli tramite dei segmenti e le primitive geometriche che solitamente vengono preferite sono i triangoli, perch´e i vertici di un triangolo sono complanari e, pertanto, ´e possibile interpolarne le propriet´a in maniera univoca ed in particolare sono le strutture su cui si basano le attuali GPU. Figura 7.2: Rappresentazione di vettori normali ai vertici dei triangoli. Ad ogni vertice, poi, ´e associata una normale, ovvero un vettore normalizzato che segue il movimento del vertice su cui ´e posizionata e serve per poter creare effetti di luce sull’oggetto virtuale creato. La loro presenza ´e di fondamentale importanza per aumentare il realismo visivo sia dell’oggetto CAPITOLO 7. METODO IMPLEMENTATO 64 rappresentato, che della simulazione realizzata. Si cerca inizialmente quindi di rappresentare le caratteristiche geometriche dell’oggetto virtuale tramite la tecnica della triangolarizzazione. I triangoli non sono solitamente creati a mano ma vengono convertiti da altri file o generati da programmi esterni. Solitamente ogni triangolo ´e definito da una terna triangolo { <vertice1>, <vertice2>, <vertice3> } in cui < verticen > ´e un vettore definito dalle coordinate (x,y,z) di ciascun vertice del triangolo. Dal momento che i triangoli sono superfici perfettamente piane, sar´a necessario un numero molto grande di triangoli per approssimare una superficie curva. Tuttavia, la capacit`a umana di percezione delle superfici piane dipende principalmente dal modo in cui sono definite le luci e le ombre. Modificando artificialmente le normali alla superficie (come analizzato nei prossimi paragrafi), ´e possibile simulare superfici lisce ed uniformi e nascondere cos`ı gli spigoli tra i triangoli adiacenti. Inizialmente ´e stato considerato un piano triangolarizzato dove la dinamica di ogni vertice ´e simulata tramite un sistema massa-molla con smorzatore, cos´ı da generare resistenze alle forze di contatto diverse; ogni vertice ´e vincolato a muoversi lungo la direzione della sua normale acquisendo cos´ı un unico grado di libert´a. (Figura 7.5a) Figura 7.3: Curva triangolarizzata con normali sui vertici Se ad ogni vertice fosse applicata una dinamica realizzata soltanto da una CAPITOLO 7. METODO IMPLEMENTATO 65 molla, il risultato sarebbe quello di un sistema altamente instabile poich´e ogni forza esterna applicata ad un vertice creerebbe oscillazioni infinite, che, in certi casi, potrebbero aumentare di intensit´a fino alla completa rottura del sistema1 . Questo fenomeno ´e decisamente attenuato applicando una massa in serie alla molla, visto che con questa si crea un’attrito in grado di frenare le oscillazioni. La configurazione finale usata tuttavia, presenta anche uno smorzatore in parallelo alla massa poich´e, con questo dispositivo, ´e possibile controllare meglio la dinamica dei vertici evitando quindi la possibilit´a di instabilit´a dell’intero sistema. Quindi, attraverso l’uso delle tre costanti elastica, di massa e di smorzamento, si riescono a simulare sia oggetti molto rigidi (piccola costante elastica ed alte costanti di smorzamento e di massa) che oggetti molto flessibili (grande costante elastica e basse costanti di smorzamento e di massa). 7.2 Analisi e Simulazione del Contatto con Oggetti Virtuali Deformabili Una volta definiti i parametri dell’oggetto virtuale, ´e stata analizzata la sua deformazione. L’obiettivo ´e quello di riuscire a toccare un oggetto virtuale, tramite interfacce aptiche, in modo da provocare in esso una o pi´ u deformazioni locali, facendo avvertire all’operatore la struttura dell’oggetto che sta toccando. Dal punto di vista geometrico, nel caso in cui l’operatore agisce con una sola interfaccia aptica, si vuole applicare una forza in un triangolo della superficie dell’oggetto in modo che il triangolo interessato si sposti in 1 Dipende dal metodo di integrazione: ad esempio ´e evidente che il sistema pu´o risultare instabile se risolto con il metodo di Eulero Esplicito. CAPITOLO 7. METODO IMPLEMENTATO 66 una nuova posizione in funzione della forza a cui ´e stato sottoposto e della dinamica a cui ´e stato vincolato precedentemente con la scelta del modello. Figura 7.4: Simulazione della deformazione di un piano dovuta alla collisione con una interfaccia aptica. Facendo un raffronto con la realt´a si nota come, in oggetti abbastanza elastici come ad esempio la superficie del volto umano, alla pressione di un dito, questa provoca una fossetta ovviamente non puntiforme, ma che coinvolge una certa regione attorno al punto di contatto e non solo, ma che pi´ u la forza cresce e pi´ u questa regione si stringe e si allunga (fino ad arrivare ad un valore massimo oltre al quale non si ha pi´ u deformazione). Per simulare questo aspetto, tornando all’utilizzo di un piano triangolarizzato descritto nel paragrafo precedente, ´e stata utilizzata una funzione gaussiana normalizzata. Questa funzione rispecchia molto il comportamento della deformazione in oggetti reali poich´e in base all’intensit´a della forza di contatto, aumenta o diminuisce il raggio della gaussiana e, di conseguenza, il numero di triangoli CAPITOLO 7. METODO IMPLEMENTATO 67 coinvolti nella deformazione (Figura 7.5b). ´ stata scelta la gaussiana poich´e, grazie alla sua forma caratteristica, in E caso di collisione con il piano, riesce a diminuire in modo naturale l’effetto della deformazione allontanandoci dal punto di contatto. La curva viene centrata in corrispondenza del punto di collisione e viene caratterizzata da un vettore media direttamente proporzionale all’intensit´a della forza e da una varianza unitaria. Quando ad un vertice della superficie deformabile viene applicata una forza (punto di collisione utente-oggetto virtuale) questo si muove con la dinamica massa-molla-smorzatore seguendo la funzione gaussiana che d´a al punto di contatto la sua altezza massima, ed ai punti interessati (ad esso adiacenti entro il raggio della gaussiana stessa) altezze via via minori fino a tendere a zero nella restante parte di piano non interessata dalla deformazione. La funzione che rende tutto questo possibile ´e stata svilup- pata in ambiente M atlabr . La funzione implementata, come prima operazione, controlla se vi ´e collisione fra l’end-effector dell’interfaccia aptica e la superficie dell’oggetto virtuale. Per fare ci´o si adottano algoritmi di collision detection, processo atto ad individualre se l’interfaccia aptica ´e in contatto con gli oggetti virtuali e, nel caso in cui questo accada, deve essere in grado di indicare la penetrazione lungo i tre assi.2 In caso affermativo centra la gaussiana nel punto di contatto. Viene quindi calcolata la distanza fra il punto di collisione ed il vertice analizzato; la quota dei vertici rientranti in un certo raggio r (descritto successivamente) viene quindi aggiornata ad un valore calcolato tramite la funzione della dinamica scelta: ogni vertice sar´a sottoposto ad una forza 2 Il processo di collision detection ´e computazionalmente dispendioso se la scena virtuale ´e molto complessa. CAPITOLO 7. METODO IMPLEMENTATO calcolata tramite la funzione gaussiana µ ¶ 2 1 −r f orce = − √ ∗ e 2 (zposition − zprobe ) 2π 68 (7.1) in cui r rappresenta la distanza del vertice esaminato dal punto di contatto, zposition e zprobe sono rispettivamente il valore nell’asse z della posizione del vertice e quello nell’asse z della posizione del probe. Si nota quindi come il vertice coincidente con il punto di collisione ´e sottoposto alla forza maggiore (centro della gaussiana) e, tutti i vertici adiacenti, a forze via via minori con l’allontanarsi dal centro della gaussiana. Viene ora calcolata l’accelerazione del moto dei vertici come a= (−k ∗ position − β ∗ velocita + Fext ) m (7.2) in cui K rappresenta la costante elastica della molla, β la costante di smorzamento, Fext la forza proveniente dall’interfaccia aptica ed m la massa considerata nei vertici. Per risolvere la dinamica ´e stato usato il metodo di Eulero esplicito, in modo da ottenere l’aggiornamento della velocit´a e quello della posizione come posnew = posold + vel ∗ dt; velnew = velold + a ∗ dt; (7.3) in cui dt rappresenta il passo di integrazione. I vertici considerati coinvolti nella deformazione sono quelli rientranti nel raggio caloclato come q raggio = (xposition − xprobe )2 + (yposition − yprobe )2 (7.4) che risulta essere la distanza euclidea fra la posizione planare del vertice e quella del probe dell’interfaccia aptica. Il risultato ottenuto ´e illustrato in figura 7.4 in cui si vede come il piano, in corrispondenza del punto di contatto, si deforma presentando una cavit´a di forma gaussiana. CAPITOLO 7. METODO IMPLEMENTATO 69 Figura 7.5: Modello per le deformazioni locali Una volta simulata la deformazione del piano soggetto ad un’unica forza esterna, sono state introdotte pi´ u forze agenti e quindi studiata una tecnica per simulare questo nuovo aspetto. 7.3 Analisi e Simulazione del Contatto Multiplo con Oggetti Virtuali Deformabili In questo paragrafo si analizza il caso in cui l’oggetto ´e sottoposto alla collisione con pi´ u interfacce aptiche. La deformazione da implementare questa volta risulta molto complessa poich´e pi´ u punti di contatto formano varie configurazioni di deformazione. In definitiva quando le interfacce aptiche collidono con la superficie, questa si deve muovere, come nel caso precedente, seguendo la dinamica originariamente descritta, tuttavia, ogni volta che i punti di contatto si influenzano si vengono a formare situazioni per le quali non si pu´o considerare ogni deformazione a se stante, ma i triangoli soggetti alla pressione di pi´ u interfacce aptiche vanno studiati in modo da avere deformazioni realistiche poich´e, con CAPITOLO 7. METODO IMPLEMENTATO Figura 7.6: 70 Simulazione della deformazione di un piano dovuta al multicontatto con tre interfacce aptiche. la sola sovrapposizione delle curve gaussiane non si ottengono risultati accettabili. Inoltre, quando un probe esce dal piano, i triangoli della superficie devono sempre tendere alla posizione di equilibrio in un tempo accettabile sia per la simulazione che per la sensazione che avverte l’utente. Il problema fondamentale ´e stato quello di implementare funzioni che esprimessero in modo realistico la dinamica di situazioni in cui i punti di contatto sono molto vicini fra loro. La funzione scelta per la deformazione ´e ancora la gaussiana. Se i punti di contatto sono tali da provocare deformazioni che non si influenzano la simulazione riesce perfettamente poich´e le gaussiane si possono considerare indipendenti; quando invece i contatti sono vicini e le gaussiane prodotte si sovrappongono (come illustrato in Figura 7.9), subentra il problema di come trattare la parte comune a entrambe le curve. CAPITOLO 7. METODO IMPLEMENTATO Figura 7.7: 71 Simulazione della deformazione di un piano dovuta al multicontatto con due interfacce aptiche. In un primo momento si ´e pensato di sommare i contributi delle curve e far assumere al piano tale valore, per´o il risultato ´e stato molto lontano dalla realt´a visto che se i punti di contatto sono vicini, anche con piccole forze, una volta sommati i singoli contibuti, si ottengono grandi deformazioni. La seconda soluzione studiata ´e stata quella di prendere come valore finale il minimo valore di intersezione fra le gaussiane coinvolte, ma tuttavia anche questa soluzione, in determinate circostanze, non ha prodotto buoni risultati. Il problema fondamentale da risolvere, sta nella simulazione della deformazione in corrispondenza della linea di intersezione fra due o pi´ u gaussiane adiacenti. In tale situazione si vengono a creare dei punti angolosi lungo l’intersezione, ottenendo cos´ı un effetto visivo poco realistico. Per ovviare a questo problema, nell’ultima soluzione implementata ´e stato scelto di prendere come valore finale della deformazione sull’intersezione, il valore della forza agente CAPITOLO 7. METODO IMPLEMENTATO 72 Figura 7.8: Rappresentazione del punto in cui si sovrappongono le forze derivanti da due interfacce aptiche diverse. nel punto in questione, decrementato di una quantit´a espressa dalla seguente legge Fi = F − (k ∗ r) (7.5) dove Fi ´e la forza agente sull’i-esimo punto considerato, k ´e una costante, ed r ´e la distanza tra il vertice analizzato ed il punto di contatto corrente. Per migliorare ulteriormente l’effetto grafico della deformazione, soprattutto in caso di alta densit´a di triangoli, si considerano anche i vertici in un intorno di quelli interessati dall’intersezione tra due deformazioni. Viene quindi incrementata la forza agente in questi punti, secondo la seguente relazione Fi = min(Fi , F ) − [abs(Fi − F ) ∗ β] (7.6) in cui Fi ´e la forza agente sull’i-esimo vertice, F ´e la forza calcolata in base alla funzione gaussiana e β ´e una costante di correzione. I risultati sono apprezzabili e mostrati in Figura 7.6, Figura 7.7 e Figura 7.11. CAPITOLO 7. METODO IMPLEMENTATO 73 Figura 7.9: Rappresentazione della deformazione dovuta a due interfacce aptiche considerando la forza minima nei punti di intersezione. 7.4 Studio degli Effetti Luminosi su Ambienti Virtuali Di fondamentale importanza per la simulazione di oggetti ´e la rappresentazione del colore. Nella realt´a, i colori degli oggetti che noi vediamo, sono il risultato della luce che colpisce tali oggetti e del modo in cui essi riflettono la luce; in un ambiente virtuale devono essere riprodotte sfumature, ombre e tutte quelle caratteristiche che rendono veritiero l’oggetto simulato. Questo colore pu´o cambiare da punto a punto, anche su oggetti di colore uniforme a causa, ad esempio, di propriet`a della superficie (lucida/opaca) o dell’angolo di incidenza tra superficie e luce riflessa. Per simulare ci´o che avviene nella realt´a ´e necessario un Modello di illuminazione, realizzato tramite un’equazione matematica che descrive come ogni punto dell’oggetto ´e illuminato in funzione di sorgenti di luce presenti nella scena, della posizione del punto, dell’orientamento della superficie del punto CAPITOLO 7. METODO IMPLEMENTATO 74 Figura 7.10: Rappresentazione della deformazione dovuta a due interfacce aptiche considerando nei punti di intersezione la forza minima aumentata di un valore k funzione dell’intensit´a della forza. Figura 7.11: Rappresentazione della deformazione dovuta a due interfacce aptiche considerando nell’intorno dei punti di intersezione la forza minima aumentata di un valore k funzione del raggio. e della propriet´a con cui il materiale nel punto riflette la luce. Il processo di calcolo dell’equazione di illuminazione in uno o pi´ u punti dell’oggetto si chiama lighting, mentre il modo in cui il lighting viene utilizzato per calcolare e simulare l’illuminazione dell’oggetto durante il rendering si chiama shading. Negli algoritmi di illuminazione locali, entrambi sono calcolati come se ogni punto della scena ricevesse luce da tutte le sorgenti senza tenere conto di ombre e di luce riflessa da altri oggetti. Nel modello pi´ u diffuso, implementato anche con DirectX ed OpenGl, CAPITOLO 7. METODO IMPLEMENTATO 75 l’illuminazione di un punto ´e considerata come risultante della combinazione di quattro componenti: • Componente emissiva, illuminazione generata dall’oggetto stesso; • Riflessione diffusa, luce proveniente da una direzione e riflessa ugualmente in tutte le direzioni; • Riflessione speculare, luce proveniente da una direzione e riflessa in modo diverso nelle diverse direzioni; • Componente ambientale, luce proveniente da tutte le direzioni e riflessa in tutte le direzioni. La componente emissiva ´e il modello di illuminazione pi´ u semplice e, tuttavia, il meno realistico, in cui ogni oggetto ´e dotato di una propria intensit´a luminosa, senza che vi siano fonti esterne di illuminazione. L’oggetto viene considerato come una sorgente da cui la luce scaturisce in modo uniforme da tutti i punti e verso tutte le direzioni. Questo modello elementare viene descritto tramite l’equazione I = Ki (7.7) in cui I rappresenta l’intensit´a risultante, ed il coefficiente Ki la luminosit´a intrinseca dell’oggetto. Non essendoci termini dipendenti dalla posizione del punto ´e possibile calcolare I una sola volta per tutto l’oggetto; il risultato ´e quello di avere una sagoma colorata in modo uniforme3 . Tuttavia questa componente ´e usata solamente in quei casi in cui si richede la rappresentazione di sorgenti di luce direttamente visibili all’osservatore. 3 A meno che i singoli poligoni di un poliedro non abbiano diversi colori. CAPITOLO 7. METODO IMPLEMENTATO 76 Figura 7.12: Rappresenatazione dell’angolo θ fra il vettore N normale alla superficie ed il vettore L della direzione del raggio luminoso. Il comportamento descritto tramite la riflessione diffusa prevede il posizionamento di una sorgente luminosa puntiforme che emette uniformemente in tutte le direzioni. La luminosit´a di ogni singolo punto di un oggetto illuminato da questa sorgente dipende dalla direzione in cui i raggi incidono sulla superficie e dalla distanza dalla sorgente luminosa. Come illustrato in Figura 7.12, con questo modello la luminosit´a dipende soltanto dall’angolo θ formato dalla direzione del raggio luminoso L e la normale alla superficie nel punto di incidenza N ; in generale ´e diversa per ogni punto curvo, mentre risulta uguale in tutti i punti di una superficie piana. Come si pu´o notare dalla Figura 7.13, la quantit´a di luce che arriva all’osservatore non dipende dalla posizione dell’osservatore stesso. L’equazione dell’illuminazione, per la componente della riflessione diffusa, ´e data dalla legge di Lambert I = Ip Kd cosθ (7.8) CAPITOLO 7. METODO IMPLEMENTATO 77 Figura 7.13: Come si pu´o vedere, la luce che arriva all’osservatore non dipende dalla sua posizione. in cui Ip rappresenta l’intensit´a della sorgente luminosa, Kd il coefficiente di riflessione diffusa del materiale che assume valori tra zero ed uno, θ l’angolo tra la direzione della luce e la direzione normale alla superficie. L’angolo θ deve assumere un valore compreso fra 0o e 90o per dare contributo all’illuminazione del punto, in altre parole, un punto della superficie non ´e illuminato da sorgenti lumose che stanno dietro ad essa. Se i vettori N ed L sono normalizzati, l’equazione si pu´o riscrivere usando il prodotto scalare ¯ · L), ¯ 0] I = Ip Kd max[(M (7.9) Se la sorgente luminosa ´e posta a distanza infinita dall’oggetto che illumina (come ad esempio pu´o essere considerato il sole), l’angolo tra i raggi di luce e tutte le superfici parallele ´e costante. In questo caso, la sorgente luminosa si dice direzionale; il vettore L non deve essere calcolato per ogni punto, ma ´e una costante della sorgente. Considerando anche l’attenuazione dell’illuminazione all’aumentare della distanza, si introduce un fattore di attenuazione fatt inversamente proporzionale alla distanza della sorgente di luce dalla superficie. L’equazione della com- CAPITOLO 7. METODO IMPLEMENTATO 78 ponente diffusa diviene ora ¯ · L) ¯ I = fatt Ip Kd (M (7.10) Il fattore di attenuazione rappresenta il caso che si ottiene quando, a parit´a di materiale e orientamento della superficie, un oggetto pi´ u lontano viene illuminato pi´ u debolmente. Questo fattore pu´o essere di fondamentale importanza, ad esempio, per distinguere nella scena due superfici parallele dello stesso materiale che si trovano a distanze diverse, ma le cui proiezioni sull’immagine si sovrappongono; senza il fattore di attenuazione il bordo di separazione delle due superfici sarebbe indistinguibile. Figura 7.14: Nel caso di superficie non totalmente opaca, la luce non viene riflessa in ugual modo in tutte le direzioni (’a’), mentre da una superficie lucida, la luce viene riflessa soltanto nella direzione R di riflessione (’b’). Una tipica formulazione, basata su esperimenti empirici, del fattore di attenuazione ´e la seguente µ fatt ¶ 1 = min ,1 c1 + c2 dL + c3 d2L (7.11) dove dL ´e la distanza della sorgente luminosa e le costanti c1 , c2 e c3 vengono definite dall’utente ed associate alla sorgente luminosa. Il termine fondamentale dipendente dal quadrato della distanza (d2l ) ´e bilanciato dagli altri, CAPITOLO 7. METODO IMPLEMENTATO 79 soprattutto da c1 , che, nel caso ch la luce sia molto vicina, impediscono al denominatore di divenire troppo piccolo. L’espressione ´e comunque limitata ad 1 per evitare che diventi un fattore di amplificazione. Figura 7.15: Caso di riflessione perfettamente speculare: l’osservatore pu´o vedere la luce riflessa soltanto se la posizione di vista ´e allineata con la riflessione stessa. Il fattore della riflessione speculare tiene conto del caso in cui, se la superficie di un oggetto non ´e totalmente opaca, la luce non viene riflessa in modo uguale in tutte le direzioni (come illustrato in Figura 7.14a). Da una superficie totalmente lucida, come uno specchio, la luce viene riflessa solo nella direzione di riflessione R, ottenuta riflettendo L (direzione di incidenza) rispetto al vettore normale alla superficie N (Figura 7.14b). In caso di riflessione perfettamente speculare, l’osservatore pu´o vedere la luce riflessa solo se la direzione di vista ´e allineata con la riflessione stessa, ossia, in riferimento alla Figura 7.15a, se l’nagolo α ´e uguale a zero4 . Considerando il coefficiente di decadimento approssimato da cosn α, in cui em4 Per riflettori non perfetti (plastica, cera, ...) solitamente si assume una riflessione massima per α = 0 che viene attenuata con decadimento rapido all’aumentare dell’angolo α tra R e V. CAPITOLO 7. METODO IMPLEMENTATO 80 phn ´e detto esponente di riflessione speculare del materiale, la componente di riflessione speculare dell’equazione di illuminazione risulta I = fatt Ip Ks cosn α (7.12) dove Ks rappresenta il coefficiente di riflessione speculre tipico del materiale (compreso nell’intervallo [0,1]). Unendo i contributi delle componenti diffusa e speculare ed usando tutti i vettori normalizzati, l’equzione si pu´o riscrivere come ¹ º n ¯ ¯ ¯ ¯ I = fatt Ip Kd (N · L) + Ks (R · V ) (7.13) che rappresenta il modello completo di equazione di illuminazione diretta. La componente ambientale viene aggiunta per approssimare il contributo di luce riflessa delle molteplici superfici presenti nell’ambiente, sorgente di luce diffusa e non direzionale. L’equazione che esprime questo fattore I = Ia Ka (7.14) mette in risalto la non dipendenza dall’orientamento della superficie, in cui Ia ´e l’intensit´a della luce ambientale, uguale per tutti gli oggetti, e Ka ´e il Ka ´e il coefficiente di riflessione ambientale (compreso nell’intervallo [0,1]), caratteristico del singolo materiale. In conclusione, sommando tutti i contribuiti sopra esaminati, si ottiene la seguente equazione completa ¹ º n ¯ ¯ ¯ ¯ I = Ki + Ia Ka +fam Ip Kd (N · L) +Ks (R · V ) |{z} | {z } | {z } | {z } (7.15) CAPITOLO 7. METODO IMPLEMENTATO 81 dove i termini evidenziati si riferiscono rispettivamente alla componente emissiva, alla componente ambientale, alla riflessione diffusa e all riflessione speculare. Per valutare l’equazione in un punto deve essere nota prima di tutto la posizione del punto, poi la direzione normale in quel punto, le caratteristiche del materiale nel punto, la posizione della luce e le sue caratteristiche ed in fine la posizione dell’osservatore. Utilizzando il modello di Phong si dovrebbe calcolare il colore di ogni punto di ogni superficie nella scena attuando due passi: • Calcolare la normale alla superficie nel punto; • applicare il modello di illuminazione. Tuttavia questo approccio ´e molto dispendioso e, quindi, ´e preferibile ricorrere a metodi di shading delle superfici. Questi metodi sono approssimativi, ma molto meno costosi in termini computazionali poich´e operano su poligoni come entit´a elementari anzich´e punto per punto. Il modello pi´ u semplice di shading per un poligono ´e chiamato constant shading o (flat shading) che consiste nell’applicare il modello di illuminazione scelto una sola volta per ogni poligono della scena e poi usare il valore detrminato per l’intera superficie del poligono. Questo metodo ´e estremamente efficiente, visto che l’equazione di illuminazione va calcolata una sola volta per ogni poligono, tuttavia il risultato visivo pu´o non essere del tutto soddisfacente5 . Per migliorare questo aspetto ´e spesso usato lo Shading interpolato, che, 5 Se la mesh dei poligoni approssima una superficie pi´ u complessa (come ad esempio una curva), il risultato lascia visibile la suddivisione (artificiosa) in poligoni senza rendere nell’immagine l’andamento della superificie approssimata. CAPITOLO 7. METODO IMPLEMENTATO 82 invece di valutare l’equazione di illuminazione in tutti i punti del poligono, la valuta solo nei vertici, per poi interpolare linearmente i valori trovati e determinare quelli per i lati ed i punti interni. Figura 7.16: Caso di due triangoli con un lato in comune: le normali nei vertici del lato condiviso saranno le stesse per entrambi i triangoli. La diretta evoluzione di questo metodo ´e rappresentata dal modello di Gouraud 6 . Questo considera le informazioni date da poligoni adiacenti considerando la geometria effettiva visualizzata; se la griglia di poligoni rappresenta una superficie curva, per ogni vertice della griglia non si utilizza la normale al poligono, ma la normale alla superficie reale in quel punto. In questo modo il calcolo dello shading produce lo stesso valore su entrambi i lati di poligoni che hanno bordi in comune rendendo lo shading complessivo privo di salti. Questo metodo richiede che sia nota la normale alla superficie che si approssima in ogni vertice (come mostrato in Figura 7.17). Nel caso in cui non sia disponibile, si approssima con la media delle normali ai poligoni che condividono il vertice, ossia, in riferimento alla Figura 7.17, si ottiene nv = 6 n1 + n2 + n3 + n4 |n1 + n2 + n3 + n4 | (7.16) Gouraud Shading ´e un metodo usato per l’interpolazione dell’illuminazione calcolata nei vertici CAPITOLO 7. METODO IMPLEMENTATO 83 Figura 7.17: La normale nv ´e ottenuta come media delle normali ai poligoni che condividono il vertice. 7.5 Calcolo ed Aggiornamento delle Normali Come precedentemente esaminato, la caretteristica fondamentale che un oggetto virtuale deve avere affinch´e risulti il pi´ u simile possibile a quello reale ´e l’effetto luminoso; ossia, deve essere in grado di riprodurre le stesse caratteristiche di colore dell’oggetto reale. L’unica informazione utile per implementare questa caratteristica risiede nella conoscenza del vettore normale alla superficie coinvolta dal fascio luminoso. Si deve quindi calcolare, istante per istante durante la deformazione, questo vettore che seguir´a, inclinandosi, la superficie soggetta a forze esterne. Da un punto di vista matematico il calcolo delle normali ´e banale, visto che si ottiene tramite un prodotto vettoriale fra i lati del triangolo interessato, oppure fra i lati dei triangoli adiacenti al punto di interesse facendone poi un’eventuale media aritmetica. Tuttavia, avendo l’obiettivo di aggiornare le normali su GPU, questo metodo non pu´o essere implementato poich´e la re- CAPITOLO 7. METODO IMPLEMENTATO 84 10 asse Z 5 0 −5 −10 12 10 12 8 10 6 8 4 6 4 2 2 0 asse Y −2 0 −2 asse X Figura 7.18: Rappresentazione dei vettori normali alla superficie del piano in assenza di forze esterne. strizione delle schede video programmabili ´e proprio l’assenza di informazione di triangoli adiacenti e, quindi, non ´e possibile calcolare il prodotto vettoriale fra di essi. Geometricamente abbiamo che in assenza di forze esterne le normali si trovano in una condizione di equilibrio come illustrato in Figura 7.18. Al momento della collisione con il probe di un’interfaccia aptica i triangoli coinvolti si muovono, in modo da formare un andamento della superficie di tipo gaussiano, provocando una deformazione del piano. Il risultato desiderato ´e una roto-traslazione dei vettori normali ai triangoli, coinvolti nella deformazione, che dalla posizione di equilibrio arrivano a quella finale con un moto pressoch´e fluido. CAPITOLO 7. METODO IMPLEMENTATO 7.6 85 Implementazione su GPU Per poter aggiornare i vettori normali alla superficie di un oggetto virtuale sottoposto a deformazione ´e stata implementata una funzione che fornisce una dinamica da far seguire alle normali. Figura 7.19: Rappresentazione del contatto fra il probe di una interfaccia apticha ed il piano ottenuta con implementazione su GPU: a) Piano deformato; b) Deformazione con vettori normali alla superficie. Come fatto per i punti del piano che, sottoposti ad una forza esterna, seguono una dinamica dettata da una funzione gaussiana, per le normali ´e stata realizzata una funzione che le fa muovere dalla posizione a riposo fino a quella finale dettata dalla deformazione che subiscono i vertici del piano. Il problema che ´e stato affrontato ´e quello dell’assenza di informazione sui vertici adiacenti, per ogni istante di campionamento gli unici dati conosciuti CAPITOLO 7. METODO IMPLEMENTATO 86 sono il punto di applicazione della forza e la sua intensit´a. Risulta molto complicato quindi muovere le normali nelle posizioni desiderate, con la giusta inclinazione e traslazione7 . Facendo varie simulazioni su CPU del calcolo delle normali ne ´e stato studiato il moto quando l’oggetto era sottoposto a deformazione, per poi cercare, attraverso una funzione, di ricostruire questo moto avendo a disposizione soltanto i dati sopra citati. Figura 7.20: Rappresentazione del contatto fra i probes di due interfacce aptiche ed il piano ottenuta con implementazione su GPU: a) Piano deformato; b) Deformazione con vettori normali alla superficie. 7 Poich´e le normali risultano essere di lunghezza unitaria. CAPITOLO 7. METODO IMPLEMENTATO 87 La funzione implementata passa alle normali sottoposte a deformazione due angoli di rotazione α e β per creare rotazioni attorno a due assi. Dovendo in definitiva dare valori alle componenti (x,y,z) delle normali, prima di tutto sono state considerate posizionate sui vertici dei triangoli, in modo da fissare per le x e per le y gli stessi valori dei vertici, poi, per calcolare la direzione nella quale far girare la normale, la funzione implementata passa alla dinamica i due angoli di rotazione, dati appunto dallo studio fatto su CPU. Come per la dinamica del piano la funzione studiata ´e del tipo ¨ = fext − kp h − βp h˙ mh (7.17) dove m ´e la massa, kp ´e la costante elastica della molla, βp ´e la costante di smorzamento ed h l’altezza della gaussiana (che rappresenta di quanto si spostano i vertici dalla condizione di equilibrio). Le funzioni implementate per le normali sono del tipo Iα α ¨ = Rotazioneext − kα α − Bα α˙ (7.18) Iβ β¨ = Rotazioneext − kβ β − Bβ β˙ in cui Rotazioneext ´e la posizione dei giunti dell’interfaccia aptica, kα , Bα , kβ , Bβ sono costanti del moto ed α, β sono gli angoli da calcolare per dare le rotazioni volute alle normali. Le relazioni da rispettare per garantire la stabilit´a dell’intero sistema, in modo che la dinamica della deformazione dell’oggetto abbia la stessa velocit´a di quella dell’aggiornamento delle normali, sono k α = k p ; Bα = β p m m I I (7.19) kβ kp Bβ βp I = m; I = m CAPITOLO 7. METODO IMPLEMENTATO 88 Figura 7.21: Rappresentazione del contatto fra i probes di due interfacce aptiche ed il piano ottenuta con implementazione su GPU. da cui si ricavano i valori da dare alle costanti, in modo da ottenere una simulazione con risultati realistici. In ultima analisi ´e stato considerato l’aggiornamento delle normali in presenza di pi´ u interfacce aptiche. Come nel caso in cui due probe provocavano deformazioni dell’oggetto molto vicine fra di loro, e si studiavano i punti di intersezione delle gaussiane generate (paragrafo 7.3), cos´ı viene analizzato l’aggiornamento delle normali negli stessi vertici. In questo caso le normali sono soggette alla sommatoria degli angoli di rotazione dovuti alle varie deformazioni; viene quindi implementata una sovrapposizione degli effetti derivanti dalle deformazioni provocate dalle singole interfacce aptiche. Capitolo 8 Programmazione delle Schede Video Per programmare la GPU delle schede video sono necessari linguaggi di programmazione dedicati. Quello usato per lo sviluppo di questo lavoro ´e chiamato C for Graphics e viene di seguito descritto. 8.1 C for Graphics Il linguaggio C for graphics (Cg) consente di controllare gli shape, l’aspetto e il movimento di oggetti disegnati usando hardware grafico programmabile. Cg permette agli sviluppatori, con una piattaforma di programmazione completa, di creare effetti speciali e Real Time in piattaforme multiple. Grazie ad un nuovo livello di astrazione, Cg elimina la necessit´a di programmare direttamente l’hardware grafico con linguaggio assembly ed in modo pi` u facile rispetto ad OpenGL, DirectX ed altri. Cg ´e stato sviluppato in stretta collaborazione con Microsoft Corporation ed ´e compatibile sia con OpenGL API ed il linguaggio HLSL per DirectX9. 89 CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 90 Cg deriva dal linguaggio di programmazione C che ´e popolare, general purpose e nato nel 1970. Grazie alla sua diffusione ed alla caratteristica di essere clean design, il C pone le basi per molti linguaggi di programmazione, ad esempio per il C++ e Java. Tuttavia Cg si differenzia dal linguaggio da cui deriva poich´e ´e altamente specializzato per la grafica 1 . Cg ed altri linguaggi di shading, si differenziano dai linguaggi di programmazione convensionali essendo basati su un modello computazionale data-flow ; in tale modello i calcoli avvengono in risposta ai dati che passano attraverso una sequenza di processing steps. I programmi realizzati in Cg operano su vertici e frammenti, che vengono processsati quando viene renderizzata un’immagine. Un programma Cg non ´e da considerare un vero e proprio black box al quale arrivano triangoli e frammenti e, dopo una elaborazione, escono risultati, poich´e il processo di trasformazione ´e controllabile interamente dal programmatore. 8.2 GPU Vs CPU Sia che un PC o una console giochi abbia o meno una GPU, di certo necessita di una CPU che consenta l’esecuzione del sistema operativo e dei programmi applicativi. Le CPU sono, per costruzione, general purpose, ed eseguono applicazioni scritte in linguaggi anch’essi general purpose come, ad esempio, il Java. Grazie alla specializzazione delle GPU, queste risultano molto pi´ u veloci con i task grafici (come il rendering di scene 3d) rispetto alle CPU. Le nuove GPU sono in grado di processare decine di milioni di vertici per secondo e rasterizzare miliardi di frammenti per secondo. I linguaggi 1 Nessuno potrebbe mai creare un foglio di calcolo o un word processor in Cg. CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 91 di programmazione di alto livello, sono troppo generici per processare task specializzati inerenti vertici e frammenti. Per creare l’illusione di interattivit´a, un’applicazione 3D deve avere un rate di animazione di 15 o pi´ u immagini per secondo. Generalmente il Real Time ´e ottenuto con 60 o pi´ u frame per secondo, frequenza alla quale le interazioni con l’applicazione sembrano istantanee. I monitor per computer hanno un milione o pi´ u pixel, che devono essere ridisegnati per ogni frame; per le scene 3D, tipicamente le GPU processano ogni pixel dello schermo tante volte quante questo cambia il suo aspetto. Questo significa che applicazoni 3D in Real Time possono richiedere un update per secondo di centinaia di milioni di pixel. Assieme all’aggiornamento richiesto per i pixel, i modelli 3D sono composti di vertici che devono essere propriamente trasformati prima che siano assemblati in poligoni, linee e punti da rasterizzare in pixel; questo pu´o richiedere la trasformazione di decine di milioni di vertici per secondo. In pi´ u, tale processing grafico, avviene contemporaneamente al considerevole sforzo richiesto alla CPU per aggiornare l’animazione ad ogni nuova immagine. In fase di sviluppo di applicazioni 3D e giochi, per il rendering delle scene ´e necessario utilizzare sia la CPU che la GPU. Il Cg viene utilizzato come linguaggio di ausilio e supporto per linguaggi convenzionali come C e C++, dando vita ad un particolare stile di programmazione parallela: mentre la CPU esegue applicazioni convenzionali, queste possono anche richiamare in parallelo il processamento di vertici e frammenti sulle GPU, grazie a programmi scritti in Cg. CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 8.3 92 The Graphics Hardware Pipeline Una pipeline ´e una sequenza di blocchi che operano in parallelo ed in ordine prefissato. Figura 8.1: Esempio di pipeline. Ad ogni passo il blocco riceve l’input dal blocco precedente ed invia il suo output al blocco successivo, come in Figura 8.1. Come una catena di montaggio dove dozzine di automobili sono costruite allo stesso tempo, con ogni autovettura ad un diverso stadio della catena, una graphic hardware pipeline convenzionale processa una moltitudine di vertici, primitive geometriche e frammenti in modo pipelined. CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 93 Figura 8.2: Pipeline hardware grafico. 8.3.1 Trasformazione dei vertici Il primo step nella graphics hardware pipeline ´e la trasformazione dei vertici ed esegue una sequenza di operazioni matematiche per ogni vertice. Tali operazioni includono la trasformazione della posizione dei vertici da utilizzare per la rasterizzazione, generando le coordiante delle texture per il processo di texturing, eventualmente aggiungendo la luce ai vertici per determinarne il colore. 8.3.2 Triangolarizzazione e rasterizzazione I vertici trasformati entrano nello step successivo, dove avviene una triangolarizzazione ed una rasterizzazione. Per prima cosa i vertici vengono assemblati in figure geometriche (ad esempio triangoli) grazie ad informazioni che accompagnano la sequenza dei vertici. Il risultato di questo primo passo ´e una serie di triangoli, linee e punti. Il secondo passo consiste nel selezionare i poligoni della regione visibile dello spazio 3D e nella loro successiva rasterizzazione. La rasterizzazione ´e un processo per determinare l’insieme di pixel all’interno di una figura geometri- CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 94 ca (triangolo). Poligoni, linee e punti sono ognuno rasterizzati in accordo con le regole specificate per ogni tipo di primitiva geometrica. Il risultato della rasterizzazione ´e un insieme di sequenze di pixel, chiamati anche frammenti, con la relativa localizzazione. Non c’´e relazione fra il numero di vertici che ha una primitiva geometrica ed il numero di frammenti che venono generati quando questa e rasterizzata. Per esempio, un triangolo ´e caratterizzato solamente da tre vertici, ma pu´o coprire l’intero schermo e generare milioni di frammenti. 8.3.3 Interpolazione, Texturing e Coloring Una volta che una primitiva geometrica ´e rasterizzata in una serie di zero o pi´ u frammenti, questo step della pipeline interpola i parametri dei frammenti, genera una sequenza di texturing ed operazioni matematiche e determina il colore finale per ogni frammento. Oltre a trovare il colore finale dei frammenti, questo passo della pipeline pu´o determinare una nuova profondit´a o scartare un frammento in fase di aggiornamento dei pixel. 8.3.4 Operazioni di Rastering Lo step delle operazioni di rastering rappresenta l’ultimo passo nella sequenza delle operazioni sui frammenti. Queste operazioni sono funzioni standard nelle OpenGL e Direct3D. Durante tale passo, le parti nascoste sono eliminate tramite un processo chiamato Depth Testing. Durante questa fase, vengono inoltre implementati effetti come Blending e Stencil-Based Shadowing. CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 95 Figura 8.3: Step della pipeline. Figura 8.4: Step della pipeline. 8.3.5 Vertex Processor Programmabili Il Vertex Processor ´e l’unit´a hardware che esegue vertex program scritti in Cg. Come ´e possibile vedere in Figura 8.5, il processamento dei vertici in- CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 96 izia caricandone gli attributi nel vertex processor. Il vertex processor estrae sequenzialmente le istruzioni dal vertex program e le esegue fino a quando questo termina. Figura 8.5: Flow Chart di un processore di vertici programmabile. Le istruzioni hanno accesso ad un certo numero di insiemi di registri distinti, contenenti valori vettoriali come posizioni, normali e colori. I registri contenenti gli attributi dei vertici sono in sola lettura e possiedono anche CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 97 insiemi di attributi specifici per l’applicazione. I registri temporanei possono essere letti e scritti ed utilizzati per calcolare risultati intermedi, i registri di output, con i risultati, sono in sola scrittura, ed il programma ´e responsabile della scrittura dei risultati in tali registri; quando un vertex program termina, i registri di output contengono i vertici trasformati. Dopo le fasi di triangolarizzazione e rasterizzazione, i valori interpolati di ogni registro sono passati al fragment processor. La maggior parte dei vertex processor, usano un insieme limitato di operazioni. Le operazioni matematiche sui vettori in virgola mobile richiedono vettori di due, tre o quattro componenti; queste operazioni comprendono addizione, moltiplicazione, moltiplicazione-addizione, prodotto vettoriale, minimo e massimo. Supporto hardware per la negazione vettoriale e per la possibilit´a di riorganizzare le componenti vettoriali arbitrariamente, sono una generalizzazione delle istruzioni matematiche che eseguono la negazione, la ´ possibile realizzare anche la moltiplisottrazione ed il prodotto vettoriale. E cazione di un vettore per uno scalare e la normalizzazione del vettore stesso. Approssimazioni trigonometriche, esponenziali e logaritmiche facilitano i calcoli geometrici di luce e nebbia. 8.3.6 Fragment processor programmabile Il Fragment Processor programmabile, utilizza molte delle operazioni del vertex processor ma, a differenza di questo, supporta anche operazioni di texturing, le quali consentono al processore di accedere ad una texture usando un insieme di coordinate. Le GPU non offrono un pieno supporto alle operazioni in virgola mobile; le GPU vecchie hanno tipi di dati in virgola fissa pi´ u limitati. Inoltre, quando sono disponibili operazioni in virgola mobile, le operazioni sui frammenti sono molto pi´ u efficienti usando tipi di dati a preci- CAPITOLO 8. PROGRAMMAZIONE DELLE SCHEDE VIDEO 98 sione pi´ u bassa. Cg consente anche di scrivere programmi sui frammenti con salti ed iterazioni, simulando cos´ı costrutti con operazioni di assegnamento condizionale o loop. Figura 8.6: Flow Chart del Programmable Fragment Processor. I registri in sola lettura di input del fragment processor, contengono parametri interpolati derivanti dai parametri dei vertici della frammentazione in primitive geometriche. I registri temporanei di lettura-scrittura contengono valori intermedi. I registri in sola scrittura di output contengono il colore e, opzionalmente, la nuova profondit´a del frammento. Capitolo 9 OpenGL e DirectX 9.1 OpenGL OpenGl (Open Graphics Library) ´e un’interfaccia software altamente portabile per il rendering 3D. Dispone di vari comandi per disegnare figure come punti, linee e poligoni anche in tre dimensioni. Include anche il supporto per shading, texture mapping, anti-aliasing, ligthing e animation. I comandi per creare e manipolare oggetti 3D di alto livello, come cubi, piramidi, sfere ed altro, non sono inclusi, ma possono essere costruiti partendo dalle primitive esistenti. OpenGL non gestisce finestre, non legge input e non scrive files, compiti lasciati al sistema operativo. Le applicazioni passano ad openGL una bitmap sulla quale fare il render. Silicon Graphics Inc originariamente svilupp´o IrisGL, un linguaggio per grafica 3D per le sue macchine 3D (IRIS ). Il processo per portare tale linguaggio in altri sistemi si ´e dimostrato molto difficile cos´ı SGI decise di modificare GL per rendere pi´ u facile la portabilit´a su differenti hardware, sistemi operativi e sistemi di windowing. Il risultato fu OpenGL. 99 CAPITOLO 9. OPENGL E DIRECTX 9.2 100 DirectX Microsoft DirectX fornisce un insieme di API (application programming interfaces) che consentono di disegnare applicazioni high-performance e real time. L’insieme di API delle DirectX consente alle applicazioni ad alte prestazioni basate su Windows, l’accesso in tempo reale all’hardware disponibile su sistemi attuali e futuri. DirectX fornisce una interfaccia consistente tra le applicazioni hardware, riducendo la complessit´a di istallazione e configurazione e usando l’hardware al massimo delle sue potenzialit´a. Utilizzando le interfacce messe a disposizione da DirectX, gli sviluppatori di software possono trarre vantaggio dalle propriet´a dell’hardware senza preoccuparsi dei dettagli implementativi di tale hardware. Capitolo 10 Conclusioni In questo lavoro ´e stata presentata una tecnica di simulazione della deformazione di oggetti virtuali. Dopo aver creato un modello per oggetti da simulare, sono state studiate le caratteristiche della deformazione, definendo una funzione in grado di simulare le deformazioni in modo molto verosimile. Lo studio si focalizza soprattutto sul calcolo del colore degli oggetti deformati, poich´e proprio questo aspetto rende la deformazione virtuale molto vicina a quella reale. L’aggiornamento dei vettori normali alla superficie deformata ´e un’aspetto molto importante per aumentare il realismo della percezione. Gli effetti luminosi dipendono dalle caratteristiche morfologiche dell’oggetto, quindi prima di tutto, la ricostruzione virtuale deve essere fedele, in termini di stiffness, a quella reale. Una volta reso l’oggetto simulato simile a quello reale ´e stata implementata una funzione per l’aggiornamento delle normali alla superficie. Cos´ı come i punti della superficie dell’oggetto, sottoposti ad una forza esterna, si muovono per creare deformazione, anche le normali coinvolte si devono muovere rimanendo perpendicolari alla superficie stessa. Per la deformazione dell’oggetto ´e stata studiata una curva di deformazione con andamento gaussiano. 101 CAPITOLO 10. CONCLUSIONI 102 Gli algoritmi ed i metodi sviluppati per l’interazione fra una sola interfaccia aptica e l’oggetto, ´e stato esteso al caso che coinvolge pi´ u interfacce aptiche. Il problema ´e stato quello di simulare i punti dell’oggetto sottoposti alle forze derivanti da pi´ u punti di contatto. Anche in questo caso ´e stata usata come curva di deformazione una gaussiana, con le dovute modifiche. L’ultimo argomento studiato riguarda la dinamica delle normali. Poich´e queste devono seguire la superficie deformata rimanendono perpendicolari, ´e necessario che, ad ogni passo di campionamento, vengano ricalcolate e quindi aggiornate nella nuova posizione. Per eseguire questo calcolo basta conoscere i vertici adiacenti a quello di interesse e fare un prodotto vettoriale fra i triangoli della superficie considerata. Tuttavia l’obiettivo di questa tesi ´e quello dell’implementazione di tale algoritmo su GPU. In questo caso ´e da considerare la limitazione delle schede video programmabili che prevede di processare indipendentemente i vertici dei triangoli, quindi, risulta impossibile calcolare il prodotto vettoriale per stabilire il moto delle normali. Per risolvere questo problema ´e stata implementata una funzione che associa una dinamica alle normali in modo da farle ruotare di un certo angolo dalla posizione di equilibrio a quella finale dettatata dalla deformazione statica della superficie. I risultati ottenuti sono buoni e sono caratterizzati da un elevato realismo di interazione. Bibliografia [1] Klas Skogmar Real-Time Video Effects Using Programmable. Graphics Cards. [2] Resnick R., Halliday D., 1977, Fisica1. [3] Witkin A., Baraff D., 2001, Differential Equation Basic. [4] Witkin A., Baraff D., 2001, Implicit Methods for Differential Equations. [5] Luigi Mitolo, Considerazioni Generali sulle Sospensioni. [6] Pentland A., Williams J., 1989, Good Vibrations: Modal Dynamics for Graphics end Animation. [7] James D. L., Pai D. K., DyRT: Dynamic Response Textures for Real Time Deformation Simulation with Graphics Hardware. [8] Choi M. C., Ko H. S., Modal Warping: Real-Time Simulation of Large Rotational Deformation and Manipulation. [9] De Pascale M., De Pascale G., Prattichizzo D., Barbagli F., A GPUfriendly Method for Haptic and Graphic Rendering of Deformable Objects. [10] Mantegazza P., 2003, Analisi di Sistemi di Equazioni AlgebricoDifferenziali. 104 BIBLIOGRAFIA 105 [11] Wagner M., 2004, Generating Vertex Normal. [12] nVIDIA Corporation, The GeForce Family GPUs. [13] nVIDIA Corporation, The Cg Language. [14] De Pascale M., De Pascale G., Prattichizzo D., Barbagli F., 2004, The Haptik Library: a Component Based Architetture for Haptik Device Access. [15] Microsoft Corporation, DirectX. [16] Shewchuk J., 1999, Meshing and Triangulation in Graphics, Engineering, and Modeling. [17] Patterson D. A., Hennessy J. L., 1999, Struttura, Organizzazione e Progetto dei Calcolatori. [18] Gallina P., Rosati G., Rossi A., 2001, Utilizzo di Interfacce Aptiche nella Robotica Medica. [19] Carignan C. R., Clearey K. R., Closed-loop Force Control for Haptic Simulation of Virtual Environments. [20] Barbagli F., Prattichizzo D., Salisbury J. K., 2003, Dynamic Local Model for Stable Multi-Contact Haptic Interaction with Deformable Object. [21] Puppo E., Materiale Didattico del corso Grafica Interattiva, Dipartimento di Informatica e Scienze dell’Informazione Universit´a degli studi di Genova. Appendice A Caratteristiche Schede Video Programmabili In questa appendice sono riportati i dati tecnici relativi ad alcune schede video programmabili attuali. A.1 nVIDIA • GeForce3 – Vector cross product: 2 istruzioni; – Divisione: 2 istruzioni; – Calcolo della radice: 2 istruzioni; – Prodotto di un vettore per una matrice: 4 istruzioni; – TL con una luce direzionale: 7 istruzioni (28 milioni di triangoli a 200MHz); – Log ad alta precisione: 9 istruzioni; – Exp ad alta precisione: 9 istruzioni; 106 APPENDICE A. CARATTERISTICHE SCHEDE VIDEO PROGRAMMABILI107 – Seno/Coseno: da 9 a 13 istruzioni; – TL con una luce speculare: 18 istruzioni (11 milioni di triangoli a 200MHz); – Inversione di matrice: 38 istruzioni; – Illuminazione con 17 luci: 126 istruzioni. • GeForce 7800GTX – Bus di memoria: 256 bit; – Processo produttivo: 0.11 micron; – Frequenza chip e memoria: 430/1200; – Bus: PCI Express 16x; – Unit`a di Vertex Shading: 8; – Unit`a di Pixel Shading: 24; – Numero di pipeline: 24; – Texture per ciclo di clock: 1; – Fill Rate: 10320 Mpixel e 10320 Mtexel; – Banda Passante: 38,4GB; – Versione Vertex Shader: 3.0; – Versione Pixel Shader: 3.0; – Full Scene Anti-Aliasing: Intellisample 4.0; – Altre caratteristiche: CineFX 4.0 Ultrashadow II; • GeForce 7800 GT – Bus di memoria: 256 bit; APPENDICE A. CARATTERISTICHE SCHEDE VIDEO PROGRAMMABILI108 – Processo produttivo: 0.11 micron; – Frequenza chip e memoria: 430/1000; – Bus: PCI Express 16x; – Unit`a di Vertex Shading: 7; – Unit`a di Pixel Shading: 20; – Numero di pipeline: 20; – Texture per ciclo di clock: 1; – Fill Rate: 800 Mpixel e 800 Mtexel; – Banda Passante: 32GB; – Versione Vertex Shader: 3.0; – Versione Pixel Shader: 3.0; – Full Scene Anti-Aliasing: Intellisample 4.0; – Altre caratteristiche: CineFX 4.0 Ultrashadow II; • GeForce 6800 Ultra – Bus di memoria: 256 bit; – Processo produttivo: 0.13 micron; – Frequenza chip e memoria: 400/1100; – Bus: PCI Express 16x; – Unit`a di Vertex Shading: 6; – Unit`a di Pixel Shading: 16; – Numero di pipeline: 16; – Texture per ciclo di clock: 1; APPENDICE A. CARATTERISTICHE SCHEDE VIDEO PROGRAMMABILI109 – Fill Rate: 6400 Mpixel e 6400 Mtexel; – Banda Passante: 35,2GB; – Versione Vertex Shader: 3.0; – Versione Pixel Shader: 3.0; – Full Scene Anti-Aliasing: Intellisample 3.0; – Altre caratteristiche: CineFX 3.0 Ultrashadow II; A.2 ATI • Radeon X850 XT PE – Bus di memoria: 256 bit; – Processo produttivo: 0.13 micron; – Frequenza chip e memoria: 440/1180; – Bus: AGP 8x; – Unit`a di Vertex Shading: 6; – Unit`a di Pixel Shading: 16; – Numero di pipeline: 16; – Texture per ciclo di clock: 1; – Fill Rate: 8640 Mpixel e 8640 Mtexel; – Banda Passante: 37,7GB; – Versione Vertex Shader: 2.0; – Versione Pixel Shader: 2.0b; – Full Scene Anti-Aliasing: Smoothvision HD; APPENDICE A. CARATTERISTICHE SCHEDE VIDEO PROGRAMMABILI110 – Altre caratteristiche: Smartshader HD Videoshader HD, Hyper-Z HD; • Radeon 420 Smartshader HD – Bus di memoria: 128 bit;
© Copyright 2024 Paperzz