• Non ci sono risultati.

2. Ricerca ed analisi sulla rappresentazione del progetto architettonico dal

2.1. Storia ed evoluzione degli strumenti grafici digitali

2.1.2. Evoluzione degli algoritmi di visualizzazione

Lo sviluppo delle tecniche di visualizzazione è basato innanzitutto sulle potenzialità dell'hardware che le supporta, ed è sempre finalizzato alla scoperta di metodi che ottengano risultati sempre migliori gestendo il minor numero possibile di informazioni, in modo da rendere il processo di visualizzazione rapido e efficace20.

Agli albori dell'uso dello strumento digitale in campo grafico, le immagini rispecchiavano palesemente la natura astrattamente matematica del loro processo generativo, mostrandosi nel loro primordiale aspetto geometrico lineare (wireframe). Ma durante gli anni Settanta e Ottanta le ricerche sulla computer graphic si intensificarono facendo aumentare via via il realismo visivo delle immagini digitali, sino a pervenire, negli anni Novanta, all'invenzione di algoritmi facilmente eseguibili su computer economici e quindi pronti per una rapida diffusione. Questi algoritmi erano in grado di produrre immagini prospettiche a colori, emulando gli effetti materici e di interazione di luci e corpi, in modo sempre più realistico21.

Un modello digitale vettoriale può essere rappresentato, per via informatica, in diversi modi: ad ognuno di questi corrisponde un algoritmo di calcolo o una combinazione di algoritmi.

Non dimentichiamo infatti che, dietro ogni operazione eseguita dal computer, c'è una funzione numerica che traduce nel linguaggio informatico le operazioni necessarie all'ottenimento del risultato atteso. E quindi, anche nel caso del rendering, sono numerosissimi gli algoritmi di calcolo che sottendono alle varie funzioni: molte volte i nomi dei creatori di tali algoritmi permangono nel nome delle funzioni che utilizziamo.

Gli algoritmi a nostra disposizione, che tutt'ora vengono utilizzati, sono stati sviluppati in tempi diversi, diventando via via più complessi e potenti man mano che andavano sviluppandosi ed incrementandosi le potenzialità di calcolo dell'elaboratore.

Ci sono tuttavia delle discordanze tra coloro che usano parlare di

rendering, sulla distinzione tra metodi di visualizzazione e metodi

propriamente di rendering. Infatti alcuni hanno l'abitudine di considerare come rendering anche le rappresentazioni prodotte dagli algoritmi più elementari, che altri sostengono debbano invece essere definiti come semplici forme di visualizzazione, proprio perché non contemplano la possibilità di simulare quegli effetti fisici, propri dei corpi, riproducendo fedelmente la realtà. Io credo che, almeno nel campo della rappresentazione architettonica, non ci sia necessità di distinguere il due termini nel contenuto, ma eventualmente per la finalità o fase di lavoro in cui sono utilizzati. Infatti, nel linguaggio comune, si è soliti identificare come forma di visualizzazione quella che accompagna un oggetto durante la sua manipolazione progettuale, mentre con rendering si

indica il processo finalizzato alla realizzazione di un determinato effetto visivo sull'oggetto. Credo comunque che i due termini possano essere considerati sinonimi, anche perché con il grado di evoluzione che gli applicativi stanno raggiungendo attualmente, sarà possibile gestire l'oggetto mentre ci stiamo ancora lavorando, con l'aspetto visivo definitivo.

Tuttavia, bisogna ricordare che un determinato algoritmo di visualizzazione, anche elementare, può essere scelto per la rappresentazione, anche per le sue intrinseche caratteristiche espressive, e questo è ad esempio il caso del wireframe che, come vedremo, è una delle tecniche più usate nell'architettura contemporanea, proprio perché incarna l'intima essenza geometrica del disegno digitale. Pertanto, nella scelta dell'applicativo, possiamo concordare sul fatto che «non esiste un

renderer migliore degli altri e non esiste una semplice regola che

permetta di scegliere il renderer per il proprio lavoro. L'unico modo per fare una scelta corretta è quello di conoscere tutte le variabili in gioco per fare una scelta cosciente»22.

