GeoWorld Tutorials
by Bruno Fanini

 Home | GeoWorld Main Page | DOWNLOAD

 

TUTORIALS

 

GENERALITA' SU COME USARE GEOWORLD

Generalmente, quando il programma viene lanciato, la camera si muove lungo un percorso prestabilito (cioè è attivata la modalità di percorso automatico, normalmente circolare) quindi per prendere il controllo diretto dal mouse (versione 1.5) è sufficiente premere 'spazio' per passare da questa all'altra modalità. Nella modalità libera, si può attivare/disattivare la forza di gravità con il tasto 'g'.

Quando si genera una qualunque perturbation (HILL, VALLEY, ecc...) il terreno viene modificato e necessita di essere "ricompilato" (rebuild). Dalla voce menu "ReBuild" è possibile sia ricomputare tutti i layer (tasto F1, consigliato) sia ogni layer singolarmente (normali, colorazione vertici, shadow buffer). Il tasto F2 invece ricompila tutta la vegetazione attiva, che quindi si adatta al nuovo terreno.

Normalmente per generare un nuovo terreno casuale con Perlin Noise, viene usato il tasto F3 (New Random Terrain).

Alcuni dei comandi presenti nel menu principale (tasto destro del mouse) sono script, cioè sono voci che fanno riferimento a files contenenti codice. Nell' Import Menu (tasto sinistro del mouse) invece sono TUTTI script. Un tasto utilissimo a questo proposito è F4 : riapplica l'ultimo script caricato, cioè dopo aver applicato uno script, posso richiamarlo iterativamente con questo tasto.

GENERALITA' SUGLI SCRIPT

Allo stato attuale di GeoWorld, moltissimi parametri sono caricati da files, quasi l'intero programma si basa su questi script.

Nella stessa directory di GeoWorld, ci sono alcuni files testuali (gw_*.txt) che contengono environment (gw_env.txt), filtri (gw_filters.txt) ecc... Il più importante è gw_main.txt che inizializza molti parametri (che comunque potrebbero essere tranquillamente modificati da altri script). Ognuno di questi files contiene vari script. La struttura generale di un singolo script è questa:

<NOME-SCRIPT>

General
  <parametri generali...>
END

Camera
  <parametri camera...>
END

Terrain
  <parametri terreno>
END

WorldEnvironment
  <parametri ambientali...>
END

Vegetation
  <parametri vegetazione...>
END

Physics
  <parametri fisici...>
END

Generation
  <lista sequenziale di perturbation>
END

ENDSCRIPT  // Termina <NOME-SCRIPT>


<NOME-DI-UN-ALTRO-SCRIPT>  // Un altro Script contenuto nello stesso file...
  ...
ENDSCRIPT

 

PERTURBATION SCRIPT

GENERALITA' PERTURBATIONS

Le Perturbations sono comandi sequenziali che alterano il terreno. In generale questi comandi sono immessi da file, all'interno di "Generation", del tipo:

Generation
    < Lista sequenziale di Perturbations >
END

Vedere il file di input primario "gw_main.txt".


La forma generale per una perturbation è:

<TYPE> <MODE> <Usize><Vsize> <Uvar><Vvar> <ITERATIONS>

Dove:


ESEMPI

Ad Esempio, il comando:

HILL > 30 20 3 5 300

Genera 300 perturbations di tipo HILL larghe 30(+-3)u x 20(+-5)v. Quindi una possibile HILL generata potrebbe ricoprire un'area di 28 vertici in U e 23 in V.

FLAT % 20 20 8 15 400

Genera 400 "FLAT" generalmente ampie il 20% del terreno totale, sia in U che in V, ma più variabili in V (15%) e meno in U (8%).

A meno di voler specificare esplicitamente l'ampiezza della perturbation, è molto meglio definirla in percentuale. Infatti in questo modo il mio script diventa più scalabile, se il terreno è grande 200u x 200v Vertici, una perturbation 30 x 50 (%) sarà ampia 60u x 100v, se un giorno, per qualche motivo, porto il terreno ad essere grande 400u x 400v ad esempio, l'ampiezza viene scalata automaticamente a 120u x 200v...


MAGNITUDO

La Magnitudo è un parametro "float" globale che incide sull' ampiezza (riguardo l'altezza, o asse z) di una perturbation. Il valore standard è 1.0, ma durante uno script è spesso modificata più volte per ottenere diverse forze sulle varie HILL, VALLEY, ecc...
Uso : SETMAG <float>

Ad esempio lo script :

SETMAG 8
HILL > 25 25 0 0 50

Crea 50 Perturbation HILL, ognuna di 25u x 25v e di Magnitudo 8.0. E' anche possibile settare la Magnitudo con valori negativi, in questa ottica i 2 script seguenti :

SETMAG 5
HILL > 40 40 5 5  1


SETMAG -5
VALLEY > 40 40 5 5  1

Sono equivalenti, infatti entrambi generano una HILL di 40x40 (+-5). Questo perchè HILL e VALLEY sono complementari.


GENERATION SCRIPT SAMPLE

SAMPLE_GENERATION

Generation
    // Viene abbassato l'intero terreno di 6 unità
    SETMAG -6
    RISE

    // Impostata la Magnitudo a 8, vengono generate 50 HILL ampie del 30% (Variazione del 10%).
    SETMAG 8
    HILL % 30 30 10 10 50

    // Altre 100 HILL, ma con Magnitudo e ampiezza minori.
    SETMAG 4
    HILL % 15 15 10 10 100

    // Stessa cosa, ulteriori HILL di ordine inferiore...
    SETMAG 2
    HILL % 7 7 3 3 600

END

ENDSCRIPT


NOISE INTERPOLATION

Con questo filtro è possibile ottenere un'interpolazione cosenoidale dei valori di altezza già presenti sul terreno. Dal menu principale è possibile selezionare diverse wavelength (lunghezze d'onda) per impostare la "granularità" dell'interpolazione, ovviamente una lunghezza d'onda pari a 1 lascia invariati i valori (z).

Generation
    // Si generano un pò di HILL e VALLEY.
    SETMAG 6
    HILL % 30 30 10 10 50
    VALLEY % 15 15 10 10 100

    // Si interpolano i valori (z) creati a questo punto con lunghezza d'onda = 20.
    INTERPOLATE_NOISES    20

END


HEIGHT FILTERS

Gli Height Filters vengono applicati ad ogni singola perturbation: prima di applicare la Magnitudo infatti, il valore di perturbazione per un singolo vertice è compreso nell'intervallo [0,1], a questo valore in uscita viene applicato il filtro selezionato. Tra questi, il più famoso e usato è il RIDGED.

Nessuno Filtro applicato : Perturbation (in questo caso HILL) invariata. Filtro Ridged a 50% (0.5) : la metà superiore è "ribaltata". In genere il valore standard per il Ridged è proprio 0.5. In GeoWorld si può settare a qualunque valore in [0,1] ottenendo risultati diversi. Filtro Cut a 50% : La metà superiore viene "troncata".

Esempio di script con uso di Height Filter RIDGED :

Generation
    // Setta l'Height Filter RIDGED a 0.5 e genera un pò di HILL e VALLEY.
    SETHEIGHTFILTER RIDGED 0.5
   
    HILL % 30 30 10 10 50
    VALLEY % 15 15 10 10 100
END

Per togliere un filtro precedentemente settato, basta il comando SETHEIGHTFILTER NONE.


TERRAIN FILTERS

A differenza degli Height Filters, questi filtri sono applicati a TUTTO il terreno: si tratta di erosioni, effetti ambientali, ecc...

 


LISTA SCRIPT COMMANDS

Segue la lista completa e aggiornata dei comandi di script :

INIT COMMANDS
INIT Inizializza il terreno, tutti i valori in z = 0.0
SETSEED <int s> Pone il seme random a "s"
   
MAGNITUDO COMMANDS
SETMAG <float m> Setta la Magnitudo a "m"
RESETMAG Resetta la Magnitudo ad un valore di default
MULTMAG <float m> Moltiplica la Magnitudo corrente per "m"
   
PERTURBATION COMMANDS
HILL <mode> <float u, v> <float u_var, v_var> <int it> Genera "it" perturbation larghe "u" x "v" con rispettive variazioni "u_var" e "v_var". "mode" può essere "%" o ">" per fornire i valori in u e v in forma percentuale o discreta.
VALLEY  """ Genera una valle con gli stessi parametri sopra descritti. Comando complementare a HILL
SMOOTH  """ Ammorbidisce la regione determinata (avvicina i valori in z al valore medio della regione)
FLAT  """ Simile a SMOOTH ma porta direttamente tutti i valori in z della regione all'altezza media.
RISE Somma a tutti i valori z del terreno il valore corrente della Magnitudo. Se questa è positiva quindi provocherà un rialzamento del terreno altrimenti un ribasso...
SCALE Identico a RISE solo che i valori vengono moltiplicati per la Magnitudo.
   
NOISE INTERPOLATION COMMANDS
INTERPOLATE_NOISES <int w> Effettua un'interpolazione cosenoidale dei valori z correnti del terreno con WaveLength pari a "w"
   
TERRAIN LAYER RESYNC COMMANDS
UPDATENORMALS Aggiorna tutte le normali al terreno (in esecuzione tasto 'n')
UPDATECOLORS Aggiorna la colorazione del terreno + Deposition Maps (in esecuzione tasto 'u')
UPDATESHADOWS Aggiorna il Layer (Buffer) delle ombre (in esecuzione tasto 'R').
UPDATEHEIGHTBOUNDS Aggiorna i limiti di minima e massima altezza (operazione inclusa nel comando UPDATESHADOWS).
   
HEIGHT FILTER COMMANDS
SETHEIGHTFILTER <HF> <float p> Pone il filtro corrente di perturbation a "HF" con parametro associato "p". HF può essere : NONE (senza parametro, nessun filtro), RIDGED, CUT, LOG.
   
TERRAIN FILTER COMMANDS
TERRAINFILTERPARAMS <int n> <float p1, p2, ..... pn> Carica n parametri per il Terrain Filter.
APPLYTERRAINFILTER <TF> A seconda dei parametri caricati in precedenza con TERRAINFILTERPARAMS, applica il filtro "TF" che può essere :
  • SHORE_EROSION
  • UNDERWATER_EROSION
  • UNDERWATER_DEPOSITION
  • PEAK_EROSION
  • RIDGED
  • XY_QUAKE