4.4.3        Height Field



Un height field (campo di quota) è un oggetto la cui superficie è determinata dal valore del colore o dal numero in tavolozza dei punti di un'immagine creata a questo scopo. Con gli height field, si possono creare montagne realistiche ed altri tipi di paesaggi. Per prima cosa, abbiamo bisogno di un'immagine dalla quale creare l'height field. Accidentalmente, POV-Ray è ideale per creare un'immagine di questo tipo.
Creiamo un nuovo file chiamato image.pov e vi scriviamo :

#include "colors.inc"
global_settings {
assumed_gamma 2.2
hf_gray_16
}

La parola hf_gray_16 fa sì che l'immagine di output sia in un particolare formato a 65536 toni di grigio (in 16 bit), perfetto per la generazione di height field. Il normale formato a 256 toni di grigio risulterebbe in superfici meno regolari. Creiamo una macchina fotografica posta in modo che punti direttamente all'origine lungo l'asse z.
camera {
location <0, 0, -10>
look_at 0
}

Creiamo poi un piano posizionato come un muro a z=0. Questo piano riempirà completamente lo schermo e sarà colorato con striature bianche e grigie.
plane { z, 10
pigment {
wrinkles
color_map {
[0 0.3*White]
[1 White]
}
}
}

Infine, una sorgente luminosa.
light_source { <0, 20, -100> color White }
Renderizziamo questa scena a 640x480 +A0.1 +FT.

Fig. 20-Immagine per height-field

Otterremo un'immagine che produrrà un ottimo height field. Creiamo un nuovo file chiamato hfdemo.pov e lo editiamo come segue :

#include"colors.inc"

aggiungiamo una macchina fotografica, due unità sopra l'origine e dieci indietro...

camera{
location <0, 2, -10>
look_at 0
angle 30
}

...ed una sorgente luminosa.

light_source{ <1000,1000,-1000> White }

Quindi, aggiungiamo l'height field. Nella seguente sintassi, viene specificato un file Targa e l'height field viene smussato, gli viene assegnato un semplice pigmento bianco, è traslato per centrarlo sull'origine e scalato in modo che assomigli a delle montagne e riempia lo schermo.

height_field {
tga "image.tga"
smooth
pigment { White }
translate <-.5, -.5, -.5>
scale <17, 1.75, 17>
}

Salviamo il file e lo renderizziamo a 320x240 -A. In seguito, quando saremo soddisfatti del risultato, lo renderizzeremo ad una risoluzione maggiore e con antialiasing.
Ed eccoci sull'Himalaya !

Fig. 21- Montagne