• Non ci sono risultati.

Capitolo 1: VISUALIZZAZIONE DI AMBIENTI VIRTUALI URBANI

N/A
N/A
Protected

Academic year: 2021

Condividi "Capitolo 1: VISUALIZZAZIONE DI AMBIENTI VIRTUALI URBANI"

Copied!
20
0
0

Testo completo

(1)

Capitolo 1:

VISUALIZZAZIONE DI AMBIENTI VIRTUALI

URBANI

1.1. La realtà virtuale

La realtà virtuale (o VR: Virtual Reality) è un sistema informatico usato per creare un mondo artificiale in cui l’utente ha l’impressione di essere immerso [SCHAU], con la possibilità di muoversi all’interno di tale mondo e di interagire con l’ambiente che lo circonda. Le motivazioni della nascita e dello sviluppo di una tale tecnologia stanno nel fatto che essa consente di poter prendere confidenza con concetti non facilmente assimilabili nel mondo reale, di poter simulare aspetti della realtà poco praticabili, di fornire infine una nuova interfaccia, di immediata comprensibilità, per l’utilizzo delle più svariate applicazioni informatiche.

La VR può essere vista come la naturale evoluzione della tecnologia dei simulatori. Nella seconda metà degli anni ’80 lo sviluppo di computer ad alte prestazioni e l’avvento dei PC (Personal Computer) caratterizzati da costi relativamente contenuti, ha permesso di introdurre l’uso di computer grafica per la realizzazione di simulazioni sempre più sofisticate, suscitando l’interesse anche di altre entità, quali l’industria dell’intrattenimento e la comunità scientifica. Seppure con motivazioni diverse, tutte queste entità spingevano per lo sviluppo dell’interattività legata a tali simulazioni; è evidente, infatti, che il vero passo in avanti, rispetto alle precedenti tecnologie di simulazione o di animazione, era rappresentato dalla possibilità di interagire con gli ambienti che venivano simulati. Tale interattività andava sviluppata in due sensi: fornendo all’utente dei mezzi sempre meno ingombranti e sempre più

(2)

naturali per agire nei confronti dell’ambiente simulato, e migliorando il feedback sensoriale che l’utente riceveva dal sistema di VR.

In particolare, lo sviluppo dell’elettronica e dell’informatica ha reso possibile la reazione di ambienti completamente immersivi, attraverso dispositivi come gli Head Mounted Display o i CAVE, in modo da sperimentare un effetto di presenza senza avere alcun contatto visuale con il mondo fisico circostante. Peraltro, la VR non necessita di essere immersiva per poter essere utile; esistono altre forme di VR, quali la VR semi-immersiva (molti simulatori attuali lo sono), la VR proiettata (ambienti 3D proiettati su uno o più schermi), per finire con la VR Desktop, in cui l’interazione visuale si realizza mediante il monitor di un computer.

Affinché l’utente possa credere di far parte integrante del mondo virtuale, questo deve rispondere a tutta una serie di leggi fisiche che sono considerate ovvie, ma che vanno riprodotte nell’ambiente tridimensionale creato. In particolar modo un sistema di realtà virtuale deve percepire e far percepire i movimenti dell’utente e rispondere sensorialmente agli stimoli prodotti con una serie di altri stimoli conseguenti. Per far questo il sistema deve essere composto necessariamente di tecnologie quali la rappresentazione grafica tridimensionale in real time, display stereoscopici, rilevamento della posizione e traiettoria di parti del corpo umano, suono olofonico, ritorno di forza e tattile, sintesi e analisi vocale. Per realizzare questi obiettivi sono indispensabili workstation in grado di eseguire in tempo reale i calcoli che derivano da ogni movimento dell’utente in modo da creare la giusta risposta all’azione del soggetto, senza che questi avverta nessun tipo di ritardo.

(3)

1.2. Gli ambienti virtuali urbani

figura 1.1 - rappresentazione virtuale di un ambiente urbano

Con il termine Ambienti Virtuali Urbani (AVU) si indicano modelli tridimensionali, ovvero rappresentazioni 3D in formato digitale, di città o di parti di esse che vengono visualizzate con l’uso del calcolatore [BOURD] [figura 1.1 e figura 1.2].

La modellazione di un Ambiente Virtuale Urbano solitamente richiede una serie di fasi che prevedono la necessità di compiere scelte preliminari e predisporre le necessarie elaborazioni. Innanzitutto è necessario stabilire il tipo di rappresentazione desiderata dell’Ambiente Urbano, per cui è solitamente utile operare delle astrazioni al fine di esaltare alcuni aspetti e trascurarne altri ritenuti meno importanti, a seconda dell’uso che si dovrà fare del modello.

