4.8.2.4        Usare Pigmenti Trasparenti e Texture Stratificate



I pigmenti sono descritti da variabili numeriche che ci forniscono i valori di rosso, verde e blu del colore da usare ( per esempio, color rgb <1, 0, 0> ci dà il rosso 'puro'). Ma questa sintassi può darci più che i valori di rosso, verde e blu. Possiamo specificare la trasparenza modificandola come segue : color rgbf<1, 0, 0, 1>. La f sta per filter (filtro), la parola che POV-Ray usa per la trasparenza filtrata. Un valore di 1 significa che l'oggetto è completamente trasparente, ma che tuttavia filtra la luce in accordo al colore specificato. In questo caso, avremmo un rosso trasparente, come cellophane. Esiste un altro tipo di trasparenza in POV-Ray. Si chiama trasmittanza o trasparenza non filtrata (la parola chiave è transmit). E' diversa dalla trasparenza filtrata nel fatto che non modifica il colore della luce che passa attraverso. Può essere specificata in questo modo : rgbt <1, 0, 0, 1>.
Utilizziamo alcuni pigmenti trasparenti per creare un altro tipo di texture, la texture stratificata. Ritornando al nostro precedente esempio, dichiariamo la seguente texture :

#declare LandArea = texture {
pigment {
agate
turbulence 1
lambda 1.5
omega .8
octaves 8
color_map {
[0.00 color rgb <.5, .25, .15>]
[0.33 color rgb <.1, .5, .4>]
[0.86 color rgb <.6, .3, .1>]
[1.00 color rgb <.5, .25, .15>]
}
}
}
}

Questa texture costituirà la terraferma. Ora, facciamo gli oceani dichiarando la seguente :

#declare OceanArea = texture {
pigment {
bozo
turbulence .5
lambda 2
color_map {
[0.00, 0.33 color rgb <0, 0, 1>
color rgb <0, 0, 1>]
[0.33, 0.66 color rgbf <1, 1, 1, 1>
color rgbf <1, 1, 1, 1>]
[0.66, 1.00 color rgb <0, 0, 1>
color rgb <0, 0, 1>]
}
}
}
}

Nota come l'oceano è la zona blu opaca e la terraferma abbia delle zone trasparenti che permettono di vedere la texture sottostante. Ora, dichiariamo un'altra texture per simulare un atmosfera con nubi frastagliate :

#declare CloudArea = texture {
pigment {
agate
turbulence 1
lambda 2
frequency 2
color_map {
[0.0 color rgbf <1, 1, 1, 1>]
[0.5 color rgbf <1, 1, 1, .35>]
[1.0 color rgbf <1, 1, 1, 1>]
}
}
}

Ora, applichiamo tutte e tre queste texture alla nostra sfera.

sphere { <0,0,0>, 1
texture { LandArea }
texture { OceanArea }
texture { CloudArea }
}

Renderizziamo questo esempio ed otteniamo un pianetino abbastanza fedele.

Fig.111-Pianeta

Potrebbe essere meglio. Non ci piace, in particolare, l'aspetto delle nubi. C'è un modo in cui potrebbero essere fatte, che sarebbe molto più realistico.