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.

Software Sviluppato

Di seguito illustriamo i software principali necessari alla creazione dei modelli finali.
Tutto il software qui indicato è ricompilabile sia in ambiente Linux (Red Hat Linux 7.1, kernel v.2.4.2-2) che in ambiente Win32 (Windows 2000), rispettivamente con gcc v.2.96 e con Microsoft Visual C++ v.6.0. Alcuni tool richiedono l'installazione di librerie ausiliarie.

Applicativi

Nel corso dello sviluppo sono state sviluppate le seguenti applicazioni, utili ai fini di controllo:
editor
Finestra dell'applicativo Editor

Fig.1 - Editor di file SRC e AOS

Permette di modificare, partizionare e impostare il bordo di un oggetto memorizzato come file SRC o AOS. Il programma richiede l'installazione delle librerie GLUI v.2.0. L'editor è composto da una serie di menù:
Console
Permette di importare o esportare file e di uscire dall'applicativo:
Load original
Carica il file specificato in formato SRC e lo converte in formato AOS.
Load partitioned
Carica il file specificato in formato AOS.
Save partitioned
Salva il modello attualmente caricato nel file specificato in formato AOS.
Quit
Esce dall'applicazione.
Move
Permette di rototraslare la scena:
Reset
Riposiziona la telecamera alle coordinate originali.
Link to partition
Se abilitato e se selezionata una partizione, i movimenti agiranno sulla partizione scelta e non sulla telecamera.
Visualization
Imposta alcune opzioni di visualizzazione, utili soprattutto durante la fase di editing del modello:
Points
Abilita/disabilita la visualizzazione dei punti.
Connections
Abilita/disabilita la visualizzazione dei segmenti.
Partitions
Abilita/disabilita la visualizzazione della partizione selezionata.
Selected subspace
Se abilitato insieme alla visualizzazione della partizione selezionata, visualizza esclusivamente gli oggetti (punti e connessioni) che si trovano "davanti" al piano di partizionamento scelto.
Borders
Visualizza i bordi impostati del modello.
Partitions
Gestisce la creazione, selezione e cancellazione delle partizioni (la partizione 0 è il modello intero e non può essere eliminata):
Add new
Aggiunge una nuova partizione.
Delete
Elimina la partizione selezionata (non può essere la partizione 0, che rappresenta l'intero oggetto).
Split
Duplica la partizione selezionata invertendo la sua normale e ridistribuendo gli oggetti tra le due partizioni (ogni partizione conterrà gli oggetti che si trovano "davanti" ad essa).
Borders
Permette la gestione dei bordi. Il bordo 0 è speciale ed è da intendersi "nessun bordo" (esso non può essere modificato e cancellato).
Add new
Aggiunge un nuovo bordo.
Delete
Elimina il bordo selezionato (il bordo 0 non è cancellabile).
Save
Crea un file contenente esclusivamente le informazioni sui bordi.

Inoltre è possibile interagire col modello nella finestra di visualizzazione selezionando, tramite click sinistro del mouse, gli oggetti di cui esso è composto (ovvero i suoi punti e i suoi segmenti). Tenendo premuto il tasto Shift è possibile selezionare e deselezionare un gruppo di oggetti. Selezionati quindi uno o più oggetti, tramite click destro del mouse, è possibile compiere delle azioni su di essi:

Add to partition
Aggiunge alla partizione attiva gli oggetti selezionati.
Remove from partition
Rimuove dalla partizione attiva gli oggetti selezionati.
Break connection
Selezionata una connessione ed un punto interno ad essa, spezza la connessione in quel punto.
Merge connections
Selezionate due connessioni distinte ma contigue le "incolla" insieme.
Select all connections
Seleziona tutte le connessioni.
Add to border
Selezionato un insieme ordinato di punti crea una spezzata che li congiunge e la collega in fondo al bordo attivo.
Remove from border
Selezionato un punto dal bordo attivo lo elimina.

view3d
Finestra dell'applicativo View3D

Fig.2 - Viewer di file 3D

Finestra dell'applicativo View3D

Fig.3 - Viewer di file 3D - Wireframe

Visualizza un modello nel formato 3D proprietario. Il programma richiede l'installazione delle librerie GLUI v.2.0. Il visualizzatore è composto da una serie di menù:
Console
Permette di caricare file in formato 3D e di uscire dall'applicativo:
Load
Carica il file specificato in formato 3D.
Quit
Esce dall'applicazione.
Move
Permette di rototraslare la scena:
Reset
Riposiziona la telecamera alle coordinate originali.
Visualization
Imposta alcune opzioni di visualizzazione:
Show segments
Abilita/disabilita la visualizzazione dei segmenti.
Show triangles
Abilita/disabilita la visualizzazione dei triangoli.
Wireframe
Se è abilitata la visualizzazione dei triangoli, abilita/disabilita la modalità di visualizzazione wireframe.
Backface culling
Se è abilitata la visualizzazione dei triangoli, abilita/disabilita il backface culling.


Utility

Ecco una breve descrizione dei principali software sviluppati per il progetto di ricerca.
3d2vrml
Il programma si occupa di effettuare conversioni tra i formati 3D utilizzati: VRML, POV e il nostro formato proprietario 3D. Il formato POV è supportato solo come formato di output.

3dcat
Il programma si occupa di fare l'unione di più file in formato 3D in un unico file, sempre in formato 3D.

L'unione in questione è quella insiemistica: nessun controllo o calcolo sui dati viene eseguito.

3dinfo
Estrae utili informazioni da file in formato SRC, AOS e 3D. Il programma estrae dal file specificato tutte le informazioni possibili e le riproduce in output in formato INF.

Il programma estrae: il numero di punti di cui è composto il modello contenuto nel file, il numero di spezzate (o segmenti, dipende dal formato dei dati usato), il numero di triangoli e la bounding box 3D minimale che contiene completamente l'oggetto. Ogni informazione viene scritta su standard output nel formato INF.

aos23d
Converte un file in formato originario AOS nel nostro formato 3D. Ogni file AOS contiene un insieme di partizioni i cui dati devono soddisfare i requisiti dell'algoritmo di triangolazione del DISI Multi-Resolution Terrain Generator.

Il programma si occupa quindi di trasformare, tramite roto-traslazione, i dati contenuti in ogni partizione sul piano XY; passare i dati così ottenuti al programma che si occupa di effettuare la triangolazione; rileggere i dati triangolati e quindi ricalcolare le normali dei triangoli; controtrasformare i triangoli dal piano XY al sistema di riferimento originario della partizione e calcolare il materiale di tutti i triangoli.

Il calcolo dei materiali avviene tramite un semplice algoritmo di colorazione che, assegnata ai singoli materiali una priorità, tramite una visita BFS-like si occupa di assegnare i materiali ai triangoli che non ne hanno ancora uno.

src2aos
Il programma crea, a partire da un massimo di 3 file SRC contenenti la descrizione di un modello, un file AOS contenente dati che, proiettati sul piano di partizionamento generato, non si intersecano. Questo permette di passare i dati al programma di triangolazione del DISI.

I file di input possono essere di quattro tipi: un file contenente i bordi dell'oggetto, un file in formato SRC contenente le curve di livello, un file in formato SRC contenente i punti scattered (le altezze dell'oggetto) e un file in formato SRC contenente le caratteristiche geometriche del modello.

Il programma si occupa di creare due piani di partizionamento che siano ortogonali al lato più corto della bounding box dell'oggetto, quindi selezionato uno dei due piani (o entrambi) il programma processa i file di input.

Ad ogni passo si aggiungono, eventualmente suddividendoli ulteriormente, i segmenti la cui proiezione sul piano di partizionamento non interseca la proiezione, sempre sullo stesso piano, dei segmenti già processati ed accettati.

vrmladjust
Il programma elabora un file VRML con LOD normalizzato per ripristinare il sistema di coordinate originale. In particolare ricalcola le coordinate di tutti i punti, i range e il centro dei LOD.

Per eseguire questi calcoli il programma richiede, su standard input, un file in formato INF contenente l'indicazione della nuova bounding box che il modello dovrà avere.

I cambiamenti applicati al modello originale sono semplicemente delle scalature e traslazioni.