7.6.1.3        Mappe di Colore



La maggior parte dei motivi di colori passa bruscamente da un colore all'altro e utilizza solamente due o tre colori. Invece è possibile utilizzare dei colori che siano frutto di una transizione graduale da una tonalità ad un altra. Questo tipo di colorazione è definita in un modificatore di pigmento chiamato color_map che imposta il passaggio da un colore ad un altro.
Ognuno dei vari tipi di motivi che sono disponibili è caratterizzato da una funzione matematica che prende le coordinate x, y e z della posizione e le trasforma in un numero compreso tra 0.0 e 1.0 inclusi. Quel numero viene usato per specificare quale combinazione di colori è da usare in quel punto della
color_map.

Una mappa di colore è specificata nel modo seguente :

pigment{
tipo_di_motivo
color_map {
[ numero_1 COLORE_1]
[ numero_2 COLORE_2]
[ numero_3 COLORE_3]
...
}
modificatori_di_pigmento...
}

Dove numero_1, numero_2, ... sono valori decimali compresi tra 0.0 e 1.0 questi inclusi e COLORE_1, COLORE_2, ... sono colori. Notare che le parentesi quadre "[ ]" sono parte integrante della frase, non sono notazioni che segnalano una parte facoltativa. Le parentesi definiscono ciascun valore nella mappa di colore. Ci possono essere da 2 a 256 diversi colori nella mappa. Si può anche usare la dizione alternativa colour_map.
Per esempio :

sphere {
<0,1,2>, 2
pigment {
gradient x //questo è un tipo di pigmento
color_map {
[0.1 color Red]
[0.3 color Yellow]
[0.6 color Blue]
[0.6 color Green]
[0.8 color Cyan]
}
}
}

qui viene calcolata la funzione del motivo e il risultato sarà un valore da 0.0 a 1.0. Se il valore è minore del primo numero, in questo caso 0.1, allora sarà usato il primo colore che è il rosso. I valori da 0.1 a 0.3 usano colori che passeranno dal rosso al giallo usando un'interpolazione lineare tra i due colori. Ugualmente i valori tra 0.3 e 0.6 useranno colori che vanno dal giallo al blu. Da notare che il terzo e il quarto numero hanno entrambi valore 0.6. Questo determinerà un passaggio immediato dal blu al verde. Più esattamente, un valore anche solo leggermente minore di 0.6 sarà blu, da 0.6 il colore sarà verde. Andando avanti, i valori tra 0.6 e 0.8 passeranno dal verde al ciano e concludendo ogni valore maggiore di 0.8 sarà ciano.

Se non vuoi che il colore cambi in una determinata area, basterà mettere lo stesso colore in due zone adiacenti. Per esempio :

color_map {
[0.1 color Red]
[0.3 color Yellow]
[0.6 color Yellow]
[0.8 color Green]
}


in questo caso ogni valore tra 0.3 e 0.6 sarà giallo.

La parola chiave
color_map potrà essere usata con ogni motivo eccetto brick, checker, hexagon e image_map. E' possibile dichiarare e usare identificatori della color_map. Per esempio:

#declare Colori_dell'Arcobaleno=
color_map {
[0.0 color Magenta]
[0.33 color Yellow]
[0.67 color Cyan]
[1.0 color Magenta]
}

object{Coso
pigment{
gradient x
color_map{Colori_dell'Arcobaleno}
}
}