Dans ce tutoriel, nous allons examiner les caractéristiques, les paramètres, les points communs et les différences entre Depth et Mist : deux passes de rendu de Compositing dans Blender qui nous fournissent des informations sur la distance des objets ou la profondeur de la scène en post-production.
Transcription de la vidéo
Bonjour à tous ! Dans ce tutoriel, nous allons examiner les caractéristiques, les paramètres, les points communs et les différences entre Depth et Mist : deux passes de rendu de Compositing dans Blender qui nous fournissent des informations sur la distance des objets ou la profondeur de la scène en post-production.
Les deux peuvent être utilisées pour obtenir des images qui apparaissent noires aux points les plus proches de la caméra et blanches aux points les plus éloignés, ce qui nous permet de créer des effets soit en mélangeant directement ces images avec le rendu, soit en les utilisant comme masques pour créer d’autres effets, comme je l’ai montré, par exemple, dans ma série de tutoriels vidéo sur l’Atmospheric Perspective.
Cependant, il existe certaines différences, non seulement dans la manière dont la plage de valeurs est calculée dans la scène virtuelle, mais aussi dans d’autres caractéristiques des images obtenues, ce qui peut les rendre plus ou moins adaptées à certains usages. Pour essayer de mieux expliquer ces différences, tout au long du tutoriel, j’utiliserai quelques scènes 3D et je vous montrerai les différences dans les résultats en modifiant certains paramètres à chaque fois.
En résumé, la différence entre Depth et Mist est que Depth renvoie les véritables valeurs de distance des objets par rapport à la caméra virtuelle, tandis que Mist introduit du brouillard à partir d’une certaine distance de la caméra et l’augmente sur une certaine profondeur, au-delà de laquelle tout devient blanc.
Ainsi, Depth est plus adapté aux applications où il est nécessaire d’utiliser les vraies valeurs de distance, comme avec les nodes Defocus et Z-Combine.
Defocus permet de faire la mise au point sur des éléments situés à une certaine distance de la caméra, en floutant les autres, implémentant ainsi la profondeur de champ.

Z-Combine, quant à lui, permet de mélanger deux scènes en déterminant quels pixels afficher ou non en fonction des valeurs de distance par rapport à la caméra, stockées dans les champs Z ou Depth de chaque scène ou image.

Cependant, cela ne signifie pas que Depth ne peut pas être utilisé dans d’autres cas : je l’ai moi-même utilisé dans la série sur l’Atmospheric Perspective, mais dans ce cas, j’ai dû normaliser les informations renvoyées par Depth ; nous verrons bientôt ce que signifie normaliser Depth et quelles conséquences cela peut avoir sur les données.
La passe de rendu Depth est sélectionnée par défaut dans la section Passes de l’onglet View Layers dans l’éditeur Properties ; dans cet onglet, cette passe de rendu s’appelle Z, tandis que dans le node Render Layers du Compositing, elle s’appelle Depth.

La valeur minimale de distance renvoyée par Depth est donnée par la valeur Clip Start de l’objet Camera, car tous les objets placés plus près de la caméra que Clip Start ne sont pas rendus ; ainsi, si la sortie de Depth n’est pas normalisée, c’est la valeur minimale que Depth peut renvoyer.

La valeur maximale de distance renvoyée par Depth est donnée par la valeur Clip End de l’objet Camera, car tous les objets placés au-delà de cette valeur ne sont pas rendus. L’arrière-plan de l’univers virtuel est considéré comme étant à une distance infinie ; il aura donc la valeur maximale dans le masque Depth.
Vous pouvez afficher les points Clip Start et Clip End dans la scène 3D en sélectionnant la caméra virtuelle et en activant l’option Limits dans la section Viewport Display de l’onglet Data dans l’éditeur Properties.
De cette manière, il sera plus facile de régler correctement la valeur Clip End.

Mist, en revanche, renvoie une image qui devient progressivement plus blanche à mesure que la distance par rapport à la caméra augmente. Cependant, dans ce cas, le point de départ de l’effet de brouillard n’est pas donné par Clip Start, mais par une valeur que nous pouvons spécifier librement, appelée Mist Start.
Contrairement à Depth, qui est actif par défaut, la passe de rendu Mist doit être activée explicitement dans la section Passes. Cette opération doit être effectuée avant de lancer le rendu ; sinon, les informations ne seront pas calculées et vous devrez recommencer le rendu pour pouvoir les utiliser.
Après avoir activé la passe de rendu Mist, une nouvelle section appelée Mist apparaîtra dans l’onglet World, où nous pourrons définir Mist Start et d’autres paramètres.

Il existe une autre différence entre Mist et Depth : Mist n’utilise pas Clip End pour déterminer la distance au-delà de laquelle tous les objets deviennent blancs. À la place, il utilise un paramètre appelé Mist Depth. Ainsi, tous les objets placés à une distance égale à Start + Depth seront rendus en blanc.
Vous pouvez également afficher Mist Start et Mist Depth dans la Vue 3D simplement en activant la case Mist dans la section Viewport Display de l’onglet Data. Si vous avez également activé l’option Limits, il est conseillé de la désactiver car leurs représentations se chevauchent.

Avant de lancer un nouveau rendu, je règle les valeurs Mist Start et Depth de manière à ce que l’effet coïncide avec les valeurs Clip Start et Clip End.
Dans la section Mist de l’onglet World, il existe un autre paramètre : Falloff, qui indique comment implémenter le brouillard selon la distance. Le mode par défaut est Quadratic, mais il existe également des options comme Inverse Quadratic et Linear.
Quadratic implémente la même transition que l’éclairage, offrant une transition plus douce de 0 à 1. Linear implémente une transition légèrement plus nette que Quadratic. Enfin, Inverse Quadratic passe très rapidement de 0 à 1, affichant un brouillard dense même pour les éléments au premier plan.

Z-Depth ne possède pas ce paramètre, car ce n’est pas un effet implémenté selon une formule ; il renvoie simplement les véritables valeurs de distance des objets… on pourrait dire qu’il est toujours linéaire, mais cette précision n’a pas vraiment de sens ici.
Comme je l’ai mentionné précédemment, Z-Depth est donc plus adapté pour obtenir des informations sur les vraies distances, tandis que Mist est plus adapté pour créer l’effet dont il porte le nom, car il nous permet d’en définir librement les caractéristiques.
En lançant maintenant le rendu et en examinant les passes dans une fenêtre Compositor, nous obtiendrions un résultat intéressant avec la sortie Mist, tandis que le masque provenant de Depth serait, du moins en apparence, inutilisable.

Voyons maintenant ce que signifie « normaliser Depth » et pourquoi le node Normalize est souvent utilisé dans divers tutoriels.
Comme mentionné précédemment, les valeurs renvoyées par Z-Depth ne sont pas comprises entre 0 et 1, mais indiquent réellement les distances par rapport à la caméra virtuelle. Cela peut être utile si, par exemple, vous souhaitez introduire un effet exactement à une certaine distance de la caméra.

Les nombres stockés peuvent être très grands ; c’est pourquoi le champ Z-Depth stocke les données en utilisant plus de mémoire que les 8 ou 16 bits de la plupart des formats d’image comme JPG ou PNG ; je suis presque certain qu’il utilise en réalité 32 bits.
De plus, dans le Backdrop, toutes les valeurs supérieures à 1 sont tronquées, ou « clampées », à cette valeur, et les pixels correspondants sont affichés en blanc. Cependant, les valeurs Z-Depth sont définies par Clip End, qui est généralement bien supérieur à 1.
Pour ces raisons, les valeurs renvoyées ne sont pas affichées correctement dans le Backdrop de l’éditeur de Compositing, car dans cet onglet, toutes les valeurs supérieures à 1 sont affichées en blanc. Ainsi, dans la plupart des cas, les images obtenues paraissent très lumineuses et dépourvues de détails…
… en effet, dans la scène que j’ai utilisée, la valeur Clip Start est 1 et Clip End est 20000 ; la passe Depth apparaît donc complètement blanche !
Pour cette raison, le node Normalize du groupe Utilities est souvent utilisé pour mapper les valeurs dans une plage de 0 à 1. Cependant, sur ce point, nous devons nous arrêter un instant car il y a une précision importante à apporter.

Le node Normalize ne mappe pas les valeurs comprises entre Clip Start et Clip End dans une plage de 0 à 1. À la place, il prend en compte les valeurs minimales et maximales des pixels présents dans l’image qu’il traite.
Cependant, ce n’est pas l’image que nous voyons dans le Backdrop, car, comme mentionné précédemment, le canal Depth stocke beaucoup plus de données que ce qui est visible.
C’est pourquoi, si nous connectons un node Normalize entre la sortie Depth et le Viewer, les éléments situés au bas du rendu apparaissent noirs : ce sont les points les plus proches de la caméra virtuelle, qui possèdent donc les valeurs les plus sombres dans le masque Depth et qui seront rendus en noir dans la version normalisée, même s’ils ne sont clairement pas à la distance Clip Start de la caméra !

Des considérations similaires peuvent être faites pour les objets plus éloignés et pour les pixels qui apparaîtront blancs dans la version normalisée du masque Depth.
Comme preuve supplémentaire que Normalize agit sur les valeurs minimales et maximales qu’il trouve dans l’image fournie, regardez ce qui se passe si je normalise également les informations provenant de Mist : les pixels du bas, qui sont les plus sombres, sont remappés à 0 et donc affichés en noir, tandis que les pixels des éléments les plus éloignés étaient déjà blancs et restent donc inchangés.
Je vais vous montrer un autre exemple pour mieux comprendre ce concept. Dans la scène que je vous montre maintenant, la caméra et certains objets sont positionnés à l’intérieur d’une pièce.
La valeur Clipping End de la caméra est réglée de manière à rendre la face avant de la boîte la plus éloignée placée dans la pièce, mais pas le mur du fond de la pièce.

En réalité, même la boîte la plus éloignée n’est pas entièrement visible, mais cela est dû à l’effet de perspective du cadrage.

Aucun objet n’est placé près de Clip Start, qui est réglé à 10 centimètres de la caméra : même les murs de la pièce situés sur les bords du cadre sont à une distance supérieure à cette valeur.
Si je lance maintenant le rendu et examine la passe Depth non normalisée, le mur du fond apparaît complètement blanc parce que, en réalité, la passe Depth ne voit pas au-delà de la boîte la plus éloignée et rend tout le reste en blanc.
Cependant, il n’y a aucune zone noire parce que, comme mentionné précédemment, aucun objet n’est placé à Clip Start.

Mais si nous utilisons un node Normalize, une bande noire apparaît en bas, comme nous l’avions également observé dans le rendu de la scène utilisée précédemment : cette partie du sol est manifestement la plus proche de la caméra.

Nous pouvons vérifier ce qui vient d’être expliqué en déplaçant l’un des murs latéraux vers l’intérieur afin qu’il soit plus proche de la caméra, puis en lançant à nouveau le rendu.

Il est important de comprendre comment le masque Depth est modifié par Normalize.
Ce node ne devrait pas être utilisé avec Mist, et son utilisation avec Depth doit également être décidée avec discernement : il est utile pour créer des masques destinés à des effets spéciaux, comme l’Atmospheric Perspective mentionnée précédemment, tandis que dans d’autres cas, il ne devrait pas être utilisé.
Vous vous demandez peut-être s’il existe un moyen de mapper les valeurs Clip Start et Clip End dans une plage de 0 à 1 afin de voir le masque Depth dans le Backdrop…
… eh bien, oui : ajoutez un node Map Range du groupe Utilities dans le Compositor, puis faites correspondre les valeurs From Min et From Max du node aux valeurs Clip Start et Clip End de la caméra.
Vous obtiendrez un masque similaire à la passe Mist, mais bien sûr vous perdrez les véritables valeurs de profondeur.

Il reste une dernière différence importante à souligner avant de terminer ce tutoriel : le nombre d’échantillons utilisés pour calculer les valeurs de distance des objets dans la scène.
Mist, en effet, implémente également l’Anti-Aliasing, ce qui n’est pas calculé par Z-Depth.
La valeur Z-Depth, en particulier, n’utilise qu’un seul échantillon ; elle peut donc être utilisée sans problème lorsque des effets comme Motion Blur ou Depth of Field ne sont pas employés, c’est-à-dire dans les cas où il n’est pas nécessaire de mélanger les valeurs de profondeur. Lorsqu’il est nécessaire de mélanger les valeurs de profondeur, il est plus approprié d’utiliser Mist.

Enfin, une remarque concernant les paramètres de Color Management du rendu et la manière dont les masques Z-Depth et Mist sont affichés dans le Backdrop.
Selon le mode choisi pour le paramètre View Transform, les résultats affichés à l’écran pour Mist et Depth, qu’ils soient normalisés ou non, peuvent varier considérablement.

Cependant, ces transformations ne devraient affecter que la manière dont les données sont affichées dans le Backdrop ; elles ne devraient pas modifier leurs valeurs intrinsèques.

Voilà, c’est tout pour ce tutoriel ! J’espère qu’il vous a été utile ! À bientôt !