Un graffiti sur un mur en briques dans Blender
L'objectif de cette aide-mémoire est de parler du modificateur Displacement qui permet de créer un relief à partir d'une image en niveaux de gris, et de continuer sur la lancée des aide-mémoires précédents à propos des textures.
-
Pour faire simple, je pars d'un motif "briques" créé vite fait dans Inkscape et exporté en PNG :
-
Dans Blender, j'ajoute un objet plan Maj A
Mesh > Plane
:
-
Je lui crée un matériau dans l'onglet
Material Properties
avec le boutonNew
et je vais dans l'espace de travailShading
. Pour l'instant, je n'ai qu'un nœudPrincipled BSDF
et leMaterial Output
:
-
J'ajoute mon image de "briques" par un simple glisser-déposer et je connecte sa sortie
Color
à l'entréeBase Color
du nœudPrincipled BSDF
:
Pour l'instant, c'est bien sûr toujours complètement plat :
-
Pour pouvoir avoir du relief sur mon plan, je dois d'abord le découper en petits carrés avec l'outil
Loop Cut
et la molette de souris :
-
Je dois aussi produire une version de mon mur de briques dans Inkscape en noir et blanc, où le noir représentera les creux et le blanc les sommets du relief :
-
Dans Blender, je vais dans l'onglet
Modifier Properties
et je clique surAdd Modifier
pour choisirDisplace
-
Dans le modificateur Displace, je clique sur
New
pour ajouter une nouvelle texture -
Puis je vais dans l'onglet
Texture
, ou bien je clique sur le pictoShow texture in texture tab
, ce qui revient au même :
-
Dans l'onglet
Texture
, je clique surNew
pour vraiment créer la texture, cette fois, et je choisis le typeImage or Movie
-
Là, je clique sur
Open
pour choisir mon image de mur en noir et blanc :
-
Dès que Blender a ouvert l'image, j'obtiens un résultat un peu "violent" 😅 :
-
Je clique sur l'onglet
Modifier Properties
et je règle la force du modificateur avec le champStrength
:
-
Là je commence à entrevoir le résultat que je souhaite mais il y a toujours des joints entre les briques qui n'apparaissent pas en creux, parce que ma grille de petits carreaux ne tombe pas bien en face des joints :
-
Pour affiner, je passe en mode édition, je sélectionne toutes les faces par A et je fais un clic droit
Subdivide
autant de fois que nécessaire :
-
Je vois maintenant que les joints entre les briques apparaissent tous en creux comme je le souhaite :
Ici le relief est exagéré. Je pourrais passer la Strength à 0.03 pour quelque chose de plus raisonnable. -
Par contre, les arêtes des briques sont trop vives pour que ça ait l'air naturel :
-
Je pourrais ajouter un modificateur Subdivision Surface sous le modificateur Displace (c'est-à-dire après Displace dans l'ordre d'application des modificateurs). Pour l'exercice, je préfère modifier l'image des briques en noir et blanc dans Inkscape, pour obtenir des transitions moins franches entre le noir et le blanc. Pour ça, j'applique un léger flou sur le contour de mes briques et j'exporte en PNG, ce qui me donne des niveaux de gris :
(c'est du vite fait pour rédiger cet aide-mémoire) -
Dans Blender, je retourne dans l'onglet
Texture
(via le picto Show texture in texture tab ou directement) et je clique sur le pictoReload image
:
-
Aussitôt, je vois que j'ai quelque chose de plus naturel :
-
Je diminue le paramètre
Strength
à 0.03 pour avoir un relief plus raisonnable :
-
Je crée maintenant mon image de graffiti, vite fait dans Gimp en PNG transparente :
-
Je l'ajoute dans l'espace de travail
Shading
. J'ajoute un nœudMixRGB
. Je connecte l'image des briques par sa sortieColor
à l'entréeColor1
du mixeur, l'image du graffiti par sa sortieColor
à l'entréeColor2
du mixeur, et je connecte la sortieAlpha
du graffiti à l'entréeFac
du mixeur :
(Si je me trompe entre la prise Color1 et Color2, je peux intervertir en faisant cliquer-glisser la souris de la prise Color1 à la prise Color2) -
J'obtiens ce résultat où on voit que la peinture du graffiti suit bien le relief des briques :
-
Maintenant, je voudrais que ce graffiti soit plus petit et centré sur le mur. Pour ça, j'ajoute les nœuds
Texture Coordinate
etMapping
comme ceci :
(il faut régler l'image surClip
au lieu deRepeat
)
(il faut régler la taille,Scale
dans le Mapping, avec un facteur supérieur à 1, contrairement à ce qu'on pourrait attendre) -
Et voilà le résultat :