Introduzione
|
Il
progetto “Image Terrain-Maker”
e’ nato per simulare
la creazione di superfici altimetriche in tre dimensioni partendo da
immagini piane in scala di grigi. Il programma riceve come input
d’ingresso un file di formato PGM (Portable Graymap) dal quale
genera come output un modello tridimensionale del disegno in esso
contenuto. Con il programma è possibile inoltre eseguire alcune
operazioni di visualizzazione del terreno visualizzato, come zoom e
rotazioni, oppure è possibile livellare la superficie innalzando le
zone più basse o abbassando quelle più alte.
|
Funzionamento
|
Il
processo di utilizzo del programma prevede più fasi
successive molto semplici, che vanno dall'ideazione del
terreno in due dimensioni, alla sua creazione, fino
all'utilizzo delle varie funzionalità contenute nel progetto “Image Terrain-Maker”.
|
I°
passo: Creazione Immagine di Input
|
Inizialmente
l'utente parte disegnando l'immagine attraverso un editor
apposito; questa sarà solo l'inizio del processo
che porterà, mediante varie operazioni eseguite
da “Image Terrain-Maker”,
alla creazione del terreno 3D relativo. L'immagine, in scala di grigi,
deve essere creata tenendo conto che diventerà un
Height Map caratterizzata da
picchi di maggiore altezza nelle zone più chiare della figura, e
di minore in
corrispondenza delle parti scure. | |
|
II°
passo : Acquisizione Immagine
|
In
questa fase l'utente lancia il programma dando come
parametro il file appena creato. Questo è una bitmap e perciò,
ad ogni punto che compone l'immagine, è associata
l'informazione corrispondente al suo colore. Tutti
i valori presenti vengono memorizzati da “Image Terrain-Maker”
per essere poi utilizzati nella fase di disegno. Rappresenteranno
nel disegno finale l'altezza dei nodi della griglia
quadrata schematizzata a fianco.
| |
|
III° passo -
Visualizzazione
|
Con i dati acquisiti viene visualizzato il
terreno in un mondo a tre dimensioni. Larghezza e
profondità sono quelle dell'immagine di partenza
che può essere considerata la base della
superficie ed a queste viene ad aggiungersi
l'altezza che estrude il terreno dal piano. La realizzazione avviene
infatti disegnando effettivamente la griglia e sollevando
in altezza i nodi di questa in base al colore che
i pixel assumevano nell'immagine da cui si è
costruito l'Height Map.
| |
|
IV° passo -
Gestione Terreno
|
A
questo punto il terreo è stato creato e l'utente
può visualizzarlo sullo schermo. Inoltre è
possibile effettuare in questa fase alcune
operazioni di gestione dell'oggetto
tridimensionale. Ad esempio è possibile cambiare
il punto d'osservazione, ruotare sui tre assi
cartesiani la superficie, scegliere i colori con
cui visualizzarla, oppure effettuare un'operazione
di smoothing.
| | |
|
Creazione
Immagine di Input
|
Il primo passaggio per la
creazione del terreno virtuale non prevede l’utilizzo di “Image
Terrain-Maker”, ma di un qualsiasi programma come Photoshop
o Gimp che permetta di
salvare il file prodotto in formato PGM.
L’immagine da creare è una bitmap in scala di grigi, colorata con
tutte le gradazioni che vanno dal bianco al nero, mentre la grandezza
deve essere 50 pixel in
larghezza e 50 pixel in
altezza. Attraverso l’editor scelto l'utente può disegnare in due dimensioni
il
futuro terreno: dove vorrà avere una zona bassa dovrà colorare
quella parte con colori scuri, mentre per sollevare il terreno
saranno necessari colori chiari.
|
Formato PGM
|
L’utilizzo
del particolare formato e’ dovuta alla comodità di
avere immagini in scala di grigi. In esse infatti il
colore viene memorizzato contrassegnando ogni pixel con un
numero compreso tra 0-255. Lo 0 corrisponde ad un quadratino
nero, mentre il numero 255 è associato ad uno bianco. La scala di grigi utilizza
come massimo e minimo questi due valori e permette di
scegliere sfumature intermedie. Il file che viene realizzato risulta essere composto da cinquanta righe
e cinquanta colonne di valori, come il numero di pixel in
larghezza ed in altezza dell’immagine.
| |
|
Esempio file PGM
|
Esempio di file PGM di tipo "P2", di
dimensioni 24x7 pixel, con il bianco memorizzato con valore 15:
P2
// inizio header
24
7
15
// fine header
0
0 0
0
0
0 0
0 0
0 0
0 0
0 0
0 0
0 0 0
0
0 0
0
0 3
3 3
3 0
0
7 7
7 7
0 0
11 11 11 11 0
0 15 15 15 15 0
0 3
0 0
0 0
0 7
0 0
0 0
0 11 0
0 0
0 0 15
0 0
15 0
0 3
3 3
0 0
0 7
7 7
0 0
0 11 11 11
0 0
0 15 15 15 15
0
0 3
0 0
0 0
0 7
0 0
0 0
0 11 0
0 0
0 0 15
0 0
0 0
0 3
0
0 0
0 0
7 7
7 7
0 0
11 11 11 11 0
0 15 0
0 0
0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
| |
|
Acquisizione
Immagine
|
Il passo
successivo prevede che “Image Terrain-Maker”
riceva in ingresso l'immagine generata in precedenza. Questa
operazione può essere eseguita trascinando il file PGM sull'eseguibile, o in shell facendo seguire al nome del
programma quello dell'immagine:" terreno nomefile.pgm
". A questo punto il programma si occupa di
acquisire in memoria i 2500 valori numerici contenuti nel file (50
righe x 50 colonne) ad esclusione di quelli dell'intestazione. Durante la scansione del file
vengono letti i valori cromatici di ogni singolo punto, e riversati
nell'ordine in cui appaiono in un array mono-dimensionale.
I
primi cinquanta numeri corrisponderanno ai diversi colori dei punti
della prima riga, la seconda cinquantina sarà la seconda fila di
pixel dell'immagine e così via. I valori contenuti
nell'array
verranno utilizzati come i vertici di una griglia, la loro
posizione ( x, z) sarà quella che assumono nel file di partenza, mentre la
y verrà determinata dal numero, ossia dal colore di partenza.
|
Visualizzazione
|
Esaurita
la precedente procedura, viene
realizzato il disegno della superficie altimetrica all'interno
di un mondo tridimensionale.
Quest'ultimo è caratterizzato da tre
assi cartesiani, larghezza x, altezza y, profondità z. Nell'origine
viene disegnato il terreno, mentre il punto di vista dell'osservatore
è a 45 gradi rispetto ai tre assi.
L'Height
Map viene creata utilizzando un procedimento di tassellazione
che rende il quadrato
dell'immagine di partenza una maglia
di triangoli connessi tra loro.
|
|
Tassellazione
|
Ogni vertice
dei triangoli di cui è composta la griglia è caratterizzato da tre
coordinate. X e z sono fissate in
modo da rendere la griglia regolare mantenendo fissi i punti
rispetto ai due assi; y, l'altezza, è
invece generata all'interno dell'algoritmo, in base al colore che il
punto assumeva nell'immagine di partenza. Durante la
creazione dei vertici del triangolo è associato ad ogni vertice
anche un colore, dal verde al bianco, che tiene conto della
posizione del punto sull'asse Y. Come in figura accanto è
possibile che vertici dello stesso poligono siano su
altezze diverse e abbiano dunque anche colori diversi. In questo caso la superficie del triangolo sarà
colorata seguendo il metodo dell'interpolazione dei diversi
colori posti ai vertici.
|
|
|
Risultato
Finale
|
I
triangoli vengono così disegnati in successione, facendo
variare solamente l'altezza dei vertici. Complessivamente il
risultato è una superficie quadrata suddivisa in triangoli
disposti con inclinazioni diverse a seconda della colorazione
dell'immagine di partenza. L'oggetto
creato può essere visualizzato in due modalità, attivando il
reticolato (wireframe) compaiono sullo schermo solamente i tre
lati dei triangoli, disattivandolo viene disegnata
tutta l'area coperta dai poligoni. Questa superficie è
colorata anch'essa ma secondo un criterio diverso rispetto al
file d'origine. Nei punti più bassi i triangoli che
compongono la griglia sono verdi chiari, salendo in altezza il
verde diviene più scuro fino a diventare marrone, ancora
sopra trova posto il colore grigio ed infine nei punti più
alti il bianco. Se l'utente lo desidera può anche
assegnare al terreno 3D un colore in scala di grigi come nel
file di partenza. Questa possibilità è utile soprattutto in
relazione alla possibilità di ruotare il terreno e avvicinare
o allontanare l'osservatore. Infatti portandosi al di sopra
della superficie, e diminuendo le dimensioni della stessa,
attraverso lo zoom, è possibile valutare come il tutto
il processo attuato da “Image Terrain-Maker”
non abbia provocato una distorsione della figura di partenza, ma
anzi questa appai immutata.
|
|
|
Gestione
terreno
|
Le funzionalità disponibili nel progetto “Image Terrain-Maker”,
in fase di visualizzazione del terreno, sono molteplici e
comprendono la possibilità di ruotare quanto realizzato,
modificarne i colori, sia della superficie, sia dello sfondo,
scegliere il disegno della griglia più adeguato o eseguire zoom
dell'inquadratura. Queste funzioni sono descritte approfonditamente
nella pagina "interfaccia", mentre qui verrà descritta
l'ultima possibile interazione con il modello 3D: il livellamento (smoothing).
Qualora il terreno presentasse delle zone particolarmente
elevate adiacenti a zone di minore altezza è possibile per l'utente
avvicinarle riducendo le dimensioni dei triangoli che
le uniscono.
Il funzionamento dell'algoritmo prevede che l'utente scelga un
valore, definito di salto, all'interno di una scala che va da 10 a
250. In base al numero selezionato il programma valuterà in quali
casi la griglia presenta adiacenti nodi la cui differenza di altezza
è
maggiore o uguale a tale cifra. Questa verifica avviene controllando
per ogni vertice la sua altezza e paragonandola a quella degli 8
vertici adiacenti. In caso vi sia uno di questi salti troppo
pronunciati tra il vertice ed uno di quelli che lo attorniano il
programma incrementa la coordinata y dei vertici alla base mantenendo inalterato
quello centrale più alto. Nel caso l'utente lo voglia può decidere
invece di abbassare il punto centrale scegliendo che il livellamento
proceda verso il basso premendo appunto nel menù livellamento->alto/basso.
L'operazione viene eseguita sull'array iniziando da quello
di partenza e modificandolo come descritto e per questo motivo può
essere ripetuta più volte di seguito sul terreno via via livellato.
|
|