Home



Sant'Agnese in Agone Virtual Ambient è un innovativo strumento informatico per lo studio e la valorizzazione della chiesa di S.Agnese in Agone a piazza Navona a Roma. Attraverso tale strumento si è inteso porre particolare attenzione all'ultima fase della ventennale campagna di restauri dell'edificio monumentale, avviata a partire dal 1993 dal MiBAC attraverso le soprintendenze architettonica e storico-artistica di competenza. Nell'ambiente virtuale interattivo l’osservatore può muoversi all’interno e all’esterno del monumento, dove la luce, espressione del suono, interagisce nella materia spazio temporale della chiesa. Si può pertanto studiare l’illuminazione nei vari periodi dell’anno e apprezzare il lavoro di restauro eseguito
sull’arcone sud del monumento, completato nel dicembre 2008.

Nel video seguente è mostrata un breve riassunto sullo sviluppo del software:
  • Il modello 3D della chiesa è stato ricostruito a partire da sezioni e planimetrie (scansioni o file autocad), importate in 3D Studio.
  • Dopo aver costruito il modello in 3D Studio, ad ogni oggetto del monumento è stato associato il corretto materiale a partire da fotografie scattate in loco.
  • Il modello tridimensionale è stato poi importato all'interno di un ambiente virtuale sviluppato in C++ utilizzando il motore grafico OGRE.




Per garantire un rendering di qualità mantenendo i vincoli del real-time rendering per offrire un prodotto interattivo, è stata data particolare enfasi alla programmazione della scheda grafica tramite implementazione di shaders scritti in Cg.

Porting su iPhone





