Volumes

Le rendu de volumes peut être utilisé pour faire le rendu d’effets comme le feu, la fumée, la brume, l’absorption dans le verre, et beaucoup d’autres effets qui ne peuvent pas être représentés par des maillages de surfaces seuls.

Pour configurer un volume, vous créez un maillage qui définit les limites dans lesquelles le volume existe. Dans le matériau vous supprimez typiquement les nodes Surface et à la place vous connectez des nodes Volume pour définir l’ombrage dans le volume. Pour des effets tels que l’absorption dans le verre, vous pouvez utiliser à la fois un shader de surface et un de volume. Le monde (world) peut également utiliser un shader volume pour créer des effets tels que la brume.

Shading

Principled Volume

Principled Volume is a physically-based volume shader that can be used to create a wide range of volume materials. It supports scattering, absorption and emission in one easy to use node. Fire can be rendered with blackbody emission.

../../../_images/render_materials_components_volume_principled.jpg

Fumée et feu rendus avec le shader Principled Volume.

Composants de volume

Pour plus de contrôle, les composants d’ombrage de volume peuvent être manuellement combinés dans une configuration de shaders personnalisée.

  • Volume Absorption will absorb part of the light as it passes through the volume. This can be used to shade for example black smoke or colored glass objects, or mixed with the volume scatter node. This node is similar to the transparent BSDF node, it blocks part of the light and lets other light pass straight through.
  • Volume Scatter lets light scatter in other directions as it hits particles in the volume. The anisotropy defines in which direction the light is more likely to scatter. A value of 0 will let light scatter evenly in all directions (similar to the diffuse BSDF node), negative values let light scatter mostly backwards, and positive values let light scatter mostly forward. This can be used to shade white smoke or clouds for example.
  • Emission will emit light from the volume, for example for fire.
../../../_images/render_materials_components_volume_node.jpg

Volume Absorption, Scatter and Emission

Attributes

Dans le rendu de la fumée et du feu, Les attributs de volume sont utilisés pour définir la forme et l’ombrage du volume. Le shader Principled Volume va les utiliser par défaut, alors que les shaders de volume personnalisés peuvent utiliser le node Attribute pour obtenir des attributs tels que la densité, la couleur et la température.

Density

Tous les shaders de volume ont une entrée density. La densité définit la quantité de lumière qui va interagir avec le volume, absorbé ou dispersée, et la quantité qui va passer directement à travers. Pour des effets tels que la fumée, vous spécifieriez un champ density pour indiquer où dans le volume il y a de la fumée et sa quantité (density supèrieur à 0), et où il n’y a pas de fumée (density égal à 0).

Les volumes dans le monde réel consistent en particules, une densité plus grande signifie qu’il y a plus de particules par unité de volume. Plus de particules signifie qu’il y a une chance plus grande que la lumière entre en collision avec une particule et soit absorbée ou dispersée, plutôt que de passer directement à travers.

Mesh Volumes

Les maillages utilisés pour le rendu de volume devraient être fermés et manifold. Ceci signifie qu’il ne devrait y avoir aucun trou dans le maillage. Chaque arête doit être connectée à deux faces exactement de sorte qu’il n’y ait aucun trou ou des faces en forme de T où trois faces ou plus sont connectées à une arête.

Les normales doivent pointer vers l’extérieur pour des résultats corrects. Les normales sont utilisées pour déterminer si un rayon entre ou sort d’un volume, et si elles pointent dans une mauvaise direction, ou qu’il y a un trou dans la maillage, alors le moteur de rendu est incapable de déterminer ce qui est l’intérieur ou l’extérieur du volume.

Ces règles sont les mêmes que celles pour faire un rendu correct de la réfraction du verre.

World Volume

Un shader de volume peut également être appliqué au monde (world), en remplissant tout l’espace.

Currently, this is most useful for night time or other dark scenes, as the world surface shader or sun lights will have no effect if a volume shader is used. This is because the world background is assumed to be infinitely far away, which is accurate enough for the sun for example. However, for modeling effects such as fog or atmospheric scattering, it is not a good assumption that the volume fills the entire space, as most of the distance between the sun and the earth is empty space. For such effects it is be better to create a volume object surrounding the scene. The size of this object will determine how much light is scattered or absorbed.

Multiple Scattering

Real-world effects such as scattering in clouds or subsurface scattering require many scattering bounces. However, unbiased rendering of such effects can be noisy, so by default the number of bounces is zero in Cycles, and no support is available in Eevee. The effect you get when rendering with zero volume bounces is what is known as « single scattering », the effect from more bounces is « multiple scattering ».

Pour faire le rendu de matériaux tels que la peau ou le lait qui exigent le multiple scattering, le subsurface scattering est plus efficace et plus facile à contrôler. En particulier la méthode random walk peut faire un rendu précis de ces matériaux.

Pour des matériaux tels que les nuages ou la fumée qui n’ont pas de surface bien définie, le rendu de volume est requis. Ceux-ci ont meilleur aspect avec un grand nombre de rebonds, mais en pratique il se peut qu’on doive limiter le nombre de rebonds pour garder les temps de rendu acceptables.