Blender : ajouter des reflets à une partie seulement d'un objet
Dans ce tutoriel, nous allons voir comment ajouter une réflexion uniquement à une partie d'un objet/maillage dans Blender, en utilisant les "View layer" dans le Compositor. Par exemple (comme on nous l'avait demandé sur les réseaux sociaux) si on veut créer un bâtiment avec une structure métallique, avec un HDRI qui valorise les structures métalliques et le verre qui reflète un panneau représentant un ciel, on ne veut pas le panneau avec le ciel reflété également par les structures métalliques.
Pour le tutoriel, créons un exemple simplifié, en utilisant un cube: démarrez Blender, sélectionnez le cube par défaut en cliquant dessus, appuyez sur la touche "TAB" pour entrer en "Edit Mode". Nous sélectionnons tout, en appuyant sur la touche "A", et cliquons sur le cube avec le bouton droit de la souris, en choisissant l'option "Subdivide"
puis dans la fenêtre en bas à gauche ils choisissent un nombre de coupes égal à 4
Nous désélectionnons tout en appuyant sur les touches "Alt+A" et en mode de sélection "Face"
nous sélectionnons les 4 "fenêtres" du "palais", en les extrudant vers l'intérieur après avoir appuyé sur la touche "E"
Dans l'onglet "Material Properties" nous créons un simple matériau "metal" pour le cube, composé uniquement du shader "Principled BSDF" avec "Roughness:0" et "Metallic:1"
En appuyant sur le bouton "+" à droite
ajoutons un nouveau matériau "glass" pour les vitres
relativement simple, juste un shader "Glass" et un shader "Glossy" mélangés selon le mode "facing" du noeud "Layer Weight", donc si nous sommes en face nous voyons la fenêtre comme du verre, tandis que si nous regardons obliquement nous voyons plus et plus de réflexion à mesure que l'angle de vision augmente par rapport à la normale.
En "Edit Mode", nous sélectionnons les fenêtres et appuyons sur le bouton "Assign" pour attribuer le matériau du verre aux fenêtres
(Vous pouvez obtenir une bonne simulation du matériau en verre lorsque la fenêtre a une épaisseur, mais dans cet exemple simplifié, le but principal n'est pas de créer une scène réaliste)
Dans le sous-panneau "Settings" du matériau "glass", nous attribuons à "Pass Index:1" pour identifier ultérieurement les éléments auxquels ce matériau a été attribué
On déplace la caméra de manière à bien cadrer le cube
Dans l'onglet "World Properties" nous utilisons l'image HDR "uffizi_probe.hdr" pour l'éclairage d'ambiance (utile pour "vivifier" les reflets du métal) téléchargée depuis le site https://www.pauldebevec.com/Probes/
Nous ne nous intéressons qu'à ce qui se passe sur le cube, donc pour ne pas être distraits par le reste de la scène nous choisissons un fond transparent: dans l'onglet "Render Properties" nous cochons l'option "Transparent" dans le sous-panneau "Film"
Si nous appuyons sur la touche "F12" pour effectuer le rendu, nous obtenons
Ajoutons maintenant un reflet de ciel sur les fenêtres: téléchargeons une photo d'un ciel bleu depuis https://pixabay.com/photos/sun-sky-blue-sunlight-sunbeam-3588618/ ,
on importe l'image avec l'add-on "Images as Planes" (déjà présent dans Blender et actif par défaut et présent dans "File > Import") dans un plan (que l'on appelle "sky plane"), que l'on fait pivoter, zoomer et nous plaçons devant les fenêtres pour qu'elles se reflètent.
Cependant, le plan masque partiellement le cube si nous essayons de le regarder avec la camera
donc pour éviter de le cacher même pendant le rendu, on sélectionne le plan et dans l'onglet "Object Properties" on décoche "Camera" dans le sous-panneau "Visibility > Ray Visibility"
Nous appuyons sur "F12" pour lancer le rendu et nous obtenons le cube avec le reflet du plan contenant la texture du ciel
Maintenant, nous voulons séparer ces deux effets (cube avec des réflexions uniquement du hdr du "world" et cube qui reflète le plan contenant l'image du ciel), en les rendant disponibles en deux "view layer", couches que l'on peut ensuite ajouter et sur lequel on peut effectuer d'autres opérations dans le "Compositor".
Dans la "Scene Collection", nous créons deux collections "Collection metal" et "Collection sky". "Collection metal" représente la scène avec uniquement le cube, sans que le plan soit réfléchi, tandis que "Collection sky" représente la scène du cube ("cube") qui reflète le ciel, il contient donc une copie du cube et du plan ("sky plane"). La lampe et la camera sont extérieures à ces deux collections, puisqu'elles sont communes aux deux situations (même le cube serait commun, mais pour simplifier nous avons créé des "groupements logiques").
Créons maintenant les deux "View layer":
nous renommons le "View Layer" actuel en "view metal" et activons (affichons) uniquement la collection "Collection metal"
alors créons un nouveau "View layer" en cliquant sur le petit bouton à droite,
en choisissant l'option "Copy settings",
l'appelant "view sky", où nous cachons "Collection metal" et affichons "Collection sky"
Activez pour ce "View layer", dans "View Layer Properties", les "Passes" "Passes > Data > Indexes > Material Index", qui est utilisé pour sélectionner les parties d'un mesh avec un certain matériau, et "Passes > Light > Glossy > Indirect" pour afficher les réflexions indirectes, c'est-à-dire les objets en miroir, en l'occurrence le plan. (Ils sont appelés réflexions indirectes car les rayons du système Ray Tracing frappent d'abord l'objet, puis la surface qui les réfléchit et finissent ensuite dans la camera)
On accède à l'espace de travail "Compositing", en cliquant sur le label en haut,
et activez l'option "Uses Nodes"
Créons deux nœuds "Render Layers" ("Add > Input > Render Layers") qui correspondront aux deux calques
en fait sur l'un on choisira dans le menu déroulant en bas le "View Layer" "view sky"
et les ports "IndexMA" (correspondant au "pass" "Material Index" ) et "GrossInd" (correspondant au "pass" "Glossy > Indirect" ) apparaîtront automatiquement
Dans l'autre nœud "Render Layers", nous définissons à la place le "View layer" "view metal"
et le nœud n'a que les ports par défaut.
Pour avoir un aperçu des résultats intermédiaires des opérations dans le "Compositor", vérifiez que l'option "Backdrop" est activée en haut à droite
et ajoutez le nœud "Viewer" ("Add > Output > Viewer") pour voir l'aperçu.
En effet, si on connecte le nœud "Render Layers" correspondant au calque "view sky" et qu'on lance le rendu en appuyant sur la touche de fonction "F12", à la fin des deux rendus (correspondant aux deux calques) apparaît
Générons maintenant un masque qui isole les fenêtres: on se souvient qu'on a donné au matériau "glass" "Pass Index:1", on ajoute donc le noeud "ID Mask" ("Add > Converter > ID Mask"), qui sélectionne un mask, en utilisant l'index d'entrée "IndexMA" avec le paramètre "Index:1", qui correspond au "Pass Index" avec la valeur 1 du matériau de la fenêtre (cochez l'option "Anti-Aliasing" pour lisser les lignes obliques). Nous connectons la sortie "Alpha" au nœud "Viewer" et affichons le masque qui identifie les fenêtres
Maintenant on peut suivre deux chemins : soit on ne prend que le reflet du ciel et on l'applique sur les vitres, sans tenir compte de l'effet HDRI sur les vitres, soit sur les vitres on mélange l'effet de la réflexion du ciel avec celui de l'HDRI
Seul reflet du ciel sur les vitres:
À l'aide du masque que nous venons d'obtenir, nous extrayons l'image des fenêtres en ajoutant un nœud "Mix" ("Add > Color > Mix"), avec l'option "Mix" sélectionnée
Le noeud "Mix" ne garde que les parties de l'"Image" qui sont marquées par les parties blanches du masque de saisie en "Fac", pour l'autre port on laisse une couleur noire (neutre par rapport aux noeuds "Mix") .
En utilisant un autre nœud "Mix", nous collons maintenant cette image sur celle générée uniquement par la couche "view metal", obtenant ainsi ce que nous recherchions
(Le résultat de ce node "Mix" sera l'image de la "view metal" avec seulement les parties indiquées par le masque provenant du node "ID Mask" remplacées)
Réflexion du ciel sur les fenêtres mélangée à la réflexion HDRI:
Dans ce cas, nous n'utilisons pas l'image finale du calque "view sky", qui comprend également des contributions d'autres sources, mais uniquement les réflexions indirectes, qui sont générées par les objets qui se reflètent sur le verre (dans ce cas, le plan avec la texture du ciel), nous utiliserons donc la sortie du port "GlossInd", au lieu du plus complet "Image". Pour mélanger avec le reste du bâtiment, nous pouvons toujours utiliser le nœud "Mix" ("Add > Color > Mix") pour mélanger les deux couches, mais il est préférable de choisir une option "Screen" qui, même en utilisant un nœud pour ajuster luminosité et couleurs ("Add > Color > Hue Saturation Value" et "Add > Color > Bright/Contrast"), simule mieux les reflets d'une fenêtre.
Après avoir connecté ces nœuds et redémarré le rendu, nous obtenons
Exporter vers un fichier:
Si au lieu d'utiliser le "Compositor" dans Blender nous voulons tout composer dans un logiciel graphique 2D, nous pouvons utiliser un nœud "File Output" ("Add > Output > File Output") pour exporter les images et les réflexions
C'est tout pour ce tutoriel sur la façon d'ajouter une réflexion supplémentaire à une partie d'un objet dans Blender. Happy blending!