(4)

Successivamente occorre individuare le classi di oggetti che compongono il modello ed, eventualmente, assegnare loro un determinato comportamento a seconda del trascorrere del tempo, come ad esempio l’accensione dell’eventuale illuminazione notturna o l’alternarsi degli stati di un semaforo a seconda delle ore di maggiore intensità del traffico, o in risposta a stimoli esterni. L’ultima fase dell’elaborazione del modello virtuale urbano consiste, infatti, nel definire le interazioni tra l’ambiente e l’utente. In altre parole, occorre determinare la risposta ad eventuali stimoli o eventi generati dall’utente all’interno dell’ambiente. Un esempio banale può essere il cambiamento del punto di vista dovuto allo spostamento dell’utente lungo una strada, movimento che si può genericamente considerare bidimensionale [figura 1.3], o per mezzo di scale o ascensori che danno invece luogo ad un movimento in tre dimensioni.

figura 1.3 – Spostamento di un osservatore lungo una strada

Un’altro esempio di possibile interazione può essere considerato l’authoring dell’ambiente, ad esempio la possibilità di costruire e inserire nuovi elementi architettonici, sia rilevanti, quali palazzi o centri commerciali, che più marginali, quali arredi urbani, o la modifica di elementi preesistenti.

La creazione del modello 3D passa attraverso una serie di passi che riguardano [FLORIO]: 1. Una prima creazione del modello intesa come scena, sulla quale successivamente si

andranno a operare le opportune modifiche. Questa fase può essere eseguita in base a differenti approcci:

(5)

• A partire da fotografie: si tratta di un approccio semiautomatico che permette di ricostruire lo scenario non solo per quanto riguarda la modellazione dal punto di vista geometrico, ma anche per quanto riguarda in generale le caratteristiche visuali, grazie alla possibilità di poter estrapolare in maniera assistita le texture da mappare sugli oggetti tridimensionali. Questo approccio presenta il vantaggio di facilitare l’operazione di modellazione e di ottenere un modello con elevato grado di realismo, ma introduce una serie di altre fasi antecedenti a quella presentata che si occupano della raccolta e della manipolazione digitale (riduzioni in scala, rotazioni, trasferimento a sistemi di riferimento con coordinate) delle molte immagini indispensabili per caratterizzare esaustivamente anche piccole aree urbane.

• A partire da mappe bidimensionali: si tratta di un approccio che oppone al vantaggio di ricostruire fedelmente la planimetria dell’ambiente virtuale, lo svantaggio dovuto all’introduzione della modellazione manuale delle caratteristiche tridimensionali.

• Mediante un approccio misto, utilizzando tipologie di dati eterogenee e richiedendo, a seconda dei casi, l’apporto della modellazione manuale o di tecniche semiautomatiche.

2. Una serie di ottimizzazioni, operate sul modello ottenuto nella fase precedente, che sono volte alla riduzione della sua complessità, intesa come numero di poligoni che lo compongono. Tale riduzione è necessaria per consentire un’esplorazione interattiva, e dunque in tempo reale, del modello tridimensionale.

3. Creazione delle texture da mappare sui singoli oggetti dell’ambiente. I dati sorgente possono essere costituiti da due tipi di immagini: fotografie (aeree, video o tradizionali) e disegni. Questa fase è costituita da due sottofasi che si occupano, rispettivamente, della manipolazione prospettica dell’immagine (se necessaria) e all’adattamento, o mappatura, dell’immagine all’oggetto tridimensionale.

4. Catalogazione in un data base degli elementi geometrici che compongono l’ambiente urbano al fine di permettere:

(6)

• un rapido accesso alle caratteristiche di ognuno di essi;

• la loro manipolazione (cambiamento di colore, cambiamento di prospettiva, eliminazione di parti ritenute non rilevanti);

• l’associazione con la relativa texture.

5. Posizionamento degli oggetti all’interno della scena urbana.

6. Renderizzazione del modello ottenuto e integrazione con il sistema software che ne permette la sua visualizzazione e navigazione.

