7.1.5.5 Comuni
Tranelli sul Colore
La varietà e la complessità
dei metodi relativi alla specificazione del colore possono condurre ad
alcuni comuni errori. Vi sono alcune cose da considerare quando si specifica
un colore.
Quando si usa un valore di filtro, i colori che lo attraversano vengono
moltiplicati per le componenti del colore a cui si riferisce il filtro.
Per esempio, se la luce è grigia (rgb < 0.9, 0.9, 0.9 >) il
passaggio attraverso un filtro rgbf < 1.0, 0.5, 0.0, 1.0 > darà
come risultato il colore rgb < 0.9, 0.45, 0.0 > dove la componente
rossa non viene modificata, il valore della componente verde viene dimezzato
passando da 0,9 a 0,45 ed il blu risulta totalmente bloccato. Spesso si
pensa di definire un oggetto completamente trasparente con la frase
color filter 1.0
ma questo comporta un valore uguale
a zero per le componenti di rosso, verde e blu. In questo modo si specifica,
infatti, un filtro totalmente nero che impedisce il passaggio della luce.
La procedura corretta è descritta dagli esempi che seguono:
color red 1.0 green 1.0 blue 1.0 filter
1.0
oppure
color transmit 1.0
Nel secondo esempio i valori di rgb
non sono importanti. Tutte le componenti della luce non verranno modificate
da questo filtro.
Un altro errore comune è l'uso di identificatori di colore insieme
alle parole chiavi relative al colore. Per esempio:
color Mio_Colore red 0.5
sostituisce qualunque valore della
componente rossa in Mio_Colore con una componente rossa di 0.5.
color Mio_Colore + red 0.5
invece, aggiunge 0.5 alla componente
rossa di Mio_Colore e chiaramente....
color Mio_Colore * red 0.5
dimezza la componente rossa, come era
prevedibile, ma moltiplica anche le componenti verde, blu, filtro e quella
della trasparenza per zero! Dopo questa moltiplicazione il risultato dell'espressione
è rgbft < 0.5, 0, 0, 0, 0 >.
Nell'esempio seguente i risultati non modificano Mio_Colore.
color red 0.5 Mio_Colore
Questo perché l'identificatore
sovrascrive completamente il valore precedente. Quando si usano identificatori
con parole chiave del colore, l'identificatore dovrebbe essere al primo
posto.
Infine, alcune sintassi di POV-Ray consentono specificazioni del colore,
ma usano solo la parte rgb. In questi casi è consentito usare un
valore decimale là dove un colore ne abbia bisogno. Per esempio:
finish { ambient 1 }
La parola chiave ambient
richiede la specificazione di un colore,
così il valore 1 diventa il vettore < 1, 1, 1, 1, 1 >.
Anche
pigment { color 0.4 }
è consentito, ma potrebbe essere
diverso da ciò che intendi. Lo 0.4 diventa < 0.4, 0.4, 0.4, 0.4,
0.4 > col filtro e la trasparenza impostati a 0.4. E' più probabile
che tu volessi...
pigment { color rgb 0.4 }
in questo caso ci si aspetta un vettore
a 3 componenti. Perciò lo 0.4 è promosso a < 0.4, 0.4,
0.4, 0.0, 0.0 > con un valore pari a zero sia per il filtro che per
la trasparenza.
![]() |
![]() |
![]() |