3.2.3 Les effets atmosphériques

Les effets atmosphériques sont un groupe lâche de caractéristiques qui affectent l'arrière-plan et/ou l'atmosphère de la scène. POV-Ray inclut la possibilité de rendre un certain nombre d'effets atmosphériques, comme le brouillard, la brume, la buée, les arcs-en-ciel et les ciels.

3.2.3.1 Le média atmosphérique

Les effets atmosphériques comme le brouillard, la poussière, la brume ou les gaz visibles peuvent être simulés par une déclaration media spécifiée dans la scène, mais non attachée à un objet. Cela concernera toutes les aires en dehors des objets non creux. Une très simple approche pour ajouter du brouillard est expliquée dans la section "Le brouillard", toutefois, ce type de brouillard n'interagit pas avec les sources de lumière comme le fait media. Il ne montrera pas les faisceaux lumineux ou d'autres effets, et il n'est pas très réaliste.

L'effet média atmosphérique couvre certaines des limitations du brouillard en calculant les interactions entre le lumière et les particules de l'atmosphère, en utilisant un échantillonnage de volume. Ainsi, les faisceaux lumineux deviendront visibles et les objets auront une ombre sur la fumée ou le brouillard.

Note : POV-Ray ne peut pas échantillonner le média le long d'un rayon infini. Le rayon doit être fini pour être échantillonné. Cela signifie que l'échantillonnage du média n'est possible que pour les rayons qui touchent un objet. Donc aucun média atmosphérique n'apparaîtra sur background ou sky_sphere.
Une autre façon de rendre possible l'échantillonnage du média est l'utilisation de projecteurs car, dans ce cas, le rayon n'est pas infini (il est échantillonné seulement dans le cône du projecteur).

Avec les projecteurs, vous pourrez créer de meilleurs résultats car leur cône deviendra visible. Les points lumineux peuvent être utilisés pour créer des effets comme l'éclairage d'une rue dans le brouillard. Les lumières peuvent ne pas interagir avec l'atmosphère en ajoutant media_interaction off à la source de lumière. Ils peuvent être utilisés pour augmenter le niveau d'illumination global de la scène pour la rendre plus réaliste.

Des détails complets sur les médias sont donnés dans la section "Le média". Les versions précédentes utilisaient une déclaration atmosphere pour les effets atmosphériques, mais ce système était incompatible avec l'ancien halo. Aussi atmosphere a été éliminé et remplacé par une caractéristique média plus simple et plus puissante. L'utilisateur ne doit connaître maintenant qu'un système media pour l'utilisation d'effets atmosphériques ou d'objets.

Si vous ne voulez d'effets média que sur une aire particulière, vous devez utiliser un objet média au lieu de ne compter que sur la modèle média. En général, ce sera plus rapide et plus précis, car les calculs ne se feront que dans le conteneur.

Note : la caractéristique atmosphère ne fonctionnera pas si la caméra est dans un objet non creux (voir la section "Les objets pleins et vides" pour une explication détaillée).

3.2.3.2 L'arrière-plan

Une couleur d'arrière-plan peut être spécifiée. Tous les rayons qui ne touchent pas d'objet porteront cette couleur. Le défaut est noir. La syntaxe est :

BACKGROUND:
	background {COLOR}

3.2.3.3 Le brouillard

S'il n'est pas nécessaire de faire interagir les faisceaux lumineux avec le média atmosphérique, fog est un moyen rapide de simuler la brume ou le brouillard. Cette caractéristique ajoute artificiellement de la couleur à tout pixel, selon la distance traversée par le rayon. La syntaxe est :

FOG:
	fog { [FOG_IDENTIFIER] [FOG_ITEMS...] }
FOG_ITEMS:
	fog_type Fog_Type | distance Distance | COLOR |
	turbulence <Turbulence> | turb_depth Turb_Depth |
	omega Omega | lambda Lambda | octaves Octaves |
	fog_offset Fog_Offset | fog_alt Fog_Alt |
	up <Fog_Up> | TRANSFORMATION

Les valeurs par défaut :

