3.4.3 La finition

Les propriétés de finition d'une surface peuvent grandement affecter l'apparence. Comment se reflète la lumière ? Que se passe-t-il dans les ombres ? Quelles sortes d'éclats lumineux sont visibles ? Pour répondre à ces questions, vous avez besoin d'une déclaration de finition.

La syntaxe pour finish est :

FINISH:
	finish { [FINISH_IDENTIFIER] [FINISH_ITEMS...] }
FINISH_ITEMS:
	ambient COLOR | diffuse Amount | brilliance Amount |
	phong Amount | phong_size Amount | specular Amount |
	roughness Amount | metallic [Amount] | reflection COLOR |
	crand Amount | conserve_energy BOOL_ON_OF |
	reflection { Color_Reflectin_Min [REFLECTION_ITEMS...] }|
	irid { Irid_Amount [IRID_ITEMS...] }
REFLECTION_ITEMS:
	COLOR_REFLECTION_MAX | fresnel BOOL_ON_OFF |
	falloff FLOAT_FALLOFF | exponent FLOAT_EXPONENT |
	metallic FLOAT_METALLIC
IRID_ITEMS:
	thickness Amount | turbulence Amount

Le FINISH_IDENTIFIER est optionnel, mais doit devancer tous les autres termes. Tout élément après FINISH_IDENTIFIER modifie ou écrase les paramètres déjà donnés dans le FINISH_IDENTIFIER. Si aucun identificateur n'est spécifié, alors les éléments modifient les valeurs de finition de la texture par défaut.

Note : les transformations ne sont pas autorisées dans une finition car ses termes couvrent la totalité de la surface uniformément. Chacun des FINISH_ITEMS listé est décrit dans une section plus loin.

Dans les versions précédentes, les mots clés refraction, ior et caustics faisaient partie de la finition, mais maintenant, ils appartiennent à la déclaration interior. Ils sont toujours supportés dans la finition pour des raisons de compatibilité, mais le résultat ne sera pas identique à 100% à la version précédente. Voir "Pourquoi Interior et Media sont-ils nécessaires ?" pour les détails.

Une déclaration finish est une partie de la texture. Toutefois, il peut être lourd d'utiliser une texture pour seulement ajouter un éclat lumineux ou d'autres propriétés lumineuses à un objet. Par conséquent, vous pouvez attacher directement une finition à un objet, sans spécifier la texture. Par exemple, au lieu de ceci :

object {My_Object texture {finish {phong 0.5}}}

Vous pouvez raccourcir en cela :

object {My_Object finish {phong 0.5}}

Cela crée une texture complète avec le pigment et la normale par défaut, comme si vous aviez écrit totalement texture {...}.

Les identificateurs de finition peuvent être déclarés pour rendre les scènes plus lisibles et paramétrables. Un identificateur est déclaré comme ceci :

FINISH_DECLARATION:
	#declare IDENTIFIER = FINISH |
	#local IDENTIFIER = FINISH

IDENTIFIER est le nom de l'identificateur sur 40 caractères et FINISH est toute déclaration valide de finition. Voir "#declare vs. #local" pour des informations sur la portée.

3.4.3.1 'ambient'

La lumière que vous voyez dans les zones sombres provient de la réflexion diffuse des autres objets. Cette lumière ne peut pas être directement modelée avec un raytraceur. Toutefois, nous pouvons utiliser un truc appelé luminosité ambiante, pour la simuler.

La lumière ambiante est éparpillée dans la pièce. Elle rebondit partout et illumine un peu tous les objets, même s'ils ne sont pas directement en vue d'une source de lumière. Calculer la lumière ambiante réelle prendrait trop de temps, aussi, nous la simulons en ajoutant une petite quantité de lumière blanche à toutes les textures, qu'elles soient éclairées ou pas.

Cela signifie que les portions d'une forme, qui sont totalement dans l'ombre, seront quand même légèrement colorées. C'est comme si leur texture luisait, bien que la lumière ambiante d'une texture n'affecte que l'objet sur lequel elle s'applique.

Le mot clé ambient contrôle la quantité de lumière ambiante. Normalement, une valeur numérique unique est spécifiée, bien que la syntaxe appelle une couleur. Par exemple, une valeur de 0.3 est traduite en vecteur couleur <0.3, 0.3, 0.3, 0.3, 0.3>, qui est acceptable puisque seuls les éléments du rouge, du vert et du bleu sont utilisés.

