Questo sito utilizza cookie di terze parti per inviarti pubblicità in linea con le tue preferenze. Se vuoi saperne di più clicca QUI 
Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all'uso dei cookie. OK

Programmazione di un motore grafico immersivo

Il lavoro svolto si è prefissato come obbiettivo la realizzazione di un motore grafico autonomo che offrisse una riproduzione realistica e immersiva di uno scenario virtuale dal punto di vista visivo, sonoro e della gestione dei movimenti dell’utente all’interno dell’ambiente simulato.
Per quanto riguarda il primo aspetto si è agito su due fronti. Da una parte si è fatto uso della stereoscopia, generando quindi per ogni fotogramma una coppia di immagini capaci di integrare gli elementi monoculari osservabili ed efficaci anche tramite un solo occhio con la stereopsi, derivante dal processo di fusione sensoriale operato dal cervello ed in grado di conferire una sensazione di profondità analizzando le disparità tra le immagini recepite da entrambi gli occhi. Queste differenze derivano dalla loro separazione orizzontale, la cosiddetta distanza intero¬culare, e dalla relativa generazione di due differenti volumi di visione asimmetrici (frustum off-axis). All’interno del motore grafico questi ultimi vengono generati tramite una modifica originale alla procedura introdotta da Paul Bourke grazie alla quale è stato possibile gestire in maniera corretta la variazione del FOV orizzontale. La corretta rilevazione del movimento parallattico può essere simulata in modo efficace tracciando la posizione dell’osservatore rispetto allo schermo (head-tracking) istante per istante. Per implementare questo processo si è fatto uso della telecamera a raggi infrarossi contenuta all’interno del controller Nintendo Wii Remote da accoppiare con una serie di Led anch’essi a infrarossi da posizionarsi sul capo dell’utilizzatore.
Per offrire una riproduzione convincente della realtа è comunque necessario, oltre alla percezione della profondità, che i fotogrammi in se stessi siano quanto più verosimili possibile. Il lavoro svolto adempie a questo compito grazie all’implementazione di una recente tecnica di rendering chiamata deferred shading; tramite questo sistema soltanto i fragment che realmente contribuiscono a formare l’immagine verranno elaborati. Per farlo gli attributi relativi ad ogni pixel vengono immagazzinati all’interno di un buffer chiamato G Buffer situato nella memoria grafica per un rapido accesso tramite texture multiple. Operare in questo modo comporta un duplice vantaggio: trasferire tutte le informazioni una volta soltanto e poterle in seguito riutilizzare un numero arbitrario di volte applicando luci, ombre e altri effetti visivi tramite algoritmi di image processing. Con lo scopo di ridurre ulteriormente il numero di pixel totali da elaborare, per ogni fonte di luce è stato inoltre definito un proprio volume di influenza successivamente approssimato per eccesso tramite mesh convessa per essere infine sottoposto ad un depth test: in questo modo si ottiene la proiezione bidimensionale che racchiude i pixel per i quali il contributo di quella particolare luce sia diverso da zero. Gli effetti di post processing implementati sono stati selezionati in base al favorevole rapporto tra costo computazionale e grado di realismo offerto: Anti Aliasing, Depth Of Field e Screen Space Ambient Occlusion; gli ultimi due in particolare permettono di simulare rispettivamente la ridotta profondità di campo del sistema visivo umano e una credibile approssimazione di illuminazione globale in real time. Per diminuire la potenza di calcolo complessiva richiesta si è fatto uso di una struttura di partizionamento spaziale necessaria per ridurre il numero di triangoli da renderizzare, nello specifico una BVH (per la cui generazione è stata ideata una particolare ottimizzazione) con volumi di bound sferici da utilizzare in unione ad una procedura di frustum culling ottimizzata per questo scopo. Il tutto è stato realizzato tramite linguaggio C, OpenGL 2.0 e shaders in formato GLSL.
Sotto l’aspetto sonoro si sono utilizzate le librerie OpenAL per generare l’audio posizionale e gestire l’effetto doppler, fornendo una corretta localizzazione dei suoni tramite i diffusori e garantendo un ulteriore grado di immersione all’interno della scena.
Per quanto riguarda la modalitа di navigazione, si è cercato di riprodurre le velocità di spostamento, accelerazione e decelerazione del corpo e della testa dell’uomo tramite l’utilizzo di un vettore (indicizzato secondo il frame rate istantaneo) in base al quale calcolare traslazioni e rotazioni da effettuare per ogni fotogramma.
Grazie al fatto che il motore grafico realizzato considera come potenzialmente dinamici tutti gli elementi che è in grado di gestire (geometria, luci, suoni, osservatore, ecc…), non viene inoltre posto nessun vincolo alla tipologia di algoritmi da implementare; sommando questo fatto alla modularità con cui è stato progettato l’intero sistema, si è reso molto semplice aggiungere nuove funzionalità.