lambda : 2.0
fog_type : 1
fog_offset : 0.0
fog_alt : 0.0
octaves : 6
omega : 0.5
turbulence : <0, 0, 0>
turb_depth : 0.5
up : <0, 1, 0>

Il y a deux types de brouillard, fog_type 1 est le constant et le défaut, et fog_type 2 est la nappe. Le constant a une densité constante en tout lieu, tandis que la nappe a une densité constante pour tout points au-dessous d'un certain niveau sur l'axe des hauteurs, et se dilue à partir de là.

La couleur d'un pixel avec une intersection à la profondeur d est calculée par :

PIXEL_COLOR = exp(-d/D) * OBJECT_COLOR + (1-exp(-d/D)) * FOG_COLOR

D est la valeur spécifiée du mot clé requis distance du brouillard. A la profondeur 0, la couleur finale est celle de l'objet. Si la profondeur de l'intersection est égale à la distance du brouillard, la couleur finale consistera à 64% de la couleur de l'objet et à 36% de la couleur du brouillard.

Note : pour cette équation, une distance de zéro est indéfinie. En pratique, POV-Ray traitera cette valeur comme une désactivation du brouillard. Pour utiliser un brouillard très dilué, utilisez un nombre très petit comme 1e-6 ou 1e-10.

Pour le brouillard en nappe, la hauteur en-deça de laquelle le brouillard a une densité constante est donnée par le mot clé fog_offset. Le mot clé fog_alt est spécifié pour donner la vitesse de dilution du brouillard. Les valeurs par défaut sont 0.0 pour les deux, aussi n'oubliez pas de les spécifier si vous utilisez une nappe de brouillard. A une altitude de Fog_Offset + Fog_Alt, le brouillard a une densité de 25%. La densité du brouillard à une hauteur égale ou plus petite que Fog_Offset est 1.0, et pour une hauteur y au dessus de Fog_Offset, elle est calculée par :

1/(1 + (y - Fog_Offset) / Fog_Alt) ^2

La densité totale le long du rayon est calculée par intégration depuis la hauteur du point de départ, jusqu'à la hauteur du point de fin.

