vers l'index général de l'aide
Lorsque POV-Ray cherche à déterminer la couleur d'un pixel, il ne se soucie pas de la couleur des pixels voisins. Le long d'un dégradé, ce n'est pas un problème, mais lorsqu'on a affaire à des changements brutaux de couleur (contour d'un objet et fond, par exemple), un problème particulier apparaît : le crénelage, souvent appelé "marches d'escalier". L'effet est très déplaisant, surtout sur les obliques et les textures "en grille", où un désagréable effet de moirage* apparaît.
Le moirage, c'est quand deux trames superposées produisent une interférence, comme quand un gars avec un veston à rayures passe à la télé, ou comme quand on superpose deux moustiquaires.
Puisque c'est la variation brusque de couleur qui produit cet effet, il faut trouver un moyen de l'adoucir.
La solution consiste à détecter d'abord ces changements de couleur, puis, quand ils se produisent, à aller chercher la couleur des "sous-pixels" (subdivisions) du pixel incriminé, et puis simplement faire une moyenne de la couleur des sous-pixels, et de l'utiliser comme couleur du pixel définitif.
Voici la différence observée sur un rendu :
sans anticrénelage | avec anticrénelage |
commande | ini | défaut | description |
+A, -A | Antialias=b | - | enclenche l'anticrénelage (avec un seuil de 0.3) |
+An.n, -An.n | Antialias_Threshold=n.n | 0.3 | spécifie le seuil de déclenchement de l'anticrénelage |
+AMn | Sampling_Method=n | 1 | sélectionne la méthode à employer (1 ou 2) |
+Rn | Antialias_Depth=n | 2 | spécifie la finesse de la subdivision |
+J, -J | Jitter=b | + | enclenche l'errance d'échantillonnage |
+Jn.n, -Jn.n | Jitter_Amount=n.n | 1 | spécifie le taux d'errance d'échantillonnage |
Le "seuil de déclenchement" spécifie quelle différence minimale de couleur (rgb) suffit à enclencher le processus d'anticrénelage (afin d'éviter de faire du suréchantillonnage dans des zones où ce n'est pas nécessaire). La différence entre deux pixels (<r1,g1,b1> et <r2,g2,b2>) est évaluée comme suit : différence = abs(r1-r2) + abs(g1-g2) + abs(b1-b2).
Plus ce seuil est bas, plus le résultat sera beau, mais plus le rendu sera long aussi, puisqu'il faudra lancer plus de rayons.
+Rn, où n est un entier entre 1 et 9, spécifie le nombre de subdivisions à effectuer pour chaque pixel qui le demande. Comme il s'agit d'une grille de subdivision, le nombre d'échantillons supplémentaires sera n*n.
Enfin, l'errance ("jitter") permet d'appliquer une déviation aléatoire aux rayons primaires des subdivisions des pixels, afin d'atténuer les effets de moirages. Sur les contours nets, l'errance a tendance à "émousser" un peu les limites, alors, selon l'image, il peut être utile de désenclencher cette option.
Par l'option +AM2, on peut enclencher l'utilisation de la méthode d'anticrénelage dite "adaptive". Au lieu de subdiviser aveuglément les pixels, cette méthode pratique par subdivisions successives, et ne pratique une re-subdivision que lorsque c'est nécessaire.
La valeur donnée alors à +R prend un autre sens, et spécifie le nombre maximal (si toutes les subdivisions ont lieu) d'échantillons à prendre en compte.
valeur de +R | nombre maximal d'échantillons | formule (pur le fun) |
1 | 9 | 21+1 |
2 | 25 | 22+1 |
3 | 81 | 23+1 |
4 | 289 | 24+1 |
5 | 1089 | 25+1 |
6 | 4225 | 26+1 |
7 | 16641 | 27+1 |
8 | 66049 | 28+1 |
9 | 263169 | 29+1 |
Pour chaque pixel à réévaluer, POV-Ray commence par échantillonner les quatre coins du pixel, et compare les couleurs obtenue. Si leur différences dépassent le seuil spécifié, le pixel est subdivisé en 4, et recommence à échantillonner les coins de ces sous-pixels, et ainsi de suite, mais en évitant de re-subdiviser une zone où la différence entre les couleurs est plus faible que le seuil.
rédacteur : Fabien Mosen