Percorriamo ora la recente storia di evoluzione dei principali algoritmi di visualizzazione, in una sintesi delle loro definizioni e potenzialità.

Il metodo di visualizzazione più elementare è quello in wireframe (filo di ferro), con il quale vengono visualizzati, come linee, soltanto i contorni delle superfici piane e alcune generatrici delle superfici curve. Tutte le superfici vengono considerate non opache e pertanto vengono visualizzate tutte le linee del modello, anche quelle poste dietro altre superfici. Essendo la forma di visualizzazione più semplice e leggera per il calcolo, questa è in effetti la più usata nella fase di costruzione del modello, pur non avendo qualità di simulazione materiale.

La modalità hideline (linea nascosta) rappresenta un livello appena superiore rispetto al wireframe, perché le superfici vengono ora considerate opache e quindi non vengono più visualizzate le linee nascoste, ossia quelle linee che rispetto all'osservatore sono posizionate dietro altre superfici.

Aumentando di complessità, troviamo lo shading (ombreggiatura), in cui vengono riprodotte le ombre proprie degli oggetti. Le superfici sono colorate e l'intensità del colore varia a seconda dell'esposizione alla luce, secondo la legge di Lambert23. Tuttavia il

calcolo dell'intensità luminosa viene eseguito soltanto per il baricentro di ogni superficie piana. Il calcolo per le superfici curve è eseguito approssimandole a superfici poliedriche per ognuna delle quali viene sempre considerato il baricentro24.

Un'ulteriore distinzione sussiste tra il cosiddetto flat shading e il

Warnock shading: il primo ombreggia allo stesso modo tutte le

superfici aventi la stessa inclinazione rispetto ai raggi luminosi, anche se hanno diversa distanza dalla sorgente luminosa, con una conseguente perdita di profondità dell'immagine; il secondo

invece introduce la progressiva diminuzione dell'intensità della luce con l'aumentare della distanza della superficie illuminata dalla sorgente luminosa. Inoltre per la prima volta si prende in considerazione la riflessione speculare e con essa la possibilità di rappresentare le superfici lucide25.

Un passo avanti è rappresentato dal Gouraud shading (algoritmo di Gouraud, dal nome del suo inventore) conosciuto anche come

intensity interpolation shading26, nel quale l'intensità luminosa

viene sempre calcolata per un solo punto a superficie, ma il colore viene sfumato per interpolazione sino ad incontrare quello delle superfici contigue. In questo modo si elimina l'effetto sfaccettato che era invece presente nei precedenti algoritmi. Questo algoritmo permette anche la rappresentazione del materiale degli oggetti ma non prevede il calcolo delle ombre portate. È molto usato perché richiede pochi calcoli da parte del computer restituendo immagini abbastanza realistiche27. Tuttavia risulta anche immediatamente

riconoscibile a causa della colorazione a bande dovuta all'impossibilità di ricostruire perfettamente la continuità delle superfici28.

Procedendo per sempre maggiore complessità, troviamo l'algoritmo di Phong (dal nome dell'inventore) noto anche come

normal-vector interpolation shading29, che può essere considerato

la base dei veri e propri algoritmi di rendering. Viene introdotta la tecnica di calcolo del raytracing, «che valuta il colore alla intersezione tra un immaginario raggio uscente dall'occhio dell'osservatore e il modello; sono calcolati tanti raggi quanti sono i punti di definizione dell'immagine che si desidera realizzare. L'impostazione geometrica del problema, molto fedele al fenomeno reale, risolve contemporaneamente sia il problema della distribuzione della luce sulle superfici che quello della generazione delle ombre portate»30.

Gli algoritmi sopra esposti, nel complesso, vanno sotto il nome di metodi scanline, mentre il raytracing e il radiosity stanno alla base dei metodi più avanzati.