Gli ambienti virtuali urbani suscitano un interesse via via crescente, in quanto molte delle loro possibili applicazioni hanno, oltre a un interesse prettamente scientifico e di ricerca, un interesse più specificatamente commerciale [CARR]. Ad esempio stanno diminuendo sempre più i costi dei ricevitori GPS, usati per facilitare la navigazione nei viaggi in auto. Al momento il software di questi apparecchi permette una visualizzazione 2D delle mappe (o al limite una “falsa” prospettiva 3D [figura 1.4]). E’ facile immaginare che una completa visualizzazione 3D che coinvolga non solo la rete stradale ma anche l’ambiente circostante, possa essere di aiuto ad associare la mappa visualizzata all’ambiente reale [figura 1.5].

figura 1.4 - visione prospettica di un GPS attuale figura 1.5 - GPS di prossima generazione

Un’altra applicazione che sta riscuotendo un notevole successo è quella relativa all’esplorazione interattiva su rete di mappe territoriali, come ad esempio in Google Earth [figura 1.6], uno dei tanti servizi offerti dal motore di ricerca Google. Google Earth permette la visualizzazione di immagini satellitari e viste aeree associate a mappe vettoriali e proiettate su una semplice rappresentazione 3D del terreno. Il suo utilizzo va dalla ricerca di indirizzi alla

(7)

pianificazione di rotte stradali o anche alla semplice “esplorazione del mondo”. Un altro aspetto interessante dell’applicazione è la possibilità di creare edifici in 3D da aggiungere alle viste aeree. Questo è possibile tramite un software di CAD 3D, chiamato Sketchup, [figura 1.7] scaricabile gratuitamente (nella versione base), che permette di disegnare abbastanza semplicemente edifici e di poterli aggiungere al mondo rappresentato in Google Earth.

figura 1.6 - Google Earth figura 1.7 - Google Sketchup

Altre interessanti applicazioni sono quelle riguardanti il campo dell’Architettura [FUJII], [LIG], atte sia a modificare ambienti preesistenti che a costruirne di nuovi, permettendo agli utenti un immediato riscontro grazie alla visualizzazione tridimensionale interattiva.

Gli AVU trovano interessanti utilizzi anche nel campo della simulazione [SHIRL], [YAP], sia di tipo militare (ad esempio per esercitazioni in condizioni difficilmente riproducibili nella realtà o di grave pericolo) che di tipo civile (si pensi all’utilità di studiare l’utilizzabilità di vie di fuga in caso di emergenza o più semplicemente di permettere la simulazione di guida [figura 1.8] da parte di un utente in particolari condizioni atmosferiche o di traffico).

Altri utilizzi importanti delle città virtuali riguardano l’industria dell’entertainment, in particolare i settori di cinema e videogames [figura 1.9] [CANA]. Il dettaglio e il fotorealismo delle location dipendono, oltre che dalle necessità di avere una certa velocità di rendering (soprattutto nei videogames) anche da scelte “artistiche”, come ad esempio nei cartoni animati [figura 1.10 b] o in altri film in cui ci sia la necessità di ricreare atmosfere e luoghi particolari e fantasiosi [figura 1.10 a].

(8)

figura 1.8 - modello di città virtuale usato in una simulazione di guida

a – Sim city b – The getaway

(9)

a – “Sin City” (2005) di Robert Rodriguez e Frank Miller

b – “Gli Incredibili” (2005) di Brad Bird

figura 1.10 - Esempi di ambienti virtuali urbani nella produzione di film

1.3. Gli strumenti informatici utilizzati in questa tesi

1.3.1.

La computer grafica

La Computer Grafica è un vasto settore dell’Informatica, nel quale si tende a raggruppare numerose discipline che apparentemente risultano non molto correlate tra loro. Si pensi ad esempio alle interfacce di programmi applicativi o di sistemi operativi, ai grafici scientifici o statistici (economici, fisici, ecc), alla produzione di mappe geografiche a partire da informazioni raccolte, ai programmi di diagnostica medica basati sull’analisi di dati generati da esami medici, ai sistemi di progettazione di parti meccaniche o di planimetrie di edifici (CAD) o a tutto ciò che può riguardare l’intrattenimento (videogiochi, effetti speciali cinematografici, ecc.). La Computer Grafica si occupa quindi, in generale, di utilizzare il calcolatore per la creazione, la manipolazione e la visualizzazione di oggetti e forme con l’ausilio di interfacce che permettono la comunicazione tra l’utente e la macchina stessa. La componente comune a tutti questi campi in cui viene fatto un abbondante uso della Computer Grafica è il sistema con il quale vengono visualizzate le immagini generate a prescindere dalla tecnica utilizzata.

