• Non ci sono risultati.

II.2. Laser Scanning

II.2.4 Elaborazione dei dati: il Meshing

Gli algoritmi di allineamento consentono di rototraslare le singole range map in un sistema di coordinate unico siano esse sotto forma di nuvola di punti o di mesh. Pertanto questo processo può avvenire prima o dopo la conversione del dato spaziale da un insieme di punti ad una superficie poligonale. Questo passaggio di stato prende il nome di meshing ed è il risultato dell’applicazione di algoritmi basati su formule geometriche come il diagramma di Voronoi o la triangolazione di Delaunay176.

Il diagramma di Voronoi rappresenta un reticolo nel quale i poligoni sono costruiti grazie a delle linee che bisezionano le congiungenti di due punti con i punti che li circondano.

La triangolazione di Delaunay invece prevede la proiezione di tutti i punti su un piano bidimensionale e la loro congiunzione in base alla distanza minima.

Le mesh sono set di poligoni che nel campo della modellazione solida e, più in generale della computer graphics, definiscono oggetti poliedrici. Sono formate da una connessione ordinata di primitive geometriche quali vertici, edge (spigoli) e facce poligonali o triangolari.

91

Vertici Edge Faccia

Quest’ultima categoria è la modalità maggiormente diffusa per gestire le informazioni da laser scanner per le proprietà geometriche dei triangoli. Il triangolo infatti è sempre planare, dunque poco deformabile e ben si rapporta alle capacità di calcolo ed elaborazione delle schede grafiche dei computer177. Una mesh è caratterizzata da una serie di attributi numerici che si riferiscono alle coordinate in tre dimensioni dei vertici e alle informazioni cromatiche RGB di ciascun vertice e di ciascuna faccia, inoltre ogni faccia deve essere disposta secondo una direzione che viene definita dalla normale, un vettore tridimensionale perpendicolare alla superficie. La quantità di informazioni presenti in una mesh pone dinanzi a non pochi problemi per la gestione di dati molto complessi come quelli da laser scanner. Per questo motivo le mesh possono essere sottoposte ad un continuo editing per decimare il numero di entità geometriche o per ottimizzarle applicando specifici filtri di smoothing, con l’obiettivo di rendere più fluido l’andamento della superficie e ridurre le porzioni ruvide, causate da possibili errori di calcolo o di scansione. È molto frequente che compaiano lacune, chiamate holes o buchi, dovute ad insufficienza di punti spaziali e dunque all’impossibilità da parte dell’elaboratore di interpolare le informazioni geometriche; a tal proposito esistono comandi per riempire questi vuoti e cercare di recuperare l’assenza di dati.

II.2.4.1 Fusione delle mesh

L’output di una scansione laser costituisce dunque una rappresentazione tridimensionale di un oggetto da un unico punto di vista. La copertura integrale della superficie dell’oggetto richiede dunque una moltiplicazione dei punti di ripresa, e quindi delle scansioni, in un numero adeguato. Il procedimento sinora descritto riguarda la gestione e il trattamento dei dati geometrici relativi alle singole scansioni e la conversione di ciascuna nuvola di punti in superficie triangolare. Un set di mesh opportunamente allineate non è sufficiente a

92 rappresentare un oggetto, poiché le zone di sovrapposizione fra le diverse superfici costituiscono un problema ai fini della correttezza formale del modello. Per tale ragione bisogna ricorrere a specifici algoritmi che consentono di fondere le diverse componenti in un corpo poliedrico unico. La fusione è un procedimento di ricostruzione dell’apparato topologico definito dalle singole mesh, detto anche re-meshing, che consente di sintetizzare tutte le informazioni geometriche in un’unica rappresentazione tridimensionale dell’oggetto priva di informazioni ridondanti e nella quale non restano elementi delle riprese originali. Si tratta di operazioni interamente governate dall’elaboratore, pertanto all’utente non è data la possibilità di intervenire in tempo reale sulla mesh, ma soltanto al termine del processo di fusione. Gli algoritmi di fusione si basano su specifici metodi volumetrici. Il set di mesh viene inserito all’interno di una griglia tridimensionale ripartita in celle cubiche. L’unità minima della griglia prende il nome di voxel, volumetric picture element, che può essere definito come un’evoluzione cubica del pixel e rappresenta l’unità di misura per le immagini 3D. Vale a dire che come i valori in pixel dei lati di una immagine raster 2D definiscono la loro dimensione, allo stesso modo i voxel determinano la dimensione di un oggetto poliedrico178.

Le mesh allineate dunque passano all’interno delle celle e, per ciascuna di esse, viene calcolato un campo di distanze che partono dalle facce del cubo fino a toccare quelle triangolari dell’oggetto. La superficie finale viene definita in base a valori medi all’interno del campo di distanze e la sua densità di informazioni aumenta in un rapporto di proporzionalità diretta con il numero di voxel di cui è composta la griglia: più alto è questo valore e più la mesh apparirà definita. Come si vedrà nei prossimi capitoli, i voxel sono stati utilizzati nell’ambito di questo progetto anche per ricreare in alcuni casi le volumetrie di unità stratigrafiche.

Per quanto gli algoritmi di remeshing siano studiati per generare modelli corretti da un punto di vista topologico, il set di mesh allineate può avere a volte caratteristiche tali da favorire lo sviluppo di anomalie che si concretizzano graficamente con la comparsa di elementi geometrici non desiderati. Questi rientrano nella categoria della geometria non-manifold e possono essere rimossi dai software preposti tramite comandi utili ad individuare particolari anomalie nella geometria dei triangoli e nelle modalità in cui questi sono connessi fra loro. La tabella riportata di seguito descrive quali sono gli errori topologici più comuni in una mesh triangolare:

93

Triangolo degenere

Due o tre vertici del triangolo occupano la stessa posizione. Il triangolo appare come un segmento o come un punto

Triangoli duplicati Due triangoli hanno gli stessi vertici

Faccia non-manifold Più di due facce condividono lo stesso edge

Facce instabili Due facce adiacenti hanno le normali invertite

Facce intersecanti Alcune facce si intersecano con altre

Una volta apportate le correzioni necessarie per rimuovere gli eventuali errori topologici, il modello 3D può essere sottoposto ad ulteriori modifiche di ottimizzazione. La quantità di informazioni geometriche presenti potrebbe risultare particolarmente ostica ai fini dell’esportazione dell’oggetto verso altre piattaforme, come ad esempio le soluzioni per la visualizzazione interattiva in real-time o sul web. È impensabile infatti poter inserire oggetti tridimensionali così complessi come quelli realizzati con laser scanner in un’applicazione interattiva realizzata con motori di sviluppo come OGRE179 o Unity180. Questi programmi pongono dei veri e propri limiti al numero di primitive geometriche che un singolo oggetto può avere al momento dell’implementazione in una scena 3D, ad esempio in Unity il numero di

179 OGRE, acronimo per Object-Oriented Graphics Rendering Engine, è un motore di sviluppo libero per applicazioni 3D basato sul concetto di programmazione ad oggetti. (http://www.ogre3d.org).

180 Unity rientra nella categoria dei game engine, motori di sviluppo particolarmente indicati per la creazione di giochi tridimensionali interattivi. (http://unity3d.com/unity/).

94 vertici non può superare le 65000 unità. Si tratta di un ostacolo di non poco conto se la scansione laser di un oggetto è finalizzata all’utilizzo del modello in un ambiente dalle caratteristiche simili. Come abbiamo visto, una mesh può essere semplificata tramite procedure di decimazione delle facce triangolari, in modo da ridurre, anche sensibilmente, il numero di facce, edge e vertici di un corpo solido. Una eccessiva semplificazione tuttavia può compromettere la resa grafica della mesh, poiché riducendo la quantità delle entità geometriche viene ridotta anche la quantità delle informazioni cromatiche, privando di dettaglio la texture del modello. Esistono strumenti in grado di trasferire le informazioni cromatiche dalle mesh originali su copie a bassa densità di poligoni, sfruttando le procedure di baking texture in Blender.

La finalità di questo trattamento è quella di preparare modelli realizzati con il laser scanner, e dunque ricchi di informazioni geometriche, per l’esportazione verso una molteplicità di piattaforme in base al tipo di fruizione che si intende proporre. Queste procedure sono state ampiamente utilizzate nell’ambito di questo progetto, pertanto si rimanda la descrizione di tutti i loro passaggi al Capitolo IV. Tuttavia è utile soffermarsi sul concetto di texture e sulle modalità di gestione del colore di mesh triangolari realizzate con laser scanner.

II.2.4.2 La gestione delle informazioni cromatiche

I dispositivi di scansione tridimensionale possono essere coadiuvati da fotocamere per acquisire informazioni cromatiche oltre alle coordinate spaziali della porzione di oggetto rilevata. La gestione del colore può variare in base al tipo di output prodotto dal sistema utilizzato. Se lo scanner produce nuvole di punti, le informazioni RGB saranno assegnate a ciascun vertice, pertanto saranno raggruppate sotto l’insieme denominato vertex color. In seguito ai processi di meshing e a opportuni trattamenti, il vertex color può essere esteso anche alle facce triangolari. Altri sistemi di scansioni, come ad esempio il David, generano direttamente una superficie triangolare priva di colore, ma con la possibilità di proiettare su di essa una immagine bidimensionale raster che prende il nome di texture.

L’applicazione di una texture prende il nome di texture mapping181 e consiste nel processo di

attribuzione di informazioni relative a come il modello 3D deve apparire in fase di rendering, ossia di resa grafica. Il modello viene associato ad uno shader, cioè un insieme di istruzioni che indica l’aspetto che deve assumere il materiale in fase di resa grafica.

Tutti i software di editing 3D hanno una componente interna chiamata motore di rendering, dotata di specifiche capacità di restituzione visiva in grado di gestire le proprietà dei materiali come colore, opacità, illuminazione o altri parametri, ciascuno dei quali costituisce un canale.

95 Esistono tipi differenti di texture182. Alcune di esse infatti sono ripetibili e si dispongono in maniera regolare giustapponendosi una accanto all’altra fin quando non coprono l’intero corpo. Sono utilizzate per definire oggetti che non hanno particolari singolarità da mettere in evidenza. Viceversa le texture ad hoc sono studiate per conferire particolari dettagli in precisi punti del solido tridimensionale, sia esso un poliedro regolare o una mesh triangolare.

L’applicazione di una texture al modello tridimensionale avviene mediante proiezione, vale a dire tramite una corrispondenza fra i pixel dell’immagine raster e i punti della superficie. Le principali modalità di proiezione sono tre:

proiezione planare: la texture è proiettata sull’oggetto da un unico punto di vista;

proiezione cilindrica: l’immagine si avvolge lungo un asse intorno all’oggetto;

proiezione cubica: in base all’orientamento delle facce la texture si adatta a

seconda della proiezione planare più adeguata fra le tre XY, XZ e YZ.

Tuttavia queste proiezioni possono non essere sufficienti a conferire alla mesh l’aspetto desiderato. Per tale ragione esistono delle proiezioni che possono essere definite dall’utente o anche in maniera automatica (nel caso dei software per la gestione di mesh da laser scanner). Più che di proiezioni si tratta di sub-proiezioni e sono definite in base a degli edge che sono selezionati e utilizzati come seam, cioè come cuciture. L’associazione della texture alla superficie avviene tramite assegnazione di coordinate cartesiane che, per differenziarsi dalle coordinate del sistema di riferimento locale X,Y,Z prendono il nome di U (ascisse) e V (ordinate).

Le texture non costituiscono l’unica categoria di immagine raster da applicare ai modelli 3D. È possibile ricavare dalle superfici stesse delle immagini per la resa di effetti grafici come spessori, zone di rilievo o di ruvidezza, o ancora particolari condizioni di illuminazione che aumentano la complessità dell’oggetto senza modificarne la composizione geometrica, come nel caso del bump mapping e del normal mapping, oppure agendo direttamente su di essa (displacement map).

Le immagini raster per la mappatura possono essere di diverso formato in base alle finalità previste. Quelli più comuni sono i JPEG, i PNG, i TGA e i TIFF, ma possono essere utilizzati anche formati RAW o HDR in base alle necessità o al tipo di resa previsto. Formati come il JPEG fanno parte della categoria lossy, ossia realizzati tramite algoritmo di compressione con la conseguenza di una perdita di informazioni che ne compromette la qualità. I formati TIFF, PNG e TGA invece possono avere una compressione del tipo lossless e dunque non subiscono

96 alcuna perdita. Questi formati inoltre, a differenza dei JPEG, possono gestire il canale alpha per la conservazione dell’informazione sulla trasparenza.