Les médias qu'on a vus jusqu'ici étaient bien pratiques pour faire une boule de feu ou un sabre laser, mais certaines choses sont toujours impossibles à faire, en particulier la poussière : on veut quelque chose qui soit blanc à la lumière, et noir dans l'ombre... Alors qu'ici, on peut faire soit blanc, soit noir... (Bon, j'exagère un peu, mais vous comprenez... n'est-ce pas ?

)
L’idéal serait de faire des milliers de petites particules, pour simuler ce qui se passe effectivement ; mais là encore, outre le temps de calcul considérable que cela demanderait, le résultat ne serait pas parfait.
Heureusement pour nous, et comme toujours

, il existe une solution : un troisième type de média, en plus de l'émission et de l'absorption, spécialement conçu pour des particules fines en suspension dans l'air (au hasard, comme la poussière

).
Ce type de média est un poil plus compliqué que les deux autres, il a donc droit à un bloc entier rien qu'à lui

:
scattering.
Code : Autre
Dans ce bloc, on va mettre deux éléments :
- Le type de poussière (on va voir plus tard les différents types) : c'est un entier de 1 à 5
- Une couleur définissant l'intensité du média
Et c'est tout !
Pour cette partie, on va changer de scène de test :
Code : Autre1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
| global_settings {
ambient_light 0.05
}
// ----------------------------------------
camera {
location <1.4, 0.5, -4.8>
look_at <-0.1, -1, 0.0>
}
light_source {
<0, 0, 0>
rgb 1
translate 10*z
}
// ----------------------------------------
// The Wall
difference {
box {
<-5, -0.5, -0.2>,
< 5, 0.5, 0.2>
}
#declare i = 0;
#while (i < 9)
cylinder {
<0, 0, -1>
<0, 0, 1>
0.3
translate (-4 + i) * x
}
#declare i = i + 1;
#end
pigment { rgb 1 }
finish { ambient 0 }
}
// La poussière
box {
// Pour éviter les surfaces qui coïncident, on décale très légèrement.
<-5, -0.499, -4.999>,
< 5, 0.499, 0.499>
pigment { rgbt 1 }
hollow
interior {
media {
samples 50
scattering {
// Caractéristiques du média
}
}
}
} |
Nouveauté ici : samples, qui sert à améliorer la précision des calculs (tout en ralentissant le rendu). Cela correspond en réalité au nombre d'échantillons qu'il faut prendre le long d'un rayon : plus cette valeur est haute, plus c'est précis, et plus c'est lent.
Le calcul de ce genre de média demande un peu plus de calculs, et peut donc être assez long... Patience, donc !
Type 1 : Isotrope
C'est le type le plus simple : quand le média est directement éclairé, il renvoie une partie de la lumière vers la caméra ; le reste du temps, il absorbe un peu la lumière qui le traverse. Résultat : il paraît clair au soleil, et noir dans l'ombre.
Voici ce que ça donne :
Code : Autre1
2
3
| scattering {
1, rgb 0.009
} |
Magique !

On peut vraiment voir la lumière traverser les trous dans le mur.
Avantage : assez rapide à calculer (par rapport aux autres), des résultats acceptables pour de la poussière ambiante.
Type 2 : Brumeux
Ce type est en principe plus destiné à simuler des particules relativement fines...
Le résultat est surtout une différence d'intensité lumineuse en fonction de l'angle d'incidence :
La lumière est plus forte quand la source de lumière est presque devant nous, et moins forte quand elle éclaire la zone de travers ou quand on regarde de derrière.
Avantage : des résultats très sympathiques pour donner de l'ambiance, du genre manoir hanté...
Type 3 : Nuageux
Ce type est comme le précédent, mais en encore plus accentué : on voit encore moins de derrière et de côté, et encore plus quand on est juste en face :
Ce type de média est en principe adapté aux particules des nuages et du ciel pollué.
Comme le type 2, mais en plus intense...
Type 4 : Modèle de Rayleigh
Ce modèle est prévu pour simuler de très petites particules, comme les molécules d'air.
La particularité de ce modèle est que l'intensité est maximale quand la source de lumière est juste devant nous, mais aussi quand elle est juste derrière nous ; elle est donc minimale quand elle éclaire la zone transversalement.
A utiliser lorsqu'il n'y a pas de brouillard ni de pluie, comme dans un cinéma ou dans une maison.
Type 5 : Modèle d'Henyey-Greenstein
Ce modèle est assez polyvalent : il prend un paramètre supplémentaire qui modifie son comportement : ainsi, il peut aussi bien ressembler à un média isotrope qu'à un média de type
Murky.
Pour contrôler ce paramètre, il suffit de mettre
eccentricity après la couleur, suivi d'une valeur entre 0 et 1 :
Code : Autre1
2
3
4
| scattering {
// Caractéristiques du média
5, rgb 0.2 eccentricity 0.6
} |
Plus la valeur entrée est proche de 0, plus le média sera isotrope ; à l'inverse, une valeur de 1 sera directionnelle à l'extrême.
Il est possible de mettre des valeurs négatives (entre 0 et -1) : dans ce cas, le média sera visible lorsque la lumière est derrière la caméra et non devant.
Il est très polyvalent, c'est donc difficile de bien cerner quand l'utiliser. Sachez que puisqu'il est possible de modifier l'excentricité de manière continue, il peut être utile dans vos animations, si le brouillard doit changer.
Conclusion
Ces médias vous seront à coup sûr extrêmement utiles pour ajouter un petit effet de lumière très sympathique dans vos scènes : rayons de soleil à travers une fenêtre, éclipse de soleil, ... Les utilisations sont très nombreuses. Avec un spot, cela peut également servir à faire une sorte d'illumination divine. Enfin, c'est à vous de chercher !
Comme pour les médias d'émission ou d'absorption, il est possible de spécifier une densité.
Avec un peu de turbulence, on peut arriver à des effets de fumée plutôt pas mal :

Attention cependant, cela augmentera encore considérablement le temps de calcul (2 minutes pour cette petite image)...
Sachez aussi que l'effet est encore plus impressionnant dans une animation (ici avec un type 3) :