Primi passi nel porting su iPhone.
Sviluppo di un'applicazione che permetta l'esplorazione dell'arcone della chiesa. Implementazione di illuminazione pointlight e spotlight + bumpmapping.
La risoluzione delle immagini è bassa (l'iPhone ha un display 320x480), ma la qualità dell'immagine è migliorabile.

Nuovo sistema di illuminazione interna







Simulazione dei riflessi della luce nella cupola e all'interno degli arconi mediante l'uso di pont-light aggiuntive e bump-mapping.

Visione stereoscopica



Utilizzando due telecamere e renderizzando la scena due volte è possibile creare un'effetto stereoscopico mediante tecnica anaglifica (http://it.wikipedia.org/wiki/Anaglifo).
L'effetto si ha osservando le foto con occhialini 3D (lente sinistra rossa, lente destra ciano).

Depth of field




Implementazione dell'effetto profondità di campo: nelle due foto sono a fuoco rispettivamente l'affresco nella cupola e l'arcone.

Deferred shading





Il deferred shading è una tecnica che permette la gestione "economica" dei calcoli effettuati sulla GPU. L'output finale su schermo è il risultato dell'applicazione di più tecniche, ciascuna delle quali dà il suo contributo per aumentare il realismo della scena. Spesso più tecniche condividono parzialmente le informazioni di cui hanno bisogno in input per poter calcolare il proprio effetto. Il deferred shading permette di calcolare una volta soltanto le informazioni base "condivise" di cui le varie tecniche hanno bisogno, permettendo un notevole risparmio in termini di quantità di calcoli effettuati. Nel video viene mostrata una prima prova di implementazione, in cui vengono posizionate 23 sorgenti di luce con relative ombre, ottenendo acora più di 20 FPS.
Senza deferred shading, con un calcolo di 23 shadow maps sarebbe improponibile ottenere prestazioni del genere.
Il prossimo passo sarà aggiungere anche lo screen space ambient occlusion in deferred shading, in modo da poter aggiungere realismo all'intera scena.

Con questa nuova tecnica la modalità di simulazione delle luci/ombre acquista molto più senso: ora possiamo gestire più di 3/4 luci contemporaneamente senza timore di sovraccaricare la GPU, ampliando di molto gli studi sull'illuminazione artificiale della chiesa.

Virtual Ambient 2.5



Il video mostra le tre modalità dell'ambiente virtuale.
La modalità indoor permette di analizzare l'illuminazione interna della chiesa a seconda della posizione del sole. E' presente un filtro bloom per aggiungere realismo al bagliore delle finestre e della luce che penetra all'interno della chiesa. Viene presentato anche l'effetto dell'occlusione ambientale calcolata con distanze diverse per aggiungere realismo alla scena.
La modalità outdoor presenta una stilizzazione di piazza navona per analizzare anche le ombre proiettate dall'obelisco.
In queste due modalità si usano texture shadows con tecnica PSSM (3 texture da 1024).
La modalità arcone permette di focalizzare l'attenzione sull'arcone restaurato. L'illusione del rilievo viene data utilizzando bump mapping con normal map, specular map, occlusion map.

SSAO - 2nda parte

Lo Screen Space Ambient Occlusion permette di aumentare notevolmente il realismo della scena.
Questa è il 'comune' effetto che si avrebbe in assenza di SSAO:


Utilizzando differenti interpretazioni della geometria della scena, possiamo avere informazioni diverse sul'occlusione ambientale, per simulare zone di ombra nei contorni degli oggetti, ad esempio insenature nelle pareti, spigoli, etc. (figura a sinistra) e per differenziare aree illuminate da quelle maggiormente in ombra a causa della geometria della chiesa: ad esempio, le cappelle sono zone in cui la luce penetra più difficilmente; con il calcolo delle ombre semplici, questa informazione verrebbe persa, mentre con il SSAO possiamo stimare le aree più in ombra (figura a destra):

Unendo i due calcoli di SSAO precedenti alla scena, otteniamo un risultato del genere:


Che è decisamente più realistico.
Purtroppo però le prestazioni calano drasticamente: si passa da 70 FPS senza SSAO a 40 FPS con un passaggio di SSAO, fino a 16 FPS con due passaggi di SSAO (ultima foto)

Studio tecniche di bump mapping

Per rendere l'illusione della profondità possono essere utilizzate svariate tecniche di bump mapping di complessità maggiore rispetto al semplice utilizzo della normal map descritto in un post precedente.
Partendo da questa semplice foto:

Riusciamo ad estrarre informazioni su..
..come deve riflettere la luce [normal map]:

..sui punti in cui la componente speculare della luce deve essere più o meno forte, e il suo colore [specular map]:

..sui punti in cui simulare le ombre nella componente ambientale della luce [occlusion map]:

..sulla profondità dei singoli punti della superficie [height map]:

Combinando queste informazioni, otteniamo risultati del genere:

Tecniche più avanzate permettono di sfruttare appieno le informazioni sulla stima della profondità dell'immagine, ad esempio utilizzando il cone step mapping e aggiungendo le ombre possiamo aumentare notevolmente la percezione di profondità della superficie:





Ricordiamo che il modello 3D di riferimento su cui abbiamo applicato la nostra texture iniziale è rimasto un piano quadrato (1 quadrato = 2 triangoli adiacenti = 4 vertici in totale). La complessità del modello 3D quindi non è cambiata, rendendo la rappresentazione adatta per il real time.

PSSM+PCF+luce direzionale, luce volumetrica, SSAO, Caelum



I modelli della cupola (interna ed esterna) e la base della chiesa sono quasi ultimati.
Anche se le texture utilizzate sono poche, la geometria della chiesa risulta leggibile grazie all'aggiunta dell'occlusione ambientale.
L'algoritmo PSSM per le ombre ora simula il sole con una luce direzionale (raggi paralleli a distanza infinita): quando la chiesa verrà orientata correttamente (latitudine, longitudine, orientamento) proietterà le ombre in modo corretto. E' stato abbandonato l'approccio PSSM + VSM, che permetteva ombre soft, in favore dell'algoritmo PSSM + PCF, che prevede ombre molto più nette: questo perchè VSM è più stabile se si ha a disposizione uno spazio di profondità lineare nella scrittura delle texture shadows, che è difficile da ottenere in caso di luce direzionale.
L'interfaccia permette di modificare la velocità di avanzamento del tempo per osservare come si evolve il movimento delle ombre all'interno della chiesa.
E' stato anche aggiunto l'effetto "god rays" prendendo spunto da questo articolo pubblicato su GPU Gems 3. Questo effetto di post-processing permette di simulare l'effetto di luce volumetrica quando tra l'osservatore e il sole compare un ostacolo. Grazie alla programmazione della GPU l'effetto è generato in real-time senza significativi cali di prestazioni (il filmato non è accelerato).

Texturing: correzionedella prospettiva e distorsione immagini

Le immagini utilizzate come sorgente per le textures hanno una deformazione prospettica e una distorsione molto pesanti, dovute all'ottica della macchina fotografica utilizzata e dalle posizioni non ottimali da cui sono state scattate.
Per correggere gli errori vengono utilizzati strumenti automatici (Hugin) o manuali (Photoshop).
Questo problema non permette di utilizzare strumenti automatici per lo stitching di più foto: i risultati ottenuti non sono buoni, a causa della forte differenza di prospettiva delle foto a disposizione.

Ecco un esempio di foto deformata e la sua correzione tramite Hugin:



Un esempio di stitching manuale che ricostruisce l'intero arcone a partire da 13 foto diverse:





Da notare che oltre alle evidenti differenze prospettiche, le foto devono essere trattate anche per diminuire le pesanti differenze cromatiche: il che non migliora di certo il risultato finale.

Comporre più foto con differenze prospettiche, distorsioni ottiche, differenti risoluzioni e colori comporta un ulteriore difficolta nell'analizzare il risultato finale per l'analisi delle normali per l'effetto bump-mapping. Ecco l'analisi delle normali dell'immagine precedente:



Questo video mostra l'effetto della normal map precedente con una sorgente di luce dinamica:



Questi sono i primi risultati dell'applicazione della texture sull'arcone (3DStudio):



PSSM + VSM + Caelum



Aggiunta la presenza del giorno e della notte mediante l'integrazione di Caelum .

Il sole diventa ora l'unica sorgente di luce, ed essendo distante dalla scena (teoricamente infinitamente distante) ci sono problemi nella definizione delle ombre se si usa lo shadow mapping. La tecnica Parallel-Split-Shadow-Mapping (PSSM) permette di avere un miglior controllo della risoluzione delle shadow-maps. Nel video si vede come la profondità della scena viene divisa in 3 parti (blu/verde/rosso): a seconda della profondità si ha una texture map a risoluzione differente.

La tecnica PSSM è stata integrata con la tecnica a penombra fissa VSM mostrata nei precedenti video.

Sono presenti ancora problemi nello shadow mapping.

Ambiente virtuale 1.0

Prima prova per la ricostruzione dell'ambiente virtuale.
La dimostrazione nel video utilizza SSAO + ombre VSM + Bump mapping.
Ci sono due arconi parzialmente ricoperti da texture: l'arcone più rifinito ha maggiori dettagli di profondità, ma presenta problemi di mapping di texturing non banali; per l'arcone l'arcone più stilizzato invece il texturing risulta più semplice: la texture non deve coincidere con le profondità dell'arcone, e risulta più semplice costruire una texture ad hoc. L'assenza di problemi di stretching della texture permette anche un migliore risultato della tecnica del bump mapping, perchè la mappa delle normali non viene deformata.
Nel video sono presenti anche due cubi con texture identiche: un cubo ha il bump mapping attivato, l'altro no.

Bump mapping 01


Il Bump Mapping è una tecnica di rendering dei materiali che aumenta la complessità degli oggetti realizzati senza effettivamente aumentare il numero di poligoni che compongono l'oggetto di partenza (http://en.wikipedia.org/wiki/Bump_mapping).

La texture utilizzata è la seguente:


Grazie all'analizi delle normali nell'immagine..

..anche se applichiamo l'immagine su una superficie liscia (nella scena esempio ci sono 2 cubi e un piano), possiamo simulare la componente speculare della luce come se la superficie prevedesse un rilievo modellato sui contorni della texture: