Ai42
Skip to: [content] [navigation]
Progetto realizzato su commissione del Dipartimento di Informatica e Scienze dell'Informazione dell'Università degli Studi di Genova (DISI), all'interno di un programma di ricerca svolto in collaborazione con la Sopraintendenza per i Beni Culturali e Ambientali di Aosta e l'Istituto Centrale del Restauro di Roma.

Pipeline e Formato dei Dati

La natura dei dati di origine ha richiesto l'implementazione di una serie di algoritmi il cui scopo è riorganizzare, modificando se necessario, la loro struttura.

Rappresentazione VRML con LOD di un concio 
	visto a diverse distanze

Rappresentazione VRML con LOD di un concio visto a diverse distanze

Per la parte di ricostruzione 3D si è utilizzato il sistema del DISI Multi-Resolution Terrain Generator. Questo package permette di costruire una triangolazione 3D a partire da un insieme di punti (utilizzati come altezze) e un insieme di segmenti (utilizzati come vincoli). Caratteristica di questo package è la necessità di utilizzare un insieme di segmenti e punti le cui proiezioni ortogonali sul piano di riferimento XY non si intersechino, ad eccezione degli estremi.

Pipeline

L'intero processo di conversione è stato automatizzato impiegando una semplice pipeline.
Di seguito illustriamo i passi necessari ad ottenere un modello VRML con LODs (Level Of Details) a partire da un modello in formato SRC.

Rappresentazione VRML con LOD del teatro 
	visto a diverse distanze in modalità wireframe

Rappresentazione VRML con LOD del teatro visto a diverse distanze

  1. Per ogni oggetto si forma un gruppo di massimo 3 file in formato SRC: un file contenente dati scattered (un insieme di punti 3D rappresentante le altezze), un file contenente le features (un insieme di segmenti rappresentanti le caratteristiche geometriche rilevanti dell'oggetto, come crepe e contorni) e un file contenente le isoipse (un insieme di segmenti rappresentante le curve di livello dell'oggetto).
  2. Questo gruppo di file viene processato tramite il programma src2aos per creare un unico oggetto 3D partizionato nel formato AOS, con ogni partizione contenente dati che soddisfano i requisiti dell'algoritmo di triangolazione.
  3. Il file AOS così ottenuto è quindi processato dal programma aos23d che si occupa di triangolarlo (tramite il programma di triangolazione RefCDT_main fornito dal DISI) e quindi di riorientare, calcolare il materiale e ricomporre i triangoli ottenuti e memorizzare il tutto in un file in formato 3D.
  4. Il modello in formato 3D viene quindi convertito in VRML tramite il programma 3d2vrml. Questo passaggio crea un file VRML, senza LOD, pronto per essere ritoccato aggiustando i bordi poiché l'algoritmo di triangolazione usato lavora sul guscio convesso del modello che, quindi, perde i bordi concavi originali.
  5. Ritoccato il modello in VRML esso viene convertito nuovamente nel formato 3D sempre tramite il programma 3d2vrml. L'operazione di ripulitura è stata eseguita manualmente tramite "3D Studio Max v.2.5". Ripetuto questo insieme di operazioni per tutti i sotto-modelli necessari a formare il nostro oggetto, passiamo alla fase di merging.
  6. Se il modello rappresenta già un unico e completo oggetto, si può saltare alla fase di generazione dei LOD, altrimenti è prima necessario unire i diversi sotto-modelli tramite il programma 3dcat specificando in input i sotto-modelli nel formato 3D richiesti, in questo modo otteniamo il modello completo in formato 3D.
  7. A questo punto è necessario estrarre dal modello in formato 3D, tramite il programma 3dinfo, alcune informazioni che verranno utilizzate in seguito e convertire nuovamente tale modello in VRML sempre tramite il programma 3d2vrml.
  8. Dal nuovo modello VRML possiamo finalmente generare un modello VRML con LOD. Quest'ultimo modello necessita di alcune ultime rifiniture che sono eseguite dal programma vrmladjust utilizzando le informazioni recuperate ai passi precedenti.
  9. Il modello VRML con LOD così ottenuto è il modello finale come richiesto.

Formato dei dati

In tutto il progetto sono stati utilizzati i seguenti formati di file:

SRC
È il formato con cui sono stati forniti i dati originali. Tale formato è un file testuale contenente una sequenza di punti collegati ai precedenti tramite un codice. Ogni linea del file contiene l'informazione di un punto ed è in genere così strutturata:
MATERIAL x z y GEOMETRY
MATERIAL è una stringa indicante il materiale di composizione dell'oggetto contenente il punto (ad es. pietra, buco, intonaco, mosaico, indefinito ecc.).
(x,y,z) sono le coordinate che forniscono la posizione del punto in object-space.
GEOMETRY è un codice numerico che permette di conoscere il legame col punto precedente: se è il primo, l'ultimo o in mezzo ad una sequenza continua di segmenti o di curve oppure se è un punto isolato.
AOS
Formato proprietario utilizzato per memorizzare partizioni di dati al fine di rappresentare un oggetto concavo in sotto-oggetti.
3D
Formato proprietario testuale per rappresentare segmenti e triangoli e per gestire al meglio i modelli 3D.
VRML
Formato standard per la descrizione di scene 3D.
Il formato VRML v.1.0 con LODs (Level Of Details) è il formato richiesto con cui dovevano essere memorizzati i modelli forniti.
Per maggiori informazioni su tale formato si rimanda alla documentazione ufficiale.
Un buon visualizzatore multipiattaforma di file VRML 1.0 è SIM VRMLview, scaricabile anche tramite FTP.
INF
Semplice formato testuale utilizzato per memorizzare le informazioni più utili sui modelli, così strutturato:
tag valore
I tag utilizzati sono: points (numero di punti usati dal modello), segments (numero di spezzate/segmenti), triangles (numero di triangoli di cui è composto il modello), boundingbox (coordinate del punto più vicino in basso a sinistra e del del punto più lontano in alto a destra della bounding box, ossia del "cubo" che contiene il modello).