6.2.6.4        Opzioni sull' Anti-Aliasing


Antialias=bool attiva disattiva l'anti-aliasing (on/off)
+A attiva l'anti aliasing con soglia 0.3 o precedenti
-A disattiva l'anti aliasing
Sampling_Method=n imposta il metodo di campionamento (1 or 2)
+AMn lo stesso di Sampling_Method=n
Antialias_Threshold=n.n imposta la soglia di anti-aliasing
+An.n imposta la soglia di anti-aliasing a n.n
-An.n disattiva l'anti-aliasing (soglia di anti-aliasing in futuro)
Jitter=bool attiva o disattiva il jitter (on/off)
+J attiva aa-jitter con 1.0 o quantità precedenti
-J disattiva aa-jitter
Jitter_Amount=n.n imposta la quantità di aa-jitter a n.n. Se n.n <= 0 aa-jitter è disattivato
+Jn.n imposta la quantità di aa-jitter a n.n. Se n.n <= 0 aa-jitter è disattivato
-Jn.n disattiva aa-jitter (stabilirà la quantità di jitter)
Antialias_Depth=n imposta la profondità di anti-aliasing (1 <= n <= 9)
+Rn lo stesso di Antialias_Depth=n


Il processo di raytracing è in realtà un processo di campionamento di un'immagine svolto generalmente ad un tasso di campionamento di un campione per pixel. Questo modo di procedere può creare una quantità di errori. Tra questi potrebbe verificarsi che le linee curve non siano smussate ma sembrino a scalini, punti di interferenza tra oggetti, perdita di dettagli o addirittura di oggetti che essendo molto piccoli vengono persi nell'intersezione di due pixel. L'effetto responsabile di questi problemi è l'aliasing.

L'anti-aliasing è una tecnica che permette di tentare di risolvere questi problemi o almeno di ridurli. Generalmente l'anti-aliasing permette all'immagine di apparire più smussata. L'opzione
Antialias=on o il parametro +A attivano l'anti-aliasing.

Quando l'anti-aliasing è attivato POV-Ray tenta di ridurre gli errori proiettando molti più raggi in un pixel e quindi facendo una media dei risultati per determinare il colore del pixel. Questa tecnica che è chiamata sovracampionamento (super-sampling) può migliorare di molto il risultato delle immagini, ma aumenta il tempo necessario per renderizzare una scena, dal momento che devono essere eseguiti molti più calcoli.

POV-Ray permette di utilizzare due diversi metodi di sovracampionamento. L'opzione
Sampling_Method=n o il parametro +Amn seleziona il sovracampionamento non adattivo (metodo 1) o il sovracampionamento adattivo (metodo 2). Selezionando uno di questi metodi non si attiva l'anti-aliasing. Lo si attiva invece usando il parametro +A o il comando Antialias=on.

Per default viene usato il metodo non adattivo (+AM1), POV-Ray traccia inizialmente un raggio per pixel. Se il colore del pixel è diverso da quelli vicini di più di un determinato valore di soglia allora il pixel è sovracampionato proiettando un numero definito di raggi addizionali. La soglia predefinita è 0.3 ma si può cambiare usando l'opzione
Antialias_Threshold=n.n. Quando si usano i parametri , il valore di soglia può seguire +A. Per esempio, +A0.1 attiva l'anti-aliasing e imposta il valore di soglia a 0.1.

Le comparazioni riguardanti la soglia sono calcolate come segue. Se r_1, g_1, b_1 e r_2, g_2, b_2 sono le componenti rgb di due pixel allora la differenza tra due pixel è calcolata così :

diff = abs(r1-r2) + abs(g1-g2) + abs(b1-b2).

Se la differenza è maggiore del valore di soglia prestabilito, allora entrambi i pixel sono sovracampionati. I valori rgb variano tra 0.0 e 1.0, così la più grande differenza possibile tra due pixel è 3.0. Se la soglia dell'anti-aliasing è 0.0 ogni pixel è sovracampionato. Se è 3.0 non ci sarà anti-aliasing. Soglie più basse significano più anti-aliasing e minore velocità di rendering. Usa l'anti-aliasing per la versione finale e non per le prove. Grandi contrasti nella figura possono essere risolti con grandi valori di tolleranza. I valori ottimali potrebbero essere intorno a 0.2 - 0.4.

Quando si usa il metodo non adattivo, il numero predefinito di sovracampionamenti è 9 per pixel, collocati in una griglia 3x3. L'opzione
Antialias_Depth=n o il parametro +Rn controllano il numero di righe e colonne di parti prese per il super-sampling. Per esempio +R4 darà 4x4=16 campioni per pixel.

Il secondo metodo inizia proiettando quattro raggi agli angoli di ogni pixel. Se il colore risultante differirà di molto dal valore di soglia allora saranno lanciati altri raggi. Questo sarà fatto ricorsivamente, il pixel resterà diviso in quattro sotto-pixel che saranno separatamente analizzati nei seguenti passaggi. Il vantaggio di questo metodo è che riduce il numero di raggi che devono essere tracciati. I campioni che stanno nei pixel e nei sotto-pixel sono immagazzinati e riutilizzati dove conveniente per evitare di dover ritracciare alcuni raggi. La ricorsività di questo metodo lo rende adattivo (si parla infatti di sovracampionamento adattivo, o adaptive supersampling) : si concentrerà infatti su quelle parti di pixel che hanno maggior bisogno di sovracampionamento (vedi figura sotto).

Fig. 196-Un esempio di Funzionamento del Sovracampionamento Adattivo

Il massimo numero di suddivisioni è specificato dall'opzione Antialias_Depth=n dal parametro +Rno. Questo è diverso per il metodo non adattivo, dove il numero totale del sovracampionamento è specificato. Il numero massimo di suddivisioni risulterà in un numero massimo di sovracampionamenti per pixel e sarà dato come specificato nella seguente tabella.

+Rn numero di campioni per pixel sovracampionato per il metodo non adattivo numero di campioni per pixel sovracampionato per il metodo adattivo
1 1 9
2 4 25
3 9 81
4 16 289
5 25 1089
6 36 4225
7 49 16641
8 64 66049
9 81 263169


E' facile notare come il numero massimo di campionamenti rispetto al metodo adattivo è raramente raggiungibile. Se questo metodo è usato senza anti-aliasing sarà determinato dalla media dei raggi lanciati ai suoi angoli. Nella maggioranza dei casi il livello tre sarà più che sufficiente.

Un altro modo per ridurre le malefatte dell'aliasing è quello di introdurre del "rumore" nel processo di campionamento. Questo metodo è chiamato jittering e funziona perché il nostro meccanismo di vista è molto meno attento al "rumore" che ai colori o ai motivi di colore regolari. La posizione del campionamento è soggetta ad una piccola turbolenza dove si sta facendo uso dell'anti-aliasing. Il jittering è usato di default, ma può essere disattivato con l'opzione
Jitter=off o con il parametro -J. La quantità di jittering può essere impostata con l'opzione Jitter_Amount=n.n. Quando si usano i parametri della linea di comando il valore di jittering può essere impostato immediatamente dopo il parametro +J. Per esempio +J0.5 usa la metà del valore normale di jittering. Il valore predefinito di jitter è anche il massimo valore di jittering possibile, che assicurerà che tutto il processo di sovracampionamento rimarrà all'interno del pixel su cui si sta lavorando. E' da notare che il jittering è casuale e non ripetibile, quindi dovrai evitare di usarlo nelle animazioni poiché il pixel che ha subito il processo di anti-aliasing potrebbe risultare diverso di fotogramma in fotogramma.

Se non viene usato l'anti-aliasing, per ogni pixel viene preso un solo campione indipendentemente dal metodo di sovracampionamento specificato qui sopra.