Introduzione alla Realtà Virtuale
Gabriele Pellegrinetti
Lo scopo della realtà
virtuale (VR) è quello di ricreare, tramite un computer,
mondi e oggetti che sono la trasposizione digitale di ambienti reali o
di fantasia. Inoltre, studia i metodi di interazione tra l'utente e in
mondo reale come i sistemi di navigazione, gli strumenti per la visione
tridimensionale, i tool per la manipolazione degli oggetti virtuali, etc.
Si tratta di una simulazione che viene percepita totalmente dai nostri
sensi, in particolare dalla vista, seguita dall’udito e dal tatto.
Differenza fra realtà virtuale e computer grafica
Nella tradizionale elaborazione, o nella creazione, digitale delle immagini
si da molto peso alla qualità visiva dei risultati. I programmi
di
rendering e di
ray
tracing impiegano ore, se non giorni, per elaborare una singola
immagine. L’utilizzo di più fotogrammi permette di creare quelle
stupende animazioni che possiamo ammirare negli effetti speciali dei films,
nei videogiochi e nelle pubblicità.
Nella realtà virtuale, le immagini non sono calcolate in
precedenza ma vengono generate in tempo reale. Per ottenere un effetto
sufficientemente fluido, è necessario visualizzare almeno 25
fotogrammi al secondo; in caso contrario, i movimenti nel mondo virtuale
risultano essere imprecisi e a scatti. Per questo motivo, la qualità
delle immagini è lontana dalla qualità fotografica ottenuta
con le tecniche di animazione digitale. Gli oggetti vengono rappresentati
con poligoni sui quali, se necessario, vengono applicate delle texture
per la simulazione dei materiali.
Un’altra differenza, non meno importante della precedente, è
data dal meccanismo di interazione con l’utente. Nelle animazioni tradizionali,
egli può decidere quale parte della sequenza di fotogrammi visualizzare,
può spostarsi in avanti, ritornare all’inizio, decidere la velocità
di scorrimento, ma ciò che vede è quello che è
stato programmato in precedenza.
Nella realtà virtuale, è l’utente che decide ciò
che vuole vedere, può scegliere il punto di vista a lui più
congegnale, può posizionarsi in un qualsiasi punto dello spazio,
può selezionare un oggetto, ruotarlo, cambiarne le dimensioni, i
colori, e, se abilitato, può interagire con tutto l’ambiente circostante.
I vantaggi della realtà virtuale si scontrano con la necessità
di generare almeno 20-25 fotogrammi al secondo in modo da ottenere animazioni
fluide e prive di scatti. Oggi disponiamo di hardware potente e di schede
grafiche accelerate che consentono la generazione di grafica tridimensionale
di buona qualità a costi abbordabili da quasi tutti gli utenti.
Fino a qualche anno fa, per contenere i costi, i produttori di tool per
lo sviluppo di ambienti virtuali, limitavano la dimensione dei quadri video
a 320x200 o al più a 640x480 pixel. Oggi, con l'ausiglio di schede
grafiche con tecnologia 3D si arriva tranquillamente a 1280x1024 pixel
Modalità di rappresentazione degli oggetti
Gli oggetti visualizzati sullo schermo da un’applicazione di realtà
virtuale sono oggetti tridimensionali. Gli elementi di partenza hanno coordinate
tridimensionali ma vengono tracciati su un piano bidimensionale. Ogni punto
dell’oggetto da disegnare, identificabile dalle coordinate (
x, y, z),
viene mappato su un punto (
a, b) nel piano bidimensionale dello
schermo.
Le tre tecniche fondamentali per la rappresentazione di oggetti tridimensionali
su un piano bidimensionale sono la proiezione, l’assonometria e la prospettiva.
Le proiezioni ortogonali
Si fanno assumere alle coordinate bidimensionali dello schermo solamente
due delle coordinate tridimensionali dell’oggetto. Si elimina quindi una
delle tre coordinate spaziali. Si ottengono tre tipi di proiezione:
-
piano orizzontale: quando si elimina la coordinata z;
-
piano verticale: quando si elimina la coordinata x;
-
piano laterale: quando si elimina la coordinata y.
L’assonometria
Nell’assonometria l’osservatore vede l’oggetto da un punto a distanza infinita
da una posizione qualsiasi dello spazio caratterizzata da due angoli: la
latitudine
alfa e la longitudine
beta. La vista che si ottiene
non è realistica in quanto le dimensioni degli oggetti che si vedono
non vengono sfalsate con il variare della distanza.
Sia (x, y, z) il punto nello spazio tridimensionale. Il punto
(a, b) ad esso corrispondente sul piano dello schermo è dato
dalle seguenti formule:
a = -x * cos(alfa) + y * cos(beta)
b = x * sin(alfa) + y * sin(beta) + z
La prospettiva
La prospettiva consente una visione più realistica rispetto all’assonometria.
Essa tiene conto della variazione delle dimensioni apparenti degli oggetti
con il variare della distanza fra questi e l’osservatore.
Siano: E la distanza fra l’osservatore e il piano del disegno;
G la distanza tra l’osservatore e l’oggetto disegnato;
(x, y, z) il punto nello spazio tridimensionale;
alfa la longitudine dell’osservatore;
beta la latitudine dell’osservatore.
Il punto corrispondente (a, b) nello spazio bidimensionale è
dato dalle seguenti formule:
x1 = -x * cos(alfa) * cos(beta) + y * sin(beta) - Z * sin(alfa)
* cos(beta)
y1 = -x * sin(alfa) + z * cos(beta)
z1 = -x * cos(alfa) * sin(beta) + y * cos(beta) - Z * sin(alfa)
* sin(beta) + G
a = E * (x1/z1) + 1
b = -E * (y1/z1) + 1
I tool di realtà virtuale, anche se con qualche variante, utilizzano
la prospettiva per visualizzare le immagini.
Le tecnologie per la visione tridimensionale
Esistono due tipi di realtà virtuale: la realtà virtuale
immersiva e la realtà virtuale
non
immersiva. Immersione significa interazione completa con l’ambiente
virtuale. È quindi necessario supportare tutti i nostri sensi, non
solo la vista, l’udito e il tatto ma anche quelli che non siamo abituati
a prendere in considerazione come l’orientamento. La realtà virtuale
immersiva utilizza visori montati in prossimità degli occhi,
sensori di posizione in grado di fornire l’indicazione dell’orientamento
del punto di vista dell’utente, guanti dotati di sensori per manipolare
gli oggetti virtuali e per simulare sensazioni tattili artificiali.
Perché vediamo in tre dimensioni
L’occhio umano è formato da diverse parti l’insieme delle quali
può essere paragonato, per funzionalità, alle componenti
di una macchina fotografica.
La pupilla mette a fuoco l’immagine. Questa, passando attraverso il
cristallino, viene proiettata sulla retina. Successivamente, l’immagine
viene trasferita al cervello attraverso il nervo ottico.
Essendo i due occhi distanziati di circa 7-8 cm, l’immagine prodotta
dall’occhio sinistro risulta leggermente sfalsata rispetto a quella prodotta
dall’occhio destro. Quando il cervello deve ricomporre l’immagine originale
partendo da quelle prodotte dai due occhi è in grado, grazie allo
sfasamento dovuto alla distanza interpupillare, di dare profondità
agli oggetti.
Su questo principio si basano i meccanismi per la visione stereoscopica.
Occhiali stereoscopici a lenti colorate o polarizzate
È possibile ottenere una visione tridimensionale fotografando un
oggetto due volte con una posizione orizzontale sfasata di 7-8 cm utilizzando
per le due immagini due filtri con colori complementari (esempio rosso
e blu). Le due fotografie vengono poi fuse insieme ottenendo una foto tridimensionale
visualizzabile con degli occhiali aventi una lente per colore.
L’utilizzo di questa tecnica produce risultati scadenti con immagini
a colori. Per ovviare a questo problema è possibile sostituire ai
filtri e alle lenti colorate dei filtri e delle lenti polarizzate (ad esempio
una lente con polarizzazione orizzontale e una con polarizzazione verticale).
Occhiali stereoscopici ad otturatori
Servono per ottenere una visualizzazione stereoscopica utilizzando
solamente lo schermo del computer. La visualizzazione stereoscopica è
possibile grazie alla visualizzazione contemporanea di due immagini, una
per occhio. Gli occhiali ad otturatori montano, al posto delle lenti, dei
filtri a cristalli liquidi che, se polarizzati correttamente, diventano
completamente neri impedendo all’occhio di vedere attraverso essi.
Le immagini vengono mostrate in sequenza sullo schermo alternando ripetutamente
i frame destinati all’occhio destro con quelli destinati all’occhio sinistro.
In contemporanea viene inviato un segnale agli occhiali in modo da oscurare
l’occhio non interessato dall’immagine presente sullo schermo.
Questo implica la necessità di utilizzare macchine molto veloci,
in quanto per ottenere i 25 fotogrammi al secondo è necessario visualizzare
nello stesso periodo di tempo 50 immagini (25 per ogni occhio). Il vantaggio
di questa tecnologia è rappresentato dall’alta definizione grafica
ottenibile dipendente solamente dalla velocità del sistema di elaborazione.
Gli HMD (Head Mounted Display)
Sono caschi che contengono dei display per la visualizzazione delle
immagini. Al loro interno sono pure integrate delle cuffie stereofoniche
di alta qualità per permettere l’utilizzo di audio tridimensionale.
Le tecniche usate per visualizzare le immagine in un HMD variano a seconda
del tipo di prodotto e in base al costo sostenuto per la sua costruzione.
Gli HMD possono essere stereoscopici, quando esiste un visore diverso per
ogni occhio, o monoscopici, quando entrambe gli occhi visualizzano la stessa
immagine presente su un singolo display.
Gli HMD di costo medio utilizzano dei mini schermi a cristalli liquidi
che, allo stato attuale della tecnologia, permettono una risoluzione massima
di 768x512 pixel. I sistemi di costo minore utilizzano display con risoluzione
massima di 320x240 pixel. Il numero massimo di colori supportato dall’attuale
tecnologia è 256. Sono, comunque, allo studio display a cristalli
liquidi in grado di visualizzare 1024x768 punti con 16 milioni di colori.
Purtroppo il processo di miniaturizzazione (ogni display ha una diagonale
di circa 3 pollici) è molto costoso per cui gli HMD di questo tipo
sono ancora allo stadio di prototipo e utilizzati solamente in applicazioni
critiche (ad esempio simulazioni militari).
Il vantaggio dell’utilizzo di display a cristalli liquidi è dato
dalle ridotte dimensioni degli HMD che li montano, dal basso voltaggio
di esercizio e dal fatto che essi non emettono radiazioni elettromagnetiche.
Gli HMD che offrono una risoluzione maggiore con una gamma cromatica
superiore utilizzano dei piccoli monitor simili a quelli montati sulle
telecamere amatoriali. Questi display sono in bianco e nero in quanto la
tecnologia attuale non consente la costruzione di schermi a colori di dimensioni
ridotte. Per ottenere una visualizzazione policromatica si fa uso di filtri
colorati (rossi, verdi e blu). Il sistema invia al display in sequenza
le immagini corrispondenti alla componente rossa, a quella blu e a quella
verde e, in contemporanea, attiva i relativi filtri. Il risultato è
identico a quello che si otterrebbe utilizzando dei display a colori.
I vantaggi di una tale tecnologia sono rappresentati dall’alta qualità
ottenibile; gli svantaggi sono dati dalle grandi dimensioni degli HMD,
dall’emissione di radiazioni elettromagnetiche e dall’alto voltaggio necessario
al funzionamento dei tubi catodici (nell’ordine dei 12000-20000 volts).
Sono allo studio nuovi sistemi che, mediante l’utilizzo di laser a bassa
potenza, sono in grado di disegnare le immagini direttamente sulla retina
dell’occhio. Esistono in commercio dei display di questo tipo in grado
di visualizzare risoluzioni di 720x256 pixel in monocromatico (colore rosso).
Si pensa di riuscire, nell’arco dei prossimi cinque anni, a produrre dei
device in grado di visualizzare 4000x4000 pixel (la risoluzione delle pellicole
cinematografiche) in true color.
Le tecnologie di tracciamento e di manipolazione
Il movimento in uno spazio tridimensionale può avvenire in tre direzioni:
asse x (orizzontale), asse y (profondità) e asse z (verticale).
È pure possibile eseguire una rotazione su ognuno dei tre assi.
I movimenti possibili sono quindi sei (tre di traslazione e tre di rotazione).
Si dice che in un ambiente tridimensionale ci sono
sei
gradi di libertà.
Per ottenere un valido livello di interazione con l’utente, in luogo
di un mouse o di un joystick, è preferibile l’utilizzo di un dispositivo
di puntamento in grado di operare a sei gradi di libertà che riconosca,
quindi, tutti i tipi di movimento e li trasferisca direttamente al computer.
Nonostante siano stati creati dei mouse tridimensionali, il dispositivo
migliore per operare in un ambiente 3D è la mano dell’operatore.
Si sono quindi sviluppati dei dispositivi in grado di tracciare la posizione
e l’orientamento della mano in relazione agli oggetti virtuali visualizzati
sullo schermo o sull’HMD. Si tratta di speciali guanti sui quali sono disposti
dei sensori in grado di intercettare la posizione e il movimento di ogni
singolo dito. Alcuni di questi device sono in grado di fornire una risposta
tattile alle azioni dell’utente. Per far ciò utilizzano delle piccole
scariche elettriche per stimolare le connessioni nervose sottocutanee oppure
utilizzano dei materiali in grado di flettersi quando sono sottoposti all’azione
di un campo elettrico. In questo modo è possibile fornire all’utente
la sensazione di impugnare realmente un oggetto.
In base alle tecnologie utilizzate, i sistemi per tracciare il movimento
di un operatore all’interno di un mondo virtuale, si suddividono in:
-
meccanici: legano fisicamente l’utente alla macchina mediante un
braccio snodato nelle giunture del quale sono presenti dei sensori (di
solito resistenze variabili) che rilevano gli spostamenti. Sono ingombranti
e scomodi da usare ma permettono un’elevata velocità operativa.
La loro applicazione è confinata a sistemi di teleoperazione
e guida a distanza (ad esempio il controllo a distanza del braccio meccanico
di un robot).
-
ottici: si basano sull’utilizzo di telecamere che rilevano la posizione
di sorgenti di luce (di solito LED) poste sull’operatore, ed eseguono i
calcoli sullo spostamento basandosi sull’elaborazione in tempo reale delle
immagini acquisite.
-
ultrasonici: sfruttano la propagazione delle onde sonore, si basano
sulla rilevazione della riflessione delle onde e della deviazione che esse
subiscono quando un oggetto si muove al loro interno. Il principio è
simile a quello utilizzato nei sonar.
-
magnetici: sono i sistemi più utilizzati. Una sorgente fissa
genera un campo magnetico e l’operatore indossa dei dispositivi in grado
di provocare distorsioni all’interno di esso. La posizione dell’operatore
viene determinata da dei sensori che rilevano le variazione dei campi magnetici.
Le tecniche descritte possono anche essere utilizzate per determinare la
posizione di ogni singola parte del corpo dell’operatore (mani, braccia,
gambe, testa). Sono allo studio delle tute in grado di tracciare un intero
corpo umano; per ora, i dispositivi commerciali, sono in grado di rilevare
la posizione e l’orientamento della testa dell’utente (tramite sensori
posizionati sugli HMD) e delle mani (tramite l’utilizzo di guanti).
L’audio tridimensionale
Le normali schede sonore inserite all’interno dei personal computer,
a parte le nuove Sound Blaster Live, consentono limitati effetti di surrounding,
non è cioè possibile posizionare le sorgenti sonore in un
punto qualsiasi dello spazio tridimensionale. Nelle workstation per la
realtà virtuale vengono inseriti dei processori sonori 3D. Essi
permettono di posizionare i suoni in qualsiasi punto della sfera virtuale,
di direzionarli a piacere, di spostarli, di generare effetti di assorbimento
e di eco, esattamente come avviene nel mondo reale.
L’utente, indossando delle cuffie stereofoniche di alta qualità,
è in grado di individuare la posizione delle sorgenti sonore; grazie
ai processori 3D, egli ha l’impressione che il rombo di un aereo sia posizionato
sopra la sua testa, che un’automobile gli passi di fianco, etc. Il
suono si materializza, si muove intorno a lui, si allontana, si sposta
in un punto qualsiasi, e l’utente è in grado di identificare con
chiarezza la posizione e le direttrici dell’eventuale spostamento.
L’insieme dei device di visualizzazione, dei sistemi di tracciamento
e dei processori sonori permette di creare mondi virtuali all’apparenza
molto reali, con l’unico limite della fantasia di chi li progetta.
Un linguaggio per costruire mondi virtuali: il VRML
Il VRML (Virtual Reality Modeling Language ) è un linguaggio di
descrizione di scene tridimensionali. Un file vrml è un file ASCII
che contiene tutti i comandi necessari a descrivere una mondo virtuale.
Questi comandi serviranno a descrivere la forma dei singoli oggetti, il
loro colore, le texture, etc, ma anche a posizionare tali oggetti
in uno spazio 3D.
Detto in questo modo, sembra che VRML non proponga nulla di diverso
dai più diffusi tool di disegno 3D e di rendering che sono anche
più performanti sia come velocità che come qualità
delle scene prodotte. Il vantaggio è che VRML è nato come
standard per la rappresentazione di scene 3D su Internet e quindi ha un
numero potenziale di utenti molto vasto. Quali potrebbe essere il suo utilizzo?
Vediamo un esempio. Supponiamo di essere un mobilere e di voler realizzare
un catalogo dei nostri prodotti. Sarebbe sufficiente creare un sito internet
con il listino, la descrizione dei mobili e una loro immagine. Ma sarebbe
tutta un’altra cosa se consentissimo all’utente di visualizzare un modello
3D del mobile, di ruotarlo, di aprire ante e cassetti, di cambiare colore
in tempo reali, etc. VRML consente tutto cio.
Vi sono anche degli svantaggi: Il principale è che si interagisce
con mondi 3D utilizzando strumenti pensati per scene 2D (il mouse, la tastiera,
etc) che non sempre consentono operazioni intuitive. In secondo luogo siamo
su Internet e dobbiamo scontrarci con la lentezza intrinseca della rete.
Un mondo complesso con decine di oggetti formati da migliaia di poligoni,
con molte texture, suoni, animazioni, può raggiungere senza troppi
problemi dimensioni superiori al Mb. Attualmente esistono due versioni
di VRML: VRLM 1.0 e VRML 2.0. La grossa differenza tra le due versioni
stà nel fatto che la prima consente di descrivere soltanto mondi
statici mentre con la seconda possiamo definire la dinamica degli oggetti
che compongono la scena e la modalità di interazione che questi
possono avere con l’utente. Nella versione 2.0 è stata, inoltre,
introdotta la possibilità di introdurre fonti audio e video in modo
da rendere più realisteche le scene.
I mondi vrml sono contenuti in files con estensione .wrl. Esistono
molti browser per vrml 1.0 ; un po' di meno per vrml 2.0, a causa della
giovinezza della specifica. Un browser vrml può esistere come applicazione
a sé stante oppure può funzionare da plug-in per un browser
html. Le interfacce sono per lo più banali. Di norma si rendono
disponibili operazioni di walking con spostamenti avanti-indietro, innalzamento-abbassamento
del punto di vista e rotazioni. È poi possibile settare la velocità
di spostamento, il livello di dettaglio delle scene (dipende anche dalla
potenza della CPU e della scheda grafica installata), selezionare delle
viste predefinite (a livello di codice VRML). I browser più diffusi
sono attualmente Live 3d e Cosmo Player entrambe distribuiti con Netscape
e WorldView distribuito con le ultime versioni di Explorer e con Windows
98.
Cosa serve per creare mondi virtuali in VRML? Il metodo più
semplice è utilizzare un programma di modellazione solida 3D (Autocad,
3D Studio Max, Extreme 3d) in grado di salvare i file in formato VRML.
Esistono pure programmi specifici che sono in grado di generare mondi VRML
animati e interattivi.
Il modo più economico, ma anche quello più complesso,
è quello di descrivere direttamente le scene utilizzando un editor
di testo (es. il NotePad) e il linguaggio VRML.
Un esempio potrebbe essere il seguente (salvarlo con estensione WRL)
#VRML V2.0 utf8
# primo mondo vrml
Shape {
appearance Appearance {
material Material {
emissiveColor 1 0 0
}
geometry Sphere {
radius 1
}
}
Il risultato di questo listato dovrebbe essere una sfera di colore rosso.
Dovrebbe in quanto non tutti i browser inerpretano correttamente le specifiche.