Le vecteur optionnel up spécifie la direction haut, généralement identique au haut de la caméra. Tous les calculs faits pendant l'évaluation de la nappe de brouillard, le sont relativement à ce vecteur haut, c'est-à-dire que les hauteurs sont calculées le long de ce vecteur. Il peut aussi être modifié en utilisant l'une des transformations connues décrites dans "Les transformations". Bien que ce ne soit pas une bonne idée de dimensionner le vecteur haut (le résultat est hautement imprévisible), il est utile de pouvoir le tourner. Vous devez également noter que les déplacements ne l'affectent pas (et donc, n'affectent pas le brouillard).

La couleur du brouillard, requise, a trois objectifs. Premièrement, elle définit la couleur à utiliser pour le mélange du brouillard et de l'arrière-plan. Ensuite, elle est utilisée pour spécifier un seuil de translucidité. En utilisant une transmission plus grande que zéro, on s'assure qu'une quantité minimale de lumière sera perçue à travers le brouillard. Avec une transmission de 0.3, vous verrez au moins 30% de l'arrière-plan. Enfin, elle peut être utilisée pour faire un brouillard filtrant. Avec une valeur de filtre positive, la quantité de lumière de l'arrière-plan, donnée par la valeur du filtre, sera multipliée par la couleur du brouillard. Une valeur de filtre de 0.7 fera que la brouillard filtrera 70% de la lumière d'arrière-plan, et laissera 30% non filtrée.

Les brouillards peuvent être superposés. Ainsi, vous pouvez appliquer autant de couches de brouillard que vous voulez. Généralement, c'est plus efficace si chaque couche est une nappe, avec une couleur, une altitude, et avec des valeurs de turbulence différentes. Pour utiliser de multiples couches de brouillard, ajoutez-les seulement à votre scène.

Vous pouvez, éventuellement, brasser le brouillard en ajoutant de la turbulence. Le mot clé turbulence peut être suivi par un nombre ou un vecteur, pour spécifier la quantité de turbulence à utiliser. Les paramètres de turbulence omega, lambda et octaves peuvent aussi être spécifiés. Voir la section "Les modificateurs de modèle" pour les détails sur tous ces paramètres.

En plus, la turbulence du brouillard peut être dimensionnée le long de l'axe de vision, en utilisant la quantité turb_depth. Les valeurs typiques sont entre 0.0 et 1.0 ou plus. La valeur par défaut est 0.5, mais toute valeur numérique peut être utilisée.

Note : l'élément brouillard ne fonctionnera pas si la caméra est dans un objet non creux (voir la section "Les objets vides et pleins" pour une explication détaillée).

3.2.3.4 La voûte céleste

La voûte céleste est utilisée pour créer un arrière-plan de ciel réaliste, sans ajouter de sphère additionnelle. La syntaxe est :

SKY_SPHERE:
	sky_sphere { [SKY_SPHERE_IDENTIFIER] [SKY_SPHERE_ITEMS...] }
SKY_SPHERE_ITEM:
	PIGMENT | TRANSFORMATION

La voûte céleste peut contenir plusieurs couches de pigment, avec le dernier au sommet, c'est-à-dire qu'il est évalué en dernier, et le premier en bas, c'est-à-dire qu'il est évalué en premier. Si la couche supérieure contient des composant filtrants et/ou transmetteur, les couches basses apparaîtront à travers. Sinon, elles seront invisibles.

La voûte céleste est calculée par utilisation du vecteur de direction comme paramètre pour évaluer les modèles de pigment. Cela offre des résultats indépendants du point de vue, ce qui modélise assez bien un ciel réel, où la distance au ciel est beaucoup plus grande que celle entre les objets visibles.

Si vous voulez ajouter une belle couleur mélangée à votre arrière-plan, vous pouvez le faire facilement en utilisant l'exemple suivant :

sky_sphere {
	pigment {
		gradient y
		color_map {
			[0.5 color CornflowerBlue]
			[1.0 color MidnightBlue]
		}
		scale 2
		translate -1
	}
}

Cela donne un doux mélange de CornflowerBlue à l'horizon, et de MidnightBlue au zénith. Les opérations de dimension et de déplacement sont utilisées pour organiser les valeurs de vecteurs de direction, qui se trouvent dans la fourchette de <-1,-1,-1> à <1, 1, 1>, vers la fourchette de <0, 0, 0> à <1, 1, 1>. Ainsi, une répétition des couleurs est évitée pour les parties de ciel sous l'horizon

Pour pouvoir facilement animer une voûte céleste, vous pouvez la transformer avec les transformations connues décrites dans "Les transformations". Toutefois, ce n'est pas une bonne idée de tailler ou déplacer une voûte céleste (le résultat est hautement imprévisible), mais il est utile de pouvoir la faire tourner. Dans une animation, le mélange des couleurs peut être fait pour suivre la course du soleil, par exemple.

Note : seulement une voûte céleste peut être utilisée dans une scène. Cela peut aussi ne pas fonctionner correctement si votre caméra est de type orthographic ou cylindrical. La caméra orthographique utilise des rayons parallèles, et donc, vous ne verrez qu'une petite partie de votre ciel (vous n'obtiendrez qu'une seule couleur dans la plupart des cas). Les réflexions dans des surfaces courbes fonctionneront, par exemple vous verrez clairement le ciel dans une balle miroitante.

3.2.3.5 L'arc-en-ciel

Les arcs-en-ciel sont réalisés en utilisant des arcs circulaires similaires au brouillard. Leur syntaxe est :

RAINBOW:
	rainbow { [RAINBOW_IDENTIFIER] [RAINBOW_ITEMS...] }
RAINBOW_ITEM:
	direction <Dir> | angle Angle | width Width |
	distance Distance | COLOR_MAP | jitter Jitter | up <Up> |
	arc_angle Arc_Angle | falloff_angle Falloff_Angle

Les valeurs par défaut :

arc_angle : 180.0
falloff_angle : 180.0
jitter : 0.0
up : y

Le vecteur de direction, requis, détermine la direction de la lumière (virtuelle) responsable de l'arc-en-ciel. Idéalement, c'est une source de lumière infiniment éloignée, comme le soleil, qui émet des rayons de lumière parallèles. La position et la taille de l'arc-en-ciel sont spécifiées par les mots clés requis angle et width. Pour comprendre comment ils fonctionnent, vous devez d'abord savoir comment l'arc-en-ciel est calculé.

Pour chaque rayon, l'angle, entre le vecteur de direction de l'arc-en-ciel et le vecteur de direction du rayon, est calculé. Si l'angle réside dans l'intervalle de Angle - Width / 2 à Angle + Width / 2, l'arc-en-ciel est touché par le rayon. La couleur est alors déterminée en utilisant l'angle comme un index dans le spectre de couleurs de l'arc-en-ciel. Ensuite elle est mélangée avec la couleur de l'arrière-plan, de la même façon que pour les brouillards.

Ainsi, les paramètres angle et width déterminent les angles sous lesquels l'arc-en-ciel est vu. Le mot clé optionnel jitter peut être utilisé pour ajouter un bruit aléatoire à l'index. Cela ajoute quelques irrégularités à l'arc-en-ciel, le rendant plus réaliste.

Le mot clé distance, requis, est le même que celui du brouillard. Puisque l'arc-en-ciel est un effet ressemblant au brouillard, il est possible que l'arc-en-ciel soit perceptible sur les objets. Si cet effet n'est pas voulu, il peut être évité en utilisant une grande valeur de distance. Par défaut, une valeur suffisamment grande est utilisée pour être sûr que cet effet n'apparaîtra pas.

La déclaration color_map est utilisée pour assigner un spectre de couleurs à l'arc-en-ciel. Pour être capable de créer des arcs-en-ciel réalistes, il est important de savoir que l'index dans la palette augmente avec l'angle entre les vecteurs de direction du rayon et de l'arc-en-ciel. L'index est zéro pour l'anneau le plus interne, et un pour le plus externe. Les valeurs de filtre et de transmission des couleurs, dans le spectre, ont les mêmes significations que dans le brouillard (voir la section "Le brouillard").

L'arc-en-ciel par défaut est un arc de 360 degrés, ressemblant à un cercle. Cela ne pose pas de problème si vous avez un sol qui cache la partie basse de l'arc-en-ciel. Si ce n'est pas le cas, ou si vous ne voulez pas d'un arc complet, vous pouvez utiliser les mots clés optionnels up, arc_angle et falloff_angle, pour spécifier un arc plus petit.

Le mot clé arc_angle détermine la taille de l'arc en degrés (de 0 à 360 degrés). Une valeur inférieure à 360 donnera un arc qui s'efface abruptement. Puisque cela n'est pas beau, vous pouvez utiliser le mot clé falloff_angle pour spécifier la région dans laquelle l'arc se mélangera lentement dans l'arrière-plan, le faisant doucement s'évanouir. L'angle de déclin doit être inférieur ou égal à l'angle d'arc.

Le mot clé up détermine la position de l'angle zéro. En changeant ce vecteur, vous pouvez faire tourner l'arc. Vous devez noter que l'arc va de -Arc_Angle/2 à +Arc_Angle/2. Les régions de déclin vont de -Arc_Angle/2 à -Falloff_Angle/2 et de +Falloff_Angle/2 à +Arc_Angle/2.

L'exemple suivant génère un arc-en-ciel de 120 degrés, avec un déclin de 30 degrés à chaque bout :

rainbow {
	direction <0, 0, 1>
	angle 42.5
	width 5
	distance 1000
	jitter 0.01
	color_map {Rainbow_Color_Map}
	up <0, 1, 0>
	arc_angle 120
	falloff_angle 30
}

Il est possible d'utiliser plusieurs arcs-en-ciel, et de les combiner avec les autres effets atmosphériques.

Complément sur le brouillard

Complément sur le média Complément sur les transformations Complément sur les modificateurs de modèle
3.2.2 La caméra 3.2.2 La caméra 3.2.4 Les paramètres globaux 3.2.4 Les paramètres globaux