(10)

I primi dispositivi di output grafico entrati in commercio negli anni sessanta, e rimasti in uso fino alla metà degli anni ottanta, erano basati sul concetto di grafica vettoriale (dove il termine vettoriale è da intendersi come sinonimo di lineare). La caratteristica principale di questi dispositivi è che il fascio di elettroni, che va a colpire il rivestimento fosforescente del CRT, può muoversi direttamente da una posizione all’altra, secondo l’ordine arbitrario dei comandi di display. Annullando l’intensità del fascio, questo può essere spostato in una nuova posizione senza modificare l’immagine visibile. Questa tecnica, chiamata random scan (scansione casuale), è rimasta in uso fino agli anni settanta, quando hanno cominciato a diffondersi i sistemi di grafica raster, basati sulla tecnologia televisiva [ATT].

Un’immagine raster corrisponde ad una matrice formata da linee orizzontali, le scan lines, i cui elementi sono detti pixel e corrispondono ad una determinata posizione all’interno dell’immagine stessa. Per elaborare un’immagine quindi occorre memorizzare una serie di matrici in un’apposita area di memoria, il frame buffer, localizzata all’interno del chip della CPU tradizionale o in un’area di memoria dedicata [figura 1.11]. L’insieme delle matrici in memoria contenute nel frame buffer è detto pixmap (pixel map) oppure bitmap. L’immagine complessiva sullo schermo viene creata attraverso una scansione sistematica (raster scan) delle matrici di pixel in memoria attraverso un fascio di elettroni, regolando di volta in volta l’intensità del fascio in modo da riflettere l’intensità del singolo pixel. Nei sistemi a colori ci sono tre tipi di raggi, uno per ogni colore primario: rosso, verde e blu (sistemi RGB). Ogni volta che viene completato il ciclo di scansione per righe si dice che lo schermo viene “rinfrescato” con l’operazione di refresh.

La Grafica Raster ha nel tempo soppiantato la Grafica Vettoriale grazie ad alcuni vantaggi che essa offre:

• Costi inferiori dovuti alle memorie di capacità elevata che, grazie allo sviluppo tecnologico, hanno raggiunto prezzi contenuti;

• Possibilità di visualizzare aree piene colorate e disegni;

• Il tempo di refresh dell’immagine è indipendente dalla complessità dell’immagine stessa .

(11)

figura 1.11 - architettura HW per la gestione della grafica raster

Uno dei principali svantaggi è invece costituito dalla natura intrinsecamente discreta della rappresentazione tramite pixel: le primitive grafiche, quali linee, curve o poligoni, devono essere convertite nelle matrici di pixel che meglio le rappresentano con un’operazione di scan

conversion. Inoltre l’uso del raster display può essere la causa di problemi di frastagliamento

delle immagini.

Il modo in cui un’immagine viene scritta su disco viene detto formato grafico. Esistono formati sia raster che vettoriali. I principali formati di immagini raster, si possono dividere, in base al tipo di compressione, in lossy (con perdita di qualità) e lossless (senza perdita di qualità).

I formati senza perdita di qualità (la grande maggioranza), salvano le immagini in maniera tale che nessun dato dell'immagine stessa venga trascurato; in tal modo è possibile rielaborare le immagini anche migliaia di volte senza che avvenga il minimo decadimento qualitativo. Anche dopo 1000 correzioni e salvataggi, la qualità dell'immagine sarà la stessa di quella originale. E' evidente che questo comporta un chiaro svantaggio: le immagini tendono ad occupare uno spazio di storage notevole. Nel caso di immagini a risoluzioni molto grandi,

(12)

possono occupare decine di MB. Per esempio, un'immagine a 24 bit (16 milioni di colori) di risoluzione 3000x2000, occuperà in un formato non compresso, circa 18 MB. Un'immagine con risoluzione 6000x4000, occuperà circa 72 MB.

Ecco chiara quindi la necessità di salvare le immagini in un formato che, sacrificando la qualità, consenta di risparmiare spazio prezioso. Per guadagnare spazio, questi formati evitano di salvare dettagliatamente certe zone dell'immagine che si presume l'occhio umano non distingua bene. Ne consegue che se un'immagine lossy viene rielaborata e nuovamente salvata, la perdita di qualità aumenterà ancora, e ogni successivo salvataggio potrà comportare una perdita ulteriore.

I formati grafici più utilizzati sono:

BMP (Bitmap): in questo formato ogni pixel dell’immagine raster viene memorizzato

in ordine (secondo la matrice raster) e senza compressione. I pixel sono rappresentati tramite i tre colori RGB. Ogni singolo colore è generalmente rappresentato da 8 o 16 bit.

TIFF (Tagged-Image File Format): le specifiche di questo formato permettono una

notevole flessibilità; questo di per sé è un vantaggio ma rende difficile scrivere un interprete pienamente conforme alle specifiche. Questo formato, permette di rappresentare immagini con diversi spazi di colore: scale di grigio, RGB, CMYK, CIELab. Sono possibili anche diversi formati di compressione lossless tra cui l'LZW. Le immagini possono essere memorizzate, oltre come linee di scansione, anche in riquadri: questo permette di avere un rapido accesso ad immagini di grosse dimensioni. Un file TIFF può contenere immagini divise su più "pagine" (videate), ad esempio si possono inserire in un unico file tutte le pagine che compongono un fax. • GIF (Graphics Interchange Format): questo formato (lossless) è basato sull'uso di una

tavolozza di colori: anche se il singolo colore può essere uno fra milioni di sfumature, solo un certo numero di essi è disponibile (al massimo 256). Uno dei colori della tavolozza, può essere definito come trasparente e quindi, in fase di visualizzazione, è sostituito con lo sfondo. Questa caratteristica (canale alpha) permette di simulare immagini non rettangolari. I colori sono memorizzati in una tavolozza, una tabella che

(13)

associa un numero ad un certo valore di colore. Esiste una tecnica per simulare un numero maggiore di colori (dithering) utilizzando pixel di colore simile a quello desiderato. Purtroppo in questo modo si perdono dei dettagli e, siccome non esiste un unico algoritmo di scelta dei colori, la qualità dell'immagine è molto variabile. Questa tecnica, inoltre, diminuisce la comprimibilità dell'immagine stessa.

PNG (Portable Network Graphic): il formato PNG è simile al GIF, in quanto è capace

di immagazzinare immagini in modo lossless, ossia senza perdere alcuna informazione, ed è più efficiente con immagini non fotorealistiche (che contengono troppi dettagli per essere compresse in poco spazio). Essendo stato sviluppato molto tempo dopo, non ha molte delle limitazioni tecniche che potevano limitare l'utilizzo del GIF: può memorizzare immagini in true color (ovvero circa 16 milioni di colori, mentre il GIF era limitato a 256 colori), inoltre ha un canale dedicato per la trasparenza (alpha).

JPEG (Joint Photographic Export Group): attualmente è lo standard di compressione

delle immagini fotografiche più utilizzato. JPEG specifica come una immagine può essere trasformata in uno stream di byte, ma non come questo può essere incapsulato in supporti di memorizzazione. Lo standard JPEG definisce due metodi di compressione di base: uno basato sull'uso della trasformata DCT con compressione di tipo lossy, l'altro sull'uso di un metodo predittivo con compressione di tipo lossless. L'algoritmo base dello JPEG di tipo lossy viene detto baseline; inoltre sono state definite delle estensioni opzionali del metodo lossy per la compressione di tipo gerarchico e progressivo. Come si può notare dalla [figura 1.12] il miglior rapporto qualità/dimensione si ha con valore intorno al 90%. È inoltre immediatamente osservabile come, all'aumentare del livello di compressione, compaiano artefatti sempre più visivamente evidenti. Tra questi il più tipico per il formato JPEG (come per tutti i formati che si basano sulla DCT) è la quadrettatura o blocking; oltre ad esso si possono verificare fenomeni di ringing (fenomeno di Gibbs) e blurring (sfocatura).

(14)

a - JPEG qualità 10% - 3,2 Kb b - JPEG qualità 50% - 6,7 Kb

c - JPEG qualità 90% - 30,2 Kb d - JPEG qualità 100% - 87,7 Kb

figura 1.12 - esempio di immagine JPG con diversi livelli di compressione

In questa tesi, per poter gestire i vari formati grafici in input, è stato fatto uso di un’apposita libreria open-source: DevIL (Developer’s Image Library). Questa libreria mette a disposizione comandi e procedure per poter caricare in memoria, aprire e salvare molto facilmente le immagini salvate nei formati grafici più comuni. Permette di accedere direttamente ai pixel dell’immagine (memorizzandoli in un vettore), e di poterli modificare uno ad uno. Oltre a questo, permette anche di applicare semplici filtri alle immagini (sharpen,

blur ecc), e di compiere semplici operazioni quali il ridimensionamento, l’aggiunta di bordi

ecc. Inoltre DevIL si integra facilmente con OpenGL, per gestire in modo intuitivo e semplice la texturizzazione [DEVIL].

(15)

1.3.2.

La grafica 3D e la libreria OpenGL

Rispetto alla grafica bidimensionale, nella grafica 3D si aggiunge un grado di complessità dovuta all’introduzione della terza dimensione che crea una serie di problemi dovuti al fatto che i dispositivi video sono per loro stessa natura 2D.

Concettualmente quindi l’idea è quella di pensare ad una fotocamera mobile che, posta in un determinato punto della scena (punto di vista o viewpoint), realizza un’immagine bidimensionale (fotogramma o frame) dell’ambiente e degli oggetti che lo compongono. Nella realtà la fotocamera è un programma di grafica e l’ambiente o gli oggetti sono un insieme di dati costituiti da linee, punti e piani.

Ogni frame viene quindi realizzato attuando una serie di fasi che riguardano:

1. La specifica del tipo di proiezione: in generale si considerano i due tipi di proiezione più comuni:

a. la proiezione prospettica, in cui la distanza tra il centro della proiezione e il punto di vista è finita;

b. la proiezione ortografica o parallela, in cui la distanza tra il centro della proiezione e il punto di vista è infinita e quindi prende il nome di direzione di proiezione.

2. La specifica dei parametri di vista: le coordinate del modello nel sistema di riferimento solidale al modello stesso e la posizione dell’osservatore e del piano di vista (viewplane). In generale si usano due tipi di sistemi di coordinate:

a. Le object coordinates, solidali all’oggetto

b. Le eye coordinates, solidali al punto di vista e quindi all’osservatore.

3. Il Clipping, ovvero l’eliminazione della porzione di scena 3D che non rientra all’interno dei confini della finestra grafica. Questa operazione viene fatta definendo un volume di vista (view volume), differente a seconda del tipo di proiezione scelta, sul quale applicare gli algoritmi di clipping.

(16)

4. La Proiezione e la visualizzazione, in cui il contenuto della proiezione del volume di vista sul piano di proiezione, rappresenta dalla finestra, viene visualizzato su una zona rettangolare dello schermo, detta viewport.

La pipeline grafica è definita come la catena di trasformazioni che i dati geometrici devono attraversare affinché la rappresentazione matematica diventi un’immagine renderizzata [FOLEY]. Essa è formata da tre stadi principali: Trasformazione, Illuminazione e

Rasterizzazione. [figura 1.13]

La fase di Trasformazione è a sua volta suddivisa in tre sottofasi. Come è già stato detto questo processo è assimilabile idealmente allo scatto di una foto con una macchina fotografia; le sottofasi che la compongono quindi possono essere ricondotte al puntamento della macchina verso il soggetto della foto, alla scelta della lente o alla sistemazione dello zoom e alla scelta della dimensione della foto.

figura 1.13 - gli stadi della pipeline grafica

La sottofase di trasformazione di Modelviewing si occupa di passare, per ogni vertice dell’oggetto in input, dalle coordinate solidali con l’oggetto stesso alle coordinate rispetto il sistema di riferimento solidale alla posizione dell’osservatore. Tale trasformazione si applica attraverso la moltiplicazione di matrici e la sua idea è quella del posizionamento nella scena della camera e dell’oggetto stesso.

La fase successiva prende nome di fase di trasformazione di Projection durante la quale si definisce il volume di vista e si eliminano gli oggetti facenti parte delle porzioni non visibili della scena. Infine la sottofase di trasformazione di Viewport consiste nel convertire le coordinate 3D in coordinate bidimensionali indicanti la posizione dell’oggetto sullo schermo

(17)

(window coordinates). In realtà, pur essendo bidimensionali, le coordinate ottenute da questa ultima sottofase di trasformazione sono comunque 3: la terza, che corrisponde alla coordinata

z, viene utilizzata per la corretta visualizzazione dell’oggetto tridimensionale in un dispositivo

bidimensionale e viene memorizzata in un’apposita area di memoria (z-Buffer). Durante la fase di visualizzazione è grazie ai test su i dati contenuti in questa area di memoria che oggetti che sono mappati nello stesso punto bidimensionale vengono o meno visualizzati a seconda della loro distanza dall’osservatore, e quindi a seconda che sono o meno visibili da esso. Durante la fase di Illuminazione si determina il colore di ogni pixel, facendo interagire le proprietà delle luci presenti nella scena, le proprietà delle superfici dell’oggetto e della radiazione luminosa incidente. Quando una luce colpisce una superficie, una parte di essa è