Mostra/Nascondi contenuto.
Introduzione Il rendering 3D in realnulltime consiste nel far generare al Computer immagini tridimensionali molto rapidamente. Un’immagine appare sullo schermo, l’osservatore la vede ed interaginull sce, influendo tramite questo feedback su quello che sarà generato successivamente. Quenull sto ciclo di azione, reazione e rendering avviene ad una velocità sufficiente da fare in modo che l’osservatore non distingua le singole immagini ma veda un unico movimento che lo immerga in un processo dinamico e realistico. La frequenza con cui queste immagini sono visualizzate viene misurata in fps (frame per second). Da 5fps a 15fps si parla di interattività, mentre superata la frequenza di 25null30fps si può parlare effettivamente di realnulltime, con una soglia ottimale fissata a 60fps. Visto che 60 immagini al secondo corrispondono a poco più di 16 millisecondi disponibili per generare ogni frame, risulta evidente come sia poco il tempo a disposizione per creare un’immagine che riproduca in modo convincente la realtà, senza considerare che non tutto il tempo a disposizione può essere dedicato alla componente visiva. Sebbene l’hardware dedicato alla grafica tridimensionale fosse disponibile da molti anni per le workstation professionali, è solo in tempi relativamente recenti che l’uso di questi acceleratori 3D si è ampiamente diffuso anche a livello consumer. L’introduzione da parte di 3DFX della scheda Voodoo nel 1996 ha dato inizio a questa era. Con il passare degli anni la potenza computazionale delle schede è aumentata in modo vertiginoso, secondo un tasso di crescita tuttora ineguagliato da qualsiasi settore informatico; grazie infatti al continull nuo raffinamento dei processi produttivi è stato possibile stipare una sempre maggiore quantità di transistor per mm² il che, unito all’intrinseco parallelismo offerto dai calcoli inenull renti la generazione di scene tridimensionali, ha permesso di creare schede grafiche costinull tuite da migliaia di unità di calcolo parallelo. Lo straordinario sviluppo hardware è stato trainato dal mercato videoludico che in questi anni ha sorpassato l’industria dell’intrattenimento per eccellenza, ovvero Hollywood, alnull meno per quanto riguarda l’home video. Questo avanzamento tecnologico ha anche alimentato la ricerca nel campo della grafica interattiva, con la scoperta di nuove tecniche atte ad incrementare sia la velocità di rendering sia la qualità visiva. Nonostante il livello di realismo della grafica realnulltime continui a progredire ogni anno, la fruizione dei contenuti è continuata a restare prettamente bidimensionale. Lo schermo su cui vengono visualizzate le immagini infatti è (e lo rimarrà almeno per il medio periodo) 5

Tesi di Laurea

Facoltà: Scienze Matematiche, Fisiche e Naturali

Autore: Daniele Salvioni Contatta »

Composta da 319 pagine.

 

Questa tesi ha raggiunto 918 click dal 15/12/2010.

 

Consultata integralmente una volta.

Disponibile in PDF, la consultazione è esclusivamente in formato digitale.