Faire un dégradé de couleurs dans Blender
Quelques exemples très simples pour faire le point sur ce que j'ai appris : un dégradé linéaire et un dégradé sphérique.
Un dégradé linéaire
Pour un dégradé très simple comme ceci :
Méthode 1
Avec un nœud Gradient Texture (logique) et un nœud Color Ramp. Pour la couleur j'ai mis un shader Emission mais peu importe.
Le nœud Gradient Texture prend par défaut les coordonnées de texture générées automatiquement par Blender, si on ne branche rien en entrée sur son connecteur Vector. Avec ces coordonnées par défaut, on voit que le dégradé linéaire est orienté selon l'axe des X. Si je peux tourner l'objet, c'est simple R Z 90. Sinon, voir la méthode suivante.
Méthode 2
Sans utiliser le nœud Gradient Texture. Ça ne parait pas logique mais ça marche aussi.
- Sur l'entrée Color du shader, brancher un nœud Texture Coordinate depuis son paramètre Generated. Blender met des couleurs par défaut :
Note au passage : le paramètre Generated donne des coordonnées qui partent du point (-1,-1,-1) et vont jusqu'au point (1,1,1) pour la boite englobant l'objet donc ici le plan est une "tranche" de ce cube
Je pivote la vue pour montrer le point (-1,-1,-1) où les couleurs sont les plus vives. Au point opposé (1,1,1), c'est tout blanc. - Ajouter le nœud Color Ramp. Les couleurs ne sont pas encore orientées comme on veut parce que Blender tient compte des coordonnées (x, y, z) dans l'objet auquel on applique ce dégradé :
Là encore, il faut voir le plan comme une "tranche" de ce cube où la couleur verte part de (-1,-1,-1), la bleue de (1,1,1), avec le blanc au milieu :
- Ajouter un nœud Seperate XYZ et choisir X ou Y, puisque c'est un simple plan. Ici j'ai choisi Y :
Un dégradé sphérique
Imaginons qu'on veut ce dégradé :
En 2D, dans Inkscape, on pourrait dire que c'est un dégradé radial, mais en 3D c'est un dégradé sphérique parce que c'est l'intersection de l'objet plan avec une sphère imaginaire contenant ces trois couleurs concentriques.
- Retirer le nœud Seperate XYZ de l'exemple précédent et mettre à la place un nœud Gradient Texture. Par défaut, il est réglé sur Linear donc on obtient la même chose que précédemment, quoique tourné de 90 ° :
- Régler le nœud Gradient Texture sur Spherical ne donne pas encore ce qu'on veut parce que la sphère imaginaire qui contient les couleurs ne coupe pas le plan au bon endroit parce que son centre est en (-1,-1,-1) :
Encore une fois, il faut penser le plan comme une tranche de ce cube englobant, vu par en-dessous :
- Si on branche la sortie UV du nœud Texture Coordinate sur l'entrée Vector du nœud Gradient Texture, on se rapproche mais la sphère imaginaire est centrée sur les coordonnées (u, v) de l'objet plan. On pourrait la décaler avec un nœud Mapping, mais c'est compliqué :
« The range by default is from 0.0 to 1.0 starting from the lower left corner. » - Il suffit en fait de brancher la sortie Object du nœud Texture Coordinate sur l'entrée Vector du nœud Gradient Texture, parce que la sortie Object envoie des coordonnées centrées sur le point d'origine de l'objet, et ici c'est un simple plan dont l'origine se trouve par défaut au centre géométrique :
Sur cette capture, je n'ai pas sélectionné le plan donc on ne voit pas son point d'origine, représenté par défaut par un point de couleur orange.
Il faut que je me rappelle aussi qu'on peut aussi mettre le point d'origine où on veut, y compris hors de l'objet carrément, donc on peut centrer les coordonnées de texture où on veut. - Imaginons maintenant qu'on veut décaler et rapetisser ce dégradé dans un coin de l'objet plan, comme ceci :
Pour ça, on va ajouter un nœud Mapping entre le Texture Coordinate et le Gradient Texture :
Je note aussi que le paramètre d'échelle (scale) n'est pas un pourcentage donc 1.5 rend le dégradé plus petit et non plus grand. - Je peux aussi sélectionner un autre objet dans le nœud Texture Coordinate par exemple un empty que je déplace pour que le dégradé se déplace aussi. Si la trajectoire de l'empty est complexe (circulaire, par exemple) ça permet de faire des mouvements de dégradé qu'on ne peut pas faire en modifiant Location: x, y dans le nœud Mapping avec des keyframes.