assorbita e una parte riflessa. A seconda della natura e della struttura del materiale di cui è

costituita la superficie, si possono avere o meno interazioni con altri oggetti della scena. Oltre alla riflessione diretta della luce, quindi, si devono considerare anche le riflessioni reciproche tra gli oggetti (inter-riflessioni). Nei modelli questo effetto viene simulato introducendo una illuminazione uniforme della scena, cioè con intensità costante, ed è detta illuminazione

ambiente. Questa componente fa sì che nessuna superficie della scena risulti completamente

oscura. Il modello di illuminazione maggiormente usato all’interno delle comuni pipeline è quello di Phong [PHONG], essendo un giusto compromesso tra livello di approssimazione matematica dell’interazione fisica tra luci e superfici e il costo computazionale; secondo questo modello la riflessione della radiazione luminosa viene modellata in termini di tre componenti additive, diffusa, speculare e ambiente, ognuna delle quali viene modellata separatamente e definita sia per le sorgenti luminose che per i materiali della scena. Ogni oggetto della scena deve, quindi, avere associato ad uno specificato materiale, i cui parame tri possono essere applicati uniformemente sulla superficie o modulati da una tessitura (texture). La texture è una matrice rettangolare di dati, ad esempio colore e luminanza o colore e Alpha. In altri termini si tratta di un’immagine bidimensionale che viene associata (mapped) a primitive geometriche tridimensionali, con le quali condividono tutte le trasformazioni alle quali tali primitive sono soggette. La loro applicazione permette di migliorare (apparentemente) il grado di dettaglio di un modello e in generale il suo fotorealismo.

(18)

Affinché un’applicazione possa accedere alla pipeline grafica è necessaria una libreria grafica ad alto livello, indipendente da qualsiasi periferica di input o di output e con una portabilità simile a quella dei linguaggi di programmazione ad alto livello [figura 1.14]. Per quanto riguarda la grafica tridimensionale sono stati proposti diversi standard, nessuno dei quali però ha ancora ottenuto un’ampia accettazione da far sì che si possa parlare di tali. Alcune infatti sono ancorate ad uno specifico tipo di hardware, altre invece sono legate ad uno specifico sistema operativo. Ci sono però altre librerie che sono indipendenti sia dall’hardware che dalla piattaforma .

Una di queste, divenuta uno standard de facto, è la libreria OpenGL [MASON], introdotta dalla Silicon Graphics, della quale esistono varie implementazioni per i maggiori sistemi operativi attualmente in uso. La sempre maggiore diffusione di questa libreria ha fatto sì che la maggior parte dell’esistente hardware grafico supporti direttamente da hardware le funzionalità che la libreria mette a disposizione del programmatore.

OpenGL [SEGAL] mette a disposizione del programmatore un insieme molto ampio di funzioni e procedure che consentono di specificare gli oggetti e le operazioni coinvolte nella produzione di immagini grafiche di alta qualità, come immagini a colori di oggetti tridimensionali. Infatti la libreria offre una serie di funzioni dedicate alla grafica tridimensionale, pur essendo in grado di trattare quella bidimensionale considerandola un sottoinsieme della prima. Per far in modo che la libreria risulti portabile su diverse piattaforme, sono state rimosse le funzioni di input e di utilizzo di finestre di visualizzazione concentrandosi maggiormente sugli aspetti di rendering dell’interfaccia.

OpenGL è un sistema del tutto trasparente al programmatore, le cui proprietà sono descritte unicamente attraverso l’input e l’output, tralasciando nello specifico il funzionamento interno. Gli input sono in generale rappresentati dalle funzioni chiamate dal programma applicativo, da eventi generati da dispositivi quali mouse e tastiera e dai messaggi del sistema operativo. Gli output sono invece per la maggior parte di tipo grafico e sono costituiti da primitive geometriche da visualizzare sul video.

(19)

figura 1.14 - la libreria grafica