Il raytracing consente di ottenere effetti di riflessione e rifrazione, e di ottenere ombre precise e nette. Questo algoritmo calcola il tracciato seguito dall'illuminazione nella scena virtuale in modo opposto a ciò che avviene nel mondo fisico. Infatti nella realtà la luce è emessa dalla sorgente luminosa, colpisce una superficie e viene riflessa o assorbita raggiungendo poi l'occhio dell'osservatore. Il raytracing invece traccia l'illuminazione partendo da un determinato pixel (dell'immagine che si vuole ottenere), ricreando il tracciato della luce sino alla sorgente luminosa. In questo modo si è certi che ogni raggio calcolato raggiunge l'immagine finale31. Questo metodo presenta un'elevata

complessità di calcolo.

Il radiosity consente il calcolo delle inter-riflessioni che esistono tra i vari oggetti che compongono la scena, ossia gli effetti luminosi

dovuti alla luce indiretta, sempre a scapito di una notevole pesantezza di calcolo. Un'importante novità è tuttavia costituita dal fatto che gli algoritmi radiosity «determinano il contributo luminoso relativo a ogni superficie in maniera indipendente dalle trasformazioni di visualizzazione. Quindi, una volta espletati i calcoli iniziali, sarà necessario effettuare le sole trasformazioni relative all'osservatore e al punto di vista, risparmiando una notevole quantità di calcoli»32.

Come spiegheremo nella trattazione degli effetti luminosi, descritti nel capitolo successivo, nel mondo reale i vari possibili effetti dovuti all'interazione tra luce e corpi non avvengono mai da soli ma quasi sempre contemporaneamente e in combinazione tra loro, determinando una notevole complessità di resa nella rappresentazione.

Se si pensa al caso della diffusione della luce, si evidenzia che i raggi incidenti vengono riflessi in tutte le direzioni, e possono essere ulteriormente scomposti incontrando altri oggetti della scena, prima di raggiungere l'occhio dell'osservatore. L'unico algoritmo in grado di riprodurre tali interazioni è il radiosity.

Gli applicativi più evoluti integrano gli algoritmi di raytracing e di

radiosity, permettendo di ottenere risultati sorprendentemente

fotorealistici.

Esistono oggi numerosissimi tipi di algoritmi, che tendono a perfezionare sempre più il realismo dell'immagine, anche affinandosi sulle caratteristiche di particolari categorie di materiali, come ad esempio i metalli.

Negli ultimi anni più recenti nuove tecniche hanno implementato gli algoritmi sopra esposti, che restano pur sempre alla base del

rendering, perfezionando sempre più la resa dell'illuminazione e

con questa la verosimiglianza dell'immagine.

La maggior parte dei motori di rendering fotorealistici, tuttavia, usa ancora in qualche modo il ray-tracing (tra questi si possono citare alcuni motori di rendering come blender internal, yaf(a)ray, mental

ray®, indigo®, sunflow®).

I motori di rendering basati sulla radiosity, invece, sono meno, forse proprio per la difficoltà di calcolo che questo procedimento richiede, e questo algoritmo è sempre abbinato ad altri.

Una recente novità è rappresentata dai renderer che usano micropoligoni, che generalmente si basano sull'algoritmo REYES®, ma sono ancora poco diffusi33.

La maggior parte delle tecniche attualmente più diffuse possono pertanto essere definite ibride proprio perché combinano diversi algoritmi: tra queste ne citiamo qui di seguito alcune.

La mappa di fotoni (photon mapping) memorizza in una mappa una parte delle informazioni sulla radianza, e si può scegliere anche di memorizzare solo alcune informazioni, ad esempio quelle sulle caustiche.

come diffusi e precalcola l'occlusione (per le ombre) degli oggetti». Fornisce una buona approssimazione della scena se la maggior parte dei materiali è di tipo diffuso.

L'irradiance changing «è una tecnica in cui vengono salvati dei campioni nella scena, così se un raggio cade vicino ad un altro che è stato già valutato, non bisogna ricalcolare nulla»34.

Infine un breve cenno deve essere riservato ai cosiddetti motori

unbiased (come ad esempio Maxwell render®, Fryrender®, Indigo

Render) «che considerano la luce all'interno della scena 3D come un'onda elettromagnetica, restituendo immagini fisicamente corrette»35.