Le défaut est une très petite lumière ambiante (0.1). Cette valeur peut être entre 0.0 et 1.0. Elle affecte à la fois les zones ombrées ou non, donc, si vous augmentez la valeur ambiante, vous voudrez baisser les valeurs de diffusion et de réflexion.

Note : cette méthode ne compte pas pour la couleur des objets autours. Si vous marchez dans une pièce qui a les murs, le sol et le plafond rouges, vos vêtements blancs paraîtront roses à cause de la lumière réfléchie. Le calcul de l'ambiance de POV-Ray, ne gère pas cela. Il n'y a également pas moyen de modéliser l'illumination indirecte réfléchie spéculaire comme une lumière de flash dans un miroir.

Vous pouvez colorer la lumière ambiante en utilisant une des deux méthodes. Vous pouvez spécifier une couleur, plutôt qu'un nombre après le mot clé ambient, dans chaque déclaration de finition. Par exemple :

finish {ambient rgb <0.3, 0.1, 0.1>}	// une ambiance rose

Vous pouvez aussi spécifier la totalité des sources de lumière ambiante utilisées pendant le calcul de l'illumination ambiante d'un objet, en utilisant le paramètre global ambient_light. La formule est donnée par Ambient = Finish_Ambient * Global_Ambient_Light_Source. Voir la section "La lumière ambiante" pour les détails.

3.4.3.2 Les éléments de la réflexion diffuse

Quand la lumière se reflète depuis une surface, les lois de la physique disent qu'elle quitte la surface avec le même angle que celui de l'arrivée. Cela est similaire au rebond d'une boule de billard sur une bande d'une table. Cette parfaite réflexion est appelée réflexion spéculaire. Toutefois, seules les surfaces parfaitement polies obéissent à cette loi. La plupart du temps, la lumière se réfléchit et est éparpillée dans toutes les directions, par la rugosité de la surface. Cet éparpillement est appelé réflexion diffuse, car la lumière diffuse ou se répand dans de nombreuses directions. Cela compte dans la majorité des réflexions que nous voyons.

3.4.3.2.1 'diffuse'

Le mot clé diffuse est utilisé dans la déclaration de finition pour contrôler la quantité de lumière réfléchie par la réflexion diffuse. Par exemple :

finish {diffuse 0.7}

signifie que 70% de la lumière vue provient de l'illumination directe des sources de lumière. La valeur par défaut est diffuse 0.6.

3.4.3.2.2 Brillance

La quantité de lumière directe qui diffuse depuis un objet, dépend de l'angle sous lequel elle heurte la surface. Quand la lumière touche avec un angle fermé, elle illumine moins. Quand c'est directement contre la surface, elle illumine plus. Le mot clé brilliance peut être utilisé dans la déclaration de la finition pour varier la façon dont la lumière décroît, selon l'angle de l'incidence. Cela contrôle la force de l'illumination de base sur les objets, et ajuste légèrement l'éclat apparent de la surface. Les objets peuvent paraître plus métalliques par augmentation de leur brillance. La valeur par défaut est 1.0. Des valeurs élevées, jusqu'à 10.0, provoquent une décroissance moindre de la lumière aux angles moyens et petits. Il n'y a pas de limite à cette valeur. Expérimentez pour voir ce qui convient à chaque situation. Cela est mieux utilisé en concert avec la surbrillance.

3.4.3.2.3 La granulation

Les surfaces très rugueuses, comme le béton ou le sable, montrent une granulation sombre dans leur couleur apparente. Cela est causé par l'ombre des puits ou des trous de la surface. Le mot clé crand peut être ajouté à la finition pour provoquer un assombrissement mineur aléatoire dans la réflexion diffuse de l'illumination directe. Les valeurs typiques vont de 0.01 à 0.5 ou plus. Le défaut est 0. Par exemple :

finish {crand 0.05}

Cela vient des versions précédentes, et est considéré comme obsolète. Cela parce que le bruit introduit par cette caractéristique, est appliqué pixel par pixel. Cela signifie que l'apparence est la même pour les objets proches ou lointains. L'effet est aussi différent, selon la résolution utilisée pour le rendu.