Le funzioni primitive messe a disposizione da OpenGL definiscono gli oggetti a basso livello che il sistema può visualizzare, ovvero le primitive geometriche che permettono di tracciare punti, linee, triangoli , poligoni testi e vari tipi di curve e superfici. Nel manipolare questo tipo più complesso di entità è la libreria stessa che si occupa di scomporle in primitive semplici. Le trasformazioni geometriche che, come detto, vengono effettuate tramite moltiplicazioni di matrici, in OpenGL vengono operate sulle matrici model_matrix, view_matrix e prospective_matrix. Le prime due consentono di effettuare le trasformazioni di modelviewing, mentre la terza consente di effettuare la proiezione prospettica delle primitive che compongono l’oggetto. Per quanto riguarda l’iluminazione l’OpenGL mette a disposizione quattro tipi di sorgenti luminose:

• L’illuminazione ambiente, che consente di raggiungere un’illuminazione omogenea essendo caratterizzata da intensità costante in ogni punto della scena;

• Le sorgenti puntiformi, che emettono luce in tutte le direzioni e il cui effetto di intensità su una superficie è inversamente proporzionale al quadrato della distanza tra la sorgente e la superficie stessa:

• Gli spotlight, che sono sorgenti luminose la cui luce emessa si distribuisce all’interno di un cono, con la maggior emissione concentrata nel centro del cono;

• Le sorgenti distanti, che illuminano gli oggetti con raggi di luce paralleli e, quindi, la distanza della sorgente è sostituita dalla sua direzione, corrispondendo idealmente ad avere una sorgente luminosa a distanza infinita dalla superficie illuminata.

Le specifiche di OpenGL sono state dettate e vengono periodicamente riesaminate da un comitato indipendente di produttori software e hardware, tra i quali membri permanenti figurano tra gli altri Digital Equipment, IBM, Intel, Microsoft e Silicon Graphics. Tale

(20)

comitato ha la funzione di rendere note le variazioni alle specifiche, l’uscita di nuove versioni e i test di conformità che le varie implementazioni devono soddisfare.

1.3.3.

L’ambiente di sviluppo XVR

XVR è un ambiente di sviluppo integrato, finalizzato alla costruzione di applicazioni per la realtà virtuale. Permette una facile gestione del progetto e offre l’integrazione di uno scene graph multimodale, suoni, collision detection, modellazione fisica di base, rendering aptico ecc. [CARR2005]

Oltre alla manipolazione di contesti grafici 3D, XVR permette la gestione di una vasta gamma di periferiche per la VR (trackers, mouse 3D, apparecchi per la motion capture, proiettori stereoscopici) e usa un motore grafico per la visualizzazione in real time di modelli 3D complessi.

In generale un programma XVR può essere rappresentato tramite un loop che integra altri loop specifici, ognuno dei quali viene eseguito a una propria frequenza e che si occupa di una aspetto specifico della scena: grafica, fisica, networking, tracking ecc. Le applicazioni XVR vengono implementate grazie a un linguaggio di scripting dedicato che dà agli sviluppatori la possibilità di gestire animazioni 3D, effetti sonori posizionali, streaming audio e video, e l’interazione con l’utente.

Figura

figura 1.2 – scorci di ambienti virtuali urbani
figura 1.3 – Spostamento di un osservatore lungo una strada
figura 1.4 - visione prospettica di un GPS attuale  figura 1.5 - GPS di prossima generazione
figura 1.6 - Google Earth  figura 1.7 - Google Sketchup
+7

Riferimenti

Documenti correlati

L’uso della SVD nella compressione di immagini digitali avviene nel seguente modo: se A `e la matrice m × n dei pixel dell’immagine digitale si pu`o ragio- nevolmente pensare che

Ibidem, pag.. 37 essa, non averla adottata o addirittura rigettata. Perciò l'aspetto di novità dell'innovazione può essere espresso in termini di conoscenza,

A conclusión de cuanto dicho hasta ahora, pues, se puede afirmar que la edición crítica de los manuscritos inéditos del patrimonio de Palacio es un trabajo tanto necesario cuanto

Lo que sí se puede hacer es dividir sus películas según se tome como clave interpretativa la presencia o meno de algún elemento más que otro, en este caso el grotesco, para

Lo que pone de manifiesto que en aquel momento ignoraba la lengua y las letras siríacas y que desconocía al escritor que no había sido traducido a otra lenguap. 204 De paenitentia,

In this thesis we are going to deal with three principal issues: the first part will study multinational firms as merely economic actors, analyzing their characteristics,

According to Art Market Report 2018, Mainland China has experienced an increase in the online auction sector for a value of $400 million 117.. Nowadays, in China, it is

2.4 il camice monouso viene rimosso prima di uscire dalla camera di isolamento ed è eliminato nel clinical box posto all’interno della camera. 2.5 il personale, subito dopo