Generazione di un paesaggio roccioso:
Utilizzando la funzione isosurface abbiamo creato la superficie tridimensionale del terreno.
isosurface {
function {
(y + .07 - _(x+9,y,z)*.115)/20
}
accuracy 1e-5
pigment { rgb 1 }
}
Abbiamo poi creato l’effetto roccioso mediante la funzione turbolence.
#local _=
function {
pattern {
agate
turbulence 1
octaves 9
}
}
La parola chiave turbulence seguita da un numero decimale o da un vettore può essere usata per 'agitare' qualunque pigmento, normale, texture o iridescenza. Si possono usare diversi parametri facoltativi per controllare come viene calcolata la turbolenza.
Per esempio:
pigment {
wood color_map { mia_mappa }
turbulence VETTORE
octaves DECIMALE
omega DECIMALE
lambda DECIMALE
}
I valori tipici per questa parola chiave sono compresi tra 0.0 (valore predefinito), che non aggiunge turbolenza e 1.0 o più, che aggiunge molta turbolenza. Se è specificato un vettore, saranno applicati valori diversi di turbolenza nelle direzioni x, y e z.
Per esempio:
turbulence <1.0, 0.6, 0.1>
ha una maggiore turbolenza nella direzione x, una quantità moderata nella direzione y e una piccolissima turbolenza nella direzione z.
La turbolenza usa una funzione casuale che aggiunge rumore, chiamata Dnoise. Questa funzione è simile a quella che aggiunge rumore al pattern bozo ma invece di restituire un singolo valore, calcola una direzione. La si può immaginare come la direzione nella quale soffia il vento. Punti vicini avranno valori simili, ma punti lontani avranno valori diversi in modo casuale.
In generale, l'ordine dei parametri della turbolenza relativo all'ordine dei modificatori di pattern come trasformazioni, mappe di colori o altre mappe, non è importante. Per esempio, scalare prima o dopo avere aggiunto la turbolenza non fa differenza. La turbolenza sarà calcolata per prima e poi verrà calcolato il ridimensionamento senza tenere conto di quale è stato specificato per primo. La turbolenza usa la funzione DNoise per spostare un punto di alcuni passi detti ottave (octaves). Ci sono tre parametri aggiuntivi che controllano il calcolo della turbolenza. Sono octaves, lambda e omega. Sono tutti e tre facoltativi. Ciascuno di essi è seguito da un valore decimale e nessuno di essi ha effetto se non è insieme alla turbolenza.
Il valore di octaves controlla il numero di passi che vengono eseguiti nel calcolo della turbolenza. Si possono usare valori compresi tra 1 e 10. Il valore di default di 6 è già sufficientemente alto; non si noteranno grossi cambiamenti a valori superiori a sei dato che i passi successivi sono troppo piccoli. I valori decimali sono troncati a numeri interi. Valori piccoli di octaves danno una turbolenza più tenue ed ondulata e vengono calcolati velocemente, mentre valori più alti danno un effetto di turbolenza più marcato e richiedono un tempo di calcolo più lungo.
Al variare dei parametri della funzione generatrice della superficie abbiamo ottenuto i seguenti risultati:

(y + .07 - _(x+9,y,z)*.105)/20

(y + .07 - _(x+6,y,z)*.115)/30

(y + .07 - _(x+12,y,z)*.115)/20

(y + .07 - _(x+9,y,z)*.95)/20