Note : cela ne doit pas être utilisé avec l'animation. C'est une des rares caractéristiques réellement aléatoire de POV-Ray, et cela produira un désagréable scintillement des pixels sur toutes les textures animées avec une valeur de granulation. Pour ces raisons, ce n'est pas un moyen très précis pour modéliser la rugosité.

3.4.3.3 Les surbrillances

Les surbrillances sont les points brillants qui apparaissent lorsqu'une source de lumière se reflète sur un objet lisse. C'est un mélange de réflexion spéculaire et de réflexion diffuse. Elles sont spéculaires car elles dépendent de l'angle de vue et de l'angle d'illumination. Toutefois, elles sont diffuses car un éparpillement intervient. Pour pouvoir modéliser exactement une surbrillance, vous devez calculer la réflexion spéculaire de centaines de microscopiques bosses appelées micro facettes. Plus il y a de micro facettes vous faisant face, plus l'objet paraît brillant, et plus étroites sont les surbrillances. POV-Ray utilise deux différents modèles pour simuler les surbrillances, sans calculer les micro facettes. Ce sont les modèles spéculaire et Phong.

Note : ces accentuations ne sont pas exclusives. Elles peuvent être toutes deux spécifiées, et prendre effet. Normalement, toutefois, vous n'en spécifierez qu'une.

3.4.3.3.1 Les surbrillances Phong

Le mot clé phong contrôle la quantité de surbrillance Phong sur un objet. Il provoque des points brillants sur l'objet, de la couleur de la lumière reflétée.

La méthode Phong mesure la moyenne de facettes faisant miroir pour la source de lumière.

La valeur de Phong est typiquement entre 0.0 et 1.0, où 1.0 cause une complète saturation de la couleur de la lumière dans l'aire la plus brillante (le centre) de la surbrillance. La valeur par défaut 0.0 ne donne aucune surbrillance.

La taille du point de surbrillance est définie par la valeur de phong_size. Plus cette valeur est grande, plus la surbrillance est petite, et plus l'apparence est brillante.

Les valeurs typiques vont entre 1.0 (très terne) et 250 (très polie), bien que toutes les valeurs soient possibles. La taille par défaut est 40 si phong_size n'est pas spécifié (plastique). Par exemple :

finish {phong 0.9 phong_size 60}

Si phong n'est pas spécifié, phong_size n'a pas d'effet.

3.4.3.3.2 La surbrillance spéculaire

L'accentuation spéculaire est très semblable à la Phong, mais elle utilise un modèle légèrement différent. Il ressemble plus à la réflexion spéculaire réelle et donne une extension plus crédible des accentuations s'exerçant près de l'horizon des objets.

La valeur de specular est typiquement entre 0.0 et 1.0, où 1.0 donne une saturation complète de la couleur de la source lumineuse à l'aire la plus brillante (le centre) de la surbrillance. Le défaut 0.0 ne donne pas de surbrillance.

La taille du point est définie par la valeur du mot clé roughness. Les valeurs typiques vont de 1.0 (très rugueux - large accentuation) à 0.0005 (très lisse - petite accentuation). La valeur par défaut est 0.05 si la rugosité n'est pas spécifiée (plastique).

Il est possible de spécifier de mauvaises valeurs de rugosité, ce qui générera une erreur au rendu. N'utilisez pas 0, et si vous avez des erreurs, vérifiez si vous utilisez une très, très petite valeur qui peut causer l'erreur. Par exemple :

finish {specular 0.9 roughness 0.02}

Si specular n'est pas définie, la rugosité n'a pas d'effet.

Note : lorsque la lumière se reflète parfaitement sur une surface lisse comme un miroir, c'est appelé réflexion spéculaire, toutefois, cette réflexion n'est pas contrôlée par le mot clé specular. Le mot clé reflection contrôle les réflexions spéculaires semblables au miroir.

3.4.3.3.3 Le modificateur de surbrillance métallique

Le mot clé metallic peut être utilisé avec les surbrillances Phong ou spéculaire. Ce mot clé indique que la couleur de la surbrillance sera calculée par une fonction empirique qui modélise la réflexivité des surfaces métalliques.

Normalement, les surbrillances sont de la couleur de la source de lumière. L'ajout de ce mot clé filtre la surbrillance pour que la lumière blanche, qui est reflétée depuis une surface métallique, prenne la couleur spécifiée par le pigment.

Le mot clé metallic peut être suivi d'une valeur numérique pour spécifier l'influence de cet effet. Si le mot clé n'est pas spécifié, la valeur par défaut est zéro. Si le mot clé est sans valeur, la valeur par défaut est 1. Par exemple :

finish {
	phong 0.9
	phong_size 60
	metallic
}

3.4.3.4 La réflexion spéculaire

Quand la lumière ne diffuse pas, et qu'elle se reflète avec le même angle que celui d'entrée, elle est appelée réflexion spéculaire. Une telle réflexion, comme un miroir, est contrôlée par le bloc reflection {...} dans une déclaration de finition.

Syntaxe :

  
finish {
	reflection {
		[COLOR_REFLECTION_MIN,] COLOR_REFLECTION_MAX
		[fresnel BOOL_ON_OFF]
		[falloff FLOAT_FALLOFF]
		[exponent FLOAT_EXPONENT]
		[metallic FLOAT_METALLIC]
	}
}
[interior { ior IOR }]

L'utilisation la plus simple est un miroir parfait :

finish {reflection {1.0} ambient 0 diffuse 0}

Cela donne une finition de miroir à l'objet. Il reflétera tous les autres éléments de la scène. Habituellement, une valeur numérique unique est spécifiée après le mot clé, bien que la syntaxe appelle une couleur. Par exemple, une valeur numérique de 0.3 devient le vecteur couleur <0.3, 0.3, 0.3, 0.3, 0.3> qui est acceptable, car seuls les éléments du rouge, du vert et du bleu sont utilisés.

La valeur est entre 0.0 et 1.0. Le défaut est pas de reflection.

Note :

falloff place un exposant de déclin dans la variable de réflexion. Il indique à quelle vitesse la réflexion faiblira, c.a.d. linéaire, au carré, au cube, etc.

Le mot clé metallic est similaire dans son fonctionnement au mot clé "metallic" utilisé pour les surbrillances dans les finitions : il simule les propriétés de réflexion des surfaces métalliques, où la lumière réfléchie prend la couleur de la surface. Quand metallic est utilisé, la couleur de la réflexion est multipliée par la couleur du pigment à chaque point. Vous pouvez spécifier un valeur numérique optionnelle, qui sera le taux d'influence du mot clé metallic sur la couleur réfléchie. metallic utilise l'équation de Fresnel de manière à ce que la couleur de la lumière soit réfléchie sur les angles importants, et la couleur de la surface aux angles proches de la normale de la surface.

exponent : POV-Ray utilise un modèle de lumière limité qui ne fait pas de distinction entre des objets qui sont brillamment colorés, et des objets qui sont extrêmement illuminés. Un bout de papier blanc, une ampoule, le soleil et une supernova seront tous modélisés comme rgb <1, 1, 1> et les objets moins blancs seront seulement plus sombres. Il est particulièrement difficile de modéliser des surfaces partiellement réflectives de manière réaliste. Les objets moyennement ou peu lumineux paraissent trop brillants quand ils sont reflétés. Si vous réduisez la valeur de la réflexion, cela tend à trop assombrir les objets brillants. Aussi, le mot clé optionnel exponent a été ajouté. Il produit des intensités de réflexion non linéaires. La valeur par défaut de 1.0 produit une courbe linéaire. Des valeurs inférieures assombrissent les intensités moyennes et basses, et conservent les réflexions de haute intensité. Ceci est quelque peu expérimental pour un usage artistique. Il ne correspond pas directement à des propriétés du monde réel.

La réflexion variable
De nombreuses matières, comme l'eau, l'émail, et le linoleum sont plus réflectives vues à de faibles angles. Cela peut être simulé en spécifiant un minimum de réflexion dans la déclaration reflection {...}.
Par exemple :

finish {reflection {0.03, 1}}

utilise la même fonction que la réflexion standard, mais le premier paramètre fixe une réflexion minimale. Cela peut être un vecteur de couleur ou un numérique (qui est automatiquement promu en vecteur de gris). La valeur minimale est la réflexion qu'aura la surface lors d'une vue parallèle à sa normale.
Le second paramètre fixe la réflexion maximale, qui peut être aussi un vecteur de couleur ou un numérique (qui est automatiquement promu en vecteur de gris). Ce maximum est la réflexion de la surface vue à un angle de 90° de sa normale.

Note : vous pouvez créer un maximum de réflexion plus petit que le minimum si vous voulez, toutefois le résultat est quelque chose qui n'existe pas dans la nature.

Lors de l'ajout du mot clé fresnel, la fonction de réflexion de Fresnel est utilisée au lieu de la réflexion standard. Il calcule la réflexion en utilisant l'ior de la finition. Donc avec une réflexion de type Fresnel, une déclaration interior {ior IOR} est requise, même avec des pigments opaques. Souvenez-vous que dans la réalité, beaucoup d'objets opaques ont un mince vernis sur leur surface, et c'est lui (qui -doit- avoir un IOR) qui est réflechissant.

3.4.3.5 Conservation de l'énergie pour la réflexion

L'une des caractéristiques dans POV-Ray est la réflexion variable, incluant la réflexion réaliste de Fresnel (voir la section "La réflexion variable"). Malheureusement, quand c'est couplé avec une constance de transmission, la texture peut apparaître irréaliste. Cela est causé par le viol de la règle de conservation de l'énergie. Puisque la quantité de lumière réfléchie change, celle transmise doit aussi changer.

Cela peut être fait en ajoutant le mot clé conserve_energy à la finition de l'objet.
Quand conserve_energy est activé, POV-Ray multipliera la quantité filtrée et transmise par ce que laisse la réflexion (par exemple, si on a une réflexion de 80%, il y aura une multiplication de 20%).

3.4.3.6 L'irisation

L'irisation, ou l'interférence de film fin de Newton, simule l'effet de la lumière sur des surfaces couvertes d'un microscopique film transparent. L'effet est identique à celui d'une nappe d'huile sur une flaque d'eau, ou à celui des nuances arc-en-ciel d'une bulle de savon . Cet effet est contrôlé par la déclaration irid dans la déclaration de finition.

Ce paramètre modifie la couleur de surface selon une fonction d'angle entre la source de lumière et la surface. Vu que l'effet fonctionne en conjonction avec la position et l'angle des sources de lumière avec la surface, il ne se comporte pas comme le modèle de pigment procédural.

La syntaxe est :

IRID:
	irid { Irid_Amount [IRID_ITEMS...] }
IRID_ITEMS:
	thickness Amount | turbulence Amount

Le paramètre requis Irid_Amount est la contribution de l'effet d'irisation à la couleur de surface. Il est de règle de rester autour de 0.25 (25% de contribution) ou moins, mais expérimentez. Si la surface blanchit trop, essayez de baisser diffuse, et, peut être, la valeur ambient de la surface.

Le mot clé thickness représente la finesse du film. C'est un paramètre gênant à placer, car il n'a aucune relation avec la taille de l'objet. Son changement affecte la taille et le fonctionnement de l'effet. Un film très fin aura un changement de couleur de haute fréquence, tandis qu'un film épais aura de grandes aires de couleur. La valeur par défaut est zéro.

L'épaisseur du film peut être variée avec le mot clé turbulence. Vous pouvez seulement spécifier la quantité de turbulence, avec l'irisation. Les valeurs octaves, lambda, et oméga sont placées en interne, et ne sont pas réglables par l'utilisateur. Ce paramètre ne fait varier que l'épaisseur. Par conséquent, ce doit être un numérique unique. Il ne peut pas être un vecteur comme dans les autres utilisations du mot clé turbulence.

En plus, la perturbation de la normale de surface de l'objet par l'utilisation de modèles de bosses, affectera l'irisation.

Pour les curieux, l'interférence du film arrive parce que, quand le rayon heurte la surface du film, une partie est reflétée, tandis que l'autre est transmise dans le film. Ce rayon traverse le film et se reflète éventuellement sur le substrat opaque. La lumière émerge du film avec une légère différence de phase avec la lumière reflétée par la surface.

Cette différence de phase crée l'interférence, qui varie avec la longueur d'onde de la composante couleur, donnant des longueurs d'onde renforcées, et d'autres détruites. Quand ces composants sont combinés, cela donne l'irisation. Voir aussi le paramètre global "Irid_Wavelength".

Le concept utilisé pour cette caractéristique provient du livre Fundamentals of Three Dimensional Computer Graphics par Alan Watt (Addison - Wesley).

3.4.2 La normale 3.4.2 La normale 3.4.4 Le halo 3.4.4 Le halo