Orlandesi Marcello

` 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;