Blender 3D : Node Editor, la base

I/ La conception nodale

Elle s’est généralisée sur un constat : pour être efficace, l’Homme a toujours eu besoin d’organiser sa pensée, de la structurer voir de la partager et le meilleur moyen qu’il a trouvé c’est de la représenter visuellement sous forme de cartes, diagrammes, graphiques.
Le concept de Mind Map que l’on peut traduire ‘Carte Mentale’ en Français est née dans les années 70 mais ce n’est qu’avec la programmation orientée objet que ce concept devient puissant et quasi-révolutionnaire!
Imaginez-vous qu’au lieu d’écrire un programme complexe vous n’ayez plus qu’à relier graphiquement des fonctionnalités simples… C’est ce que vous propose Blender : une interface dédiée (<node editor>) où chaque nœud (node) représente une fonctionnalité qui va se connecter à d’autres pour modifier le rendu d’une surface ou d’un volume et même permettre désormais de modifier la géométrie! Ce concept permet à des non-informaticiens de créer, tester, modifier et visualiser en temps réel des calculs complexes (déplacements de surfaces suivant les normales, modifications de la réflexion de la lumière, etc).

II/ Node editor

A/ l’interface et les raccourcis

Suivant vos préférences, placez vous dans le menu <Shading>. En général il y a 2 dispositions qui dépendent de votre écran : le couper en 2 horizontalement (par défaut) ou verticalement. Pour mieux visualiser votre carte nodale n’hésitez pas à passer en mode plein écran (les autres parties comme le outliner ou la fenêtre des propriétés sont souvent inutiles).

Pour être plus efficace il faut absolument activer l’addon ‘node wrangler’ dans les préférences. Il permet d’utiliser de nombreux raccourcis qui vont vous simplifier la vie:
[Ctrl]+[T] : rajouter les nœuds de transformation sur une texture
[Ctrl]+[Maj]+[T] : ajouter les composantes d’une texture PBR en 1 fois via l’explorateur
[Ctrl]+[Maj]+Clic sur noeud : permet de visualiser le résultat du nœud sur la surface du modèle
[Ctrl]+BoutonDroitSouris : permet de couper un lien entre 2 nœuds
[Maj]+BoutonDroitSouris : permet de nouer 2 liens : très utile si on veut modifier 2 propriétés en même temps.

B/ Présentation de votre carte

1 : Labelliser

Vous allez rapidement avoir à gérer beaucoup de nœuds. Pour s’y retrouver il est grandement conseiller de les réunir par fonctionnalité dans un même espace et de la nommer correctement :
Sélectionnez les noeuds faisant partie d’une même fonction puis [Ctrl]+[J ] , définissez un un label et une couleur dans les propriétés à droites.

Si vous voulez enlever des noeuds du groupe : [Alt]+[P]

2: Soignez vos liens

Utilisez [Maj]+BoutonDroitSouris pour nouer vos liens

III/ les types de nodes

Nodes Input

Sont regroupés ici tous les paramètres d’entrée d’un élément. Si vous choisissez un noeud -object info- vous aurez accès alors à son index de matériau, sa position, etc. Vous pouvez donc faire varier sa couleur suivant sa position en Z, etc

Nodes shaders

Sous ces termes Anglais qu’on peut tenter de traduire par ‘noeuds shaders’ ou noeuds d’ombrages (shade = ombre) se cachent en réalité toutes les fonctionnalités permettant de modifier le rendu selon la lumière. Pour éviter des traductions hasardeuses je garde le terme node shader comme décrit dans la documentation de Blender, d’ailleurs, la voici :

https://docs.blender.org/manual/fr/dev/render/shader_nodes/index.html

J’ai déjà parlé du noeud principal ‘Principled Shader‘ qui permet de générer une BSDF (Bidirectional scattering distribution) mais il faut savoir qu’il y a plusieurs types de nodes shaders (Glossy shader, Glass shader, etc). Ces noeuds servent d’interface et mixent des propriétés d’un matériau en entrée pour modifier le rendu soit sur sur les faces, le volume mais c’est aussi le cas pour le rendu de l’environnement global (background) qui est défini dans les propriétés World. Bref tout est shaders!

NodesTexture

Ces nœuds génèrent des textures suivant des modèles mathématiques.

Nodes color

Les nœuds color vont permettre de modifier tout ce qui concerne les couleurs : contraste, luminosité, courbes, ..

Nodes Vector

Il s’agit de fonctions vectorielles intéressantes qui permettent de modifier les vecteurs (scale, rotation, etc) mais aussi la possibilité de créer des vecteurs de bump, déplacement, normal, etc donc très utiles pour le texturing.

Nodes converter

Très utilisés ils permettent de tout convertir! Pour les couleurs ils permettent de séparer ou ou fusionner des canaux RGB, de récupérer les coordonnées X, Y ,Z d’un objet suivant sa position (location) et aussi de manipuler de nombreuses fonctions mathématiques et logiques (Math converter) !

Geometry Nodes : NEW in 2.92!!

C’est nouveau et très très puissant. Depuis la version 2.92 on peut utiliser des noeuds qui vont donner accès et permettre de modifier la géométrie ce qui ouvre d’énormes possibilités dans la façon de concevoir la modélisation!
La version 2.93LTS rajoute surtout des noeuds géométriques (les primitives, etc)

Voici un résumé rapide :

Cette année (2021) voit les premiers addons bénéficiant de l’apport des noeuds gérant la géometrie. Le premier addon intéressant est G-Scatter (simple, gratuit pour l’instant et utile) :

III/ Les nœuds principaux pour le texturing

On retrouve les noeuds principaux. Il s’agit de noeuds qui proposent directement des paramètres pour obtenir un rendu avec les propriétés des matériaux les concernant. Le noeud Principled Shader est le plus couramment utilisé car il rassemble les caractéristiques les plus communes (rugosité, émission, etc). Par contre si vous voulez rendre un matériau liquide, transparent ou plastique, vous vous orienterez plus pour un shader de type Glass ou Glossy.

A/ Principled Shader

B/ Glossy

C/ Glass

Si vous voulez rendre de l’eau rapidement, utilisez simplement ce noeud.

IV/ Des exemples pour le texturing

A/ Modifier la couleur

1) Définir une couleur aléatoire

On prend la propriété random d’un objet (Object Info:Random) qui génère un nombre aléatoire de 0 à 1 qu’on passe donc en facteur aléatoire du noeud ColorRamp. Celui-ci étant un noeud de type converter il va modifier la valeur de 0 à 1 en couleurs en utilisant une ‘rampe de couleur’ qu’on aura définie. Ci-dessous si l’objet envoie 0 la couleur de l’objet sera bleue et s’il envoie 1 elle sera orange :

Différence de rendu entre quelques noeuds de shaders

Vous pouvez également constater que le rendu diffère d’une image à l’autre car j’ai utilisé 3 nodes shaders différents (Principled BSDF, Glossy et Glass).

2) Modifier la couleur d’une texture

B/ Filtrer ou Orienter une texture

Parfois on aimerait bien effectuer un dégradé d’une texture. Pour cela on peut utiliser le noeud -Gradient Texture-. Le problème c’est qu’on est en 3 dimensions.. Comment l’orienter dans l’espace?

1 : just Mapping

2 : Separate XYZ

Sur certaines transformations les coordonnées de mapping ne suffise pas : on veut pouvoir appliquer l’effet que sur un axe en particulier : j’utilise alors le vecteur qui sert à mapper la texture ( [Ctrl]+[T] sur le shader avec node Wrangler) et je sépare les coordonnées pour ne garder que celle qui m’intéresse avec ‘Separate XYZ‘. Dans l’exemple ci-dessous je fais donc un dégradé suivant Z et la ‘ColorRamp’ me permet de contrôler le début et la fin de ce dernier :

Dégradé linéaire : si on réduit la plage de la colorramp, on réduit la taille du volume
Exemple de dégradé

3: Faire un gradient parfait Z max =1

Pour effectuer un dégradé parfait on doit associer le point le plus bas à la valeur 0 (noir) et le point le plus haut de l’objet à la valeur 1 c’est à dire le blanc. Cela va nous servir à générer une ‘displacement map’ parfaite.
Pour faire cela l’astuce est d’utiliser les nœuds mathématiques ‘Multiply‘ et ‘Greather Than‘. On visualise sur la surface tout ce qui dépasse 1 et va jouer avec la valeur de notre multiplication jusqu’à ce que tout devienne noir :

Faire un gradient parfait de 0 à 1 avec la valeur maximum de l’objet suivant Z = 1

Vous pouvez utiliser également directement le noeud Geometry :

Dégradé parfait suivant Z

4: Créer des bandes

Vous voulez créer une bande texturée suivant un axe? Le nœud MathCompare va vous permettre de comparer une valeur et d’y appliquer un intervalle Epsilon. La bande sera positionnée à la valeur voulue (moyenne des valeurs) et toutes les valeurs comprises dans l’intervalle seront prises en compte :

Créer des bandes texturées procédurales avec Math – Compare
Créer des effets de bandes bien positionnées avec Math – Compare
La même idée que précédemment en rendant la bande transparente! (il faut penser à modifier les propriétés du matériau pour passer le Blend Mode à Alpha Clip)

5: Modifier que les contours

Il est possible de faire des effets très sympathiques en utilisant le paramètre ‘Pointiness‘ du noeud Geometry. Qu’est-ce? La documentation nous dit :

Valable seulement avec le moteur de rendu Cycle, le paramètre Pointiness est une approximation de la courbure du maillage par sommet. Les valeurs plus claires indiquent des angles convexes, les valeurs plus sombres indiquent des angles concaves. Il vous permet de créer des effets tels que des cartes de saleté et des effets d'usure.

Concrètement ce paramètre va nous permettre de créer une carte en noir et blanc des arêtes d’un objet en isolant avec une colorRamp les différences d’angle concave/convexe :

:Mise en lumière des arêtes d’un cylindre

La difficulté est de bien cerner avec la ColorRamp cette différence d’angle.

Si vous voulez cet effet sur eeVee il faudra simplement créer une UVmap et fabriquer cette carte depuis cycle (utiliser un shader emission et bake cette propriété ).

6 : superposer des matériaux

UVMap painting et superposition de matériaux

7: Créer des textures complexes et un nœud personnalisé

C/ Divers noeuds par l’exemple

V/ Des exemples d’effets graphiques

A/ Apparition

1: Apparition d’objet par face

B/ Effet de contour

1: Feu / Fusion

VI/ Modifier la géométrie