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.
![]() |
![]() |
![]() |