Blender 3D : Matériau /2 – les Textures!

I/ Textures.. et texture?

Vous trouverez de nombreux sites sur lesquels télécharger gratuitement des textures mais attention il y a texture et… texture! Dans le langage courant quand on parle de la texture d’un objet on pense plutôt à son toucher. Une fourrure a une texture douce, soyeuse, ce jean est rêche…
Dans le monde de l’image on se concentre sur la vue et sur la représentation de cette matière. Le terme de texture en dessin 2D prendra plus ce sens orientée matière. On utilisera une texture pour représenter le grain d’un papier aquarelle, on utilisera aussi des pinceaux avec une texture de peau de crocodile, etc
En informatique le terme texture englobe désormais plusieurs types d’images : vos recherches vous mèneront aussi bien à une simple photo d’une matière et parfois raccordable / répétable (tiles) qu’une texture PBR qui permet d’avoir un rendu physique. Vous pouvez trouver aussi le terme de texture procédurale qui est une manière de générer mathématiquement une texture. Vous êtes perdus?

Voilà les différents types de textures :

A/ Textures d’image plate

Ce sont les textures les plus simples mais il en existe également plusieurs types avec des usages différents :

1) L’image répétable

Elle est souvent utilisée en fond des sites internet et des décors 2D. Elle permet de diminuer le poids en mémoire d’une page web ou d’un jeu par répétitions : on ne charge en mémoire qu’une image qui sera répétée autant de fois que nécessaire. Historiquement ce type d’image était une nécessité pour les premiers jeux vidéos car les consoles n’avaient pas beaucoup de mémoire (8ko pour les premières consoles). Ce principe a été étendu ensuite aux premiers jeux 3D texturés (regardez wolfenstein 3d ;)). Ces textures sont fréquentes. Si vous en recherchez, utilisez les termes Anglais : on parle de texture seamless, sans bordure, et répétable comme des pavés, des tiles.
Enfin on peut retrouver ce principe sur les logiciels de peinture numérique sur les images de fond pour simuler le grain d’un papier ou d’une toile.

2) La photo de haute qualité de matière

En dessin 2d, elle sert souvent à ajouter un effet de matière par un système de superposition de calques, on ne prendra alors généralement qu’une partie de l’image ce qui explique la haute définition :

3) La photo de décor de fond ou background

Il s’agit ni plus ni moins qu’une photo de paysage en couleur souvent avec une bonne résolution. Comme son nom l’indique elle est utilisée comme élément de décor pour un fond d’écran de windows, etc mais on peut tout aussi bien l’utiliser comme image de fond dans une texture sous Blender (avec ou non un canal alpha mais attention au poids de l’image!).

4) Pinceaux ou brushes

Les textures de pinceaux ou brosses (brushes) sont des images très intéressantes : elles sont en niveaux de gris et gèrent la transparence (.png ou format propriétaire). Le principe est simple : vous remplacez le curseur de la souris par le motif et vous pouvez simuler un effet de matière par pression :

On peut assimiler la technique à celle d’un tampon : le noir (ou le canal alpha/transparent) de l’image ne donnera aucune couleur, le blanc prendra le maximum de peinture.

Ce concept est primordial à comprendre car il est transposable à Blender. En effet ce type d’image est utilisé dans Blender pour sculpter. La différence par rapport à la 2D c’est qu’au lieu de convertir le blanc en couleur, Blender va l’associer à la profondeur. Comme pour les logiciels 2D, si vous avez un stylet qui gère la pression, vous pourrez faire varier la profondeur, taille, etc de votre outil en temps réel. Ce concept d’images en niveaux de gris est à la base également des textures PBR

B/ Textures PBR ou Physically Based Rendering

Une texture PBR est en fait composée de plusieurs images. Chacune simule un paramètre influant sur le rendu. Cela permet d’avoir sur un surface plane l’illusion d’un relief en jouant sur les shaders qui vont modifier la façon dont va se comporter la lumière. En pratique chaque image en niveaux de gris est une carte de valeur allant de 0 (noir) à 1 (blanc) qui modifie chacune une propriété :

Les principales cartes des textures PBR

La traduction en Français est compliquée et les notions derrière également. J’ai cependant essayé de compiler les principales cartes de textures que j’ai découpé en 3 catégories :

Celles qui modifient la couleur :

  • Base color / Color Map : carte des couleurs qui représente la texture basique 2D décrite au point précédent.
  • Albedo / Diffuse Color : c’est une carte couleur auquel on a enlevé toute notion d’ombre et de lumière ce qui permet par exemple de mieux représenter une matière non métallique

Celles qui caractérisent le matériau en modifiant la réflexion de la lumière :

  • Metallic / metalness : c’est une carte en niveaux de gris qui permet d’assigner la propriété de réflexion d’un métal. Blanc = métallique, Noir : non métallique
  • Ambient Occlusion ou Specular Level Map : carte en niveaux de gris qui permet de simuler les ombrages en contrôlant la quantité de réflexion de la lumière diffuse
  • Specular Color map : idem que la Specular Level map mais permet de contrôler les couleurs des reflets de lumière diffuse : permet de donner des reflets métalliques
  • Reflectivity = Specular in PBR
  • Roughness / Gloss : c’est une carte en niveaux de gris qui représente la rugosité du matériau. En pratique avec une rugosité à 1 (blanc) on considère que le matériau ne réfléchit pas la lumière, il l’absorbe alors qu’à 0 le taux de réflexion est maximum (miroir). En résumé la carte va de 0:glossy ) à 1:diffuse

Celles qui donnent les détails de profondeur :

  • Bump Map : C’est une carte en niveau de gris qui simule la profondeur en jouant avec la réflexion de la lumière : noir = + profond = – de réflexion.
  • Normal Map: ou carte des normales est une version améliorée de la bump map. De manière simplifiée, là où la bump map agit seulement sur la normale Z avec un niveau de gris, la normale map utilise les valeurs RGB pour simuler la réflexion de la lumière selon XYZ.
  • Displacement Map : contrairement à toutes les cartes précédentes qui ne modifient pas la géométrie et jouent sur les calculs de lumière pour simuler la profondeur, rugosité, etc la carte de déplacement est généralement utilisée pour définir les valeurs de déplacement suivant les normales soit grâce au -modifier displace- soit via le noeud Displacement (dans l’onglet <shading>) qui vient alimenter l’entrée displacement du noeud Material.

Attention : les textures que vous téléchargez sur certains sites ne sont pas spécifiquement créées pour Blender.

De multiples logiciels 3D utilisent les textures PBR et leur interprétation varie en fonction du moteur de rendu! Certains utilisent un système de lumière spéculaire/brillance (Specular/glossyness) basé sur les cartes albedo, glossy et specular map. Dans les tutos de Blender vous trouverez souvent le flux Metallic/Roughness (noeud Principled BSDF) basé sur la couleur de base (base color), une carte de rugosité (roughness) et la propriété métallique (metallic). Il faudra de l’expérience pour corriger les éventuels défauts d’une texture, passer d’un mode à l’autre et obtenir le même résultat avec différents moteurs de rendus!

Le meilleur exemple est la carte roughness/ gloss qui est parfois l’inverse de l’attendu : Blender interprète la valeur noire avec une réflexion maximum alors qu’en regardant la texture on peut remarquer que ces parties correspondent dans le modèle 3D à des zones profondes qui, a priori, réfléchissent le moins la lumière. Il faut alors penser à inverser les valeurs de la map (n’inversez pas les couleurs de la map, utilisez plutôt le noeud Invert ;)!

Des propriétés sont concurrentes, similaires ou complémentaires :
– On peut mettre une Roughness à 1 donc un matériau qui ne reflète pas la lumière mais en même temps mettre le paramètre Metallic à 1 qui lui représente une réflexion métallique maximum pour un résultat pas forcément attendu!
– la color map et l’albedo sont souvent définies comme similaires or chacune correspond à un mode différent de calcul. Le noeud principal de Blender est basé sur la base color on pourra néanmoins utiliser une carte albedo pour avoir d’autres effets de matière.
– La Bump Map et Displacement Map rendent toutes 2 la notion de hauteur et doivent produire un résultat similaire mais elles sont en réalité différentes et complémentaires. La Displacement Map modifie la géométrie et nécessite un maillage fin qui est couteux en temps de rendu : on limite souvent son usage sur les objets au premier plan et on se contente d’une bump map ou normal map pour les objets situés au fond!

C/ Textures procédurales

A l’instar du noeud « ImageTexture » qui génère une carte de couleur, Blender inclut plusieurs autres noeuds qui permettent de générer mathématiquement des maps. Voici ceux qui reviennent souvent : Clouds, Noise, Musgrave, Voronoi ou Marble, Stucci, Wood…

Les avantages d’une texture procédurale sont nombreux :

  • Elle ne prend pas de place sur votre disque. Comme la texture est calculée vos objets n’incluront pas plusieurs Mo d’images…
  • Elle est paramétrable. Blender propose des modèles prédéfinis : mur de briques, marbre, bois, etc chacun avec des paramètres propres : épaisseur de mortier pour les briques, etc
  • Elle permet de réaliser textures réalistes particulièrement adaptées pour les grandes surfaces grâce à leur effet aléatoire texture de rouille, roche, etc
  • Elles peuvent être une source de création de texture PBR sur-mesure pour un objet. On peut les conjuguer à des -modifier displace- pour générer une texture PBR très détaillée.

A priori l’utilisation d’une texture procédurale dans Blender ne présente donc pas de réel inconvénient sauf peut-être une augmentation du temps de rendu.. Mais voici une petite vidéo pour vous rendre compte de leur puissance et du processus de création :

Cette vidéo répond en partie à la question : pourquoi elles ne sont pas systématiquement utilisées?

  • Parce qu’elles restent quand même complexes à mettre en œuvre pour un non initié.
  • Elles ne sont pas exportables. Dès que vous sortez de l’utilisation de Blender vous devrez les convertir au format PBR qui, lui, est supporté par les principaux moteurs de jeux, logiciels 3D, etc
    Ces textures sont donc souvent réservées à des projets Full Blender (rendu d’images ou petite animation) ou à la création d’une texture PBR sur mesure qui sera exportée avec l’objet ou facilement réimportée dans un autre logiciel.

Vous entendrez souvent parler de BAKING de texture. Il s’agit en fait du procédé qui consiste à obtenir un rendu hautement réaliste sur un objet lowpoly en créant une texture sur mesure. Rapidement, un objet est réalisé en 2 versions : un maillage final avec très peu de faces et un maillage très dense qui va permettre de rajouter de multiples détails sur sa géométrie (ajout de trous, rayures, etc en mode sculpt par ex). On peut alors cuisiner (baking) une texture sur l’objet highpoly puis l’appliquer à l’objet lowpoly. L’avantage est de pouvoir représenter des détails (trous, rayures, etc) en conservant un maillage très pur.

II/ Utiliser des textures avec un node shader

Dans Blender n’importe quelle photo sera considérée comme une texture dite RGB (Red / Green / Blue) avec une gestion de la transparence ou non (canal Alpha) ou Grayscale (niveaux de gris).

A/ Appliquer une texture de base

Si vous avez suivi l’article Blender Matière 1/2 vous avez vu que la propriété ‘base color’ représente la couleur de base du matériau. En vous mettant dans le mode <viewport shading> vous remarquez un petit connecteur jaune à gauche du paramètre ‘base color’… Oui c’est aussi simple que ça : pour dire au moteur de rendu d’utiliser une texture comme couleur de base il suffit de rajouter en entrée une image! Le plus simple? Sous windows vous pouvez glisser une image dans le viewport et le noeud « Image Texture » sera automatiquement créé mais si vous préférez passer à 100% par l’interface de Blender :

Ajout d’une texture de base avec le node shading
  • [Maj]+[A] dans l’éditeur de shaders pour ajouter un noeud
  • Choisissez Texture – ImageTexture ou recherchez ImageTexture
  • Reliez sa sortie à l’entrée de base color
  • Dans le noeud ImageTexture cliquez sur le petit répertoire et prenez n’importe quelle image et voilà!

On remarque alors que l’image est décalquée (mappée) sur toutes les faces mais qu’il n’y a pas de continuité entre certaines faces.. Logique : on a une image plane qui est mise sur un cube. Il va falloir passer par des étapes d’apprentissage supplémentaires : la projection et la notion d’UV mais pour l’instant on reste sur la notion de texture!

Une texture de base c’est bien mais je veux un meilleur rendu alors.. Ces textures PBR?

B/ Intégrer des textures PBR trouvées sur internet

D’après ce que j’ai compris Blender utilise par défaut un flux de travail ‘Metalness’ ce qui explique la création du noeud principal « principled BSDF » : Bidirectional Scattering Distribution Function. En gros c’est un noeud qui calcule un rendu de matériau par une diffusion bidirectionnelle de la lumière! Généralement c’est le noeud de shader qui sera utilisé pour le rendu des matériaux conventionnels mais il faut garder à l’esprit qu’il n’est pas forcément adapté à tous les types de matériaux et que Blender en intègre d’autres (shader specular, glossy, etc).

Utiliser les bons connecteurs

Nous avons vu le procédé pour ajouter une texture à la -base color- et bien figurez-vous que c’est aussi simple de rajouter une texture pour modifier les autres propriétés!
Il suffit de connecter les différentes cartes (roughness, normale, etc) aux propriétés correspondantes sur le noeud principal -Principled BSDF- du matériau (en faisant attention à leur type : sRGB pour la base color, Non-Color pour les map en niveaux de gris, etc) :

Ajout de la carte de Roughness


Oui c’est facile et presque amusant la première fois mais si vous importez plusieurs textures cela va commencer à vite devenir chiant fastidieux! La solution?

Utilisez l’addon node wrangler

Il est nativement dans Blender donc il suffit de l’activer dans le menu préférences – addon. Une fois dans le <node editor> au lieu de presser [Maj]+[A], faites [Ctrl]+[Maj]+[T] : l’explorateur de fichier s’ouvre, sélectionnez directement plusieurs maps, ouvrez-les et elles seront reliées automatiquement au noeud principal!

Où trouver des textures?

Voici quelques sites de téléchargement :

Des tutos vidéos

Si vous voulez apprendre les bases de l’utilisation des shaders pour appliquer vos textures PBR voici des articles sympathiques :

C/ Utiliser des addons pour appliquer des textures déjà créées

Encore plus rapide? Si vous voulez juste chercher et appliquer directement une texture sur un objet voici 2 addons :
– un addon gratuit : BlenderKit online Asset Library qui vous permettra de commencer à texturer vos objets le plus simplement du monde par drag’n drop. L’addon se base sur une librairie en ligne supportée par des donateurs de Blender. L’avantage c’est que les matériaux créés sont spécifiquement pour Blender, l’inconvénient c’est un nombre pour l’instant limité de textures dont la qualité n’a pas été forcément validée (et pour les anglophobes les recherches se font en anglais : wood pour bois, etc)

– un addon payant très connu dont j’ai déjà parlé Extreme Pbr Addon qui va vous proposer 1 millier de textures mais aussi des outils pour animer l’eau, etc Voici le lien si vous avez les moyens et l’envie de vous amuser : https://blendermarket.com/products/extreme-pbr-addon-for-blender-279-2

III/ Créer vos textures PBR

A/ A partir d’une photo

Oui vous pouvez créer vous-même les différentes images qui composent une texture PBR en partant d’une photo. Il vous faudra utiliser n’importe quel logiciel de retouche photo et jouer avec la saturation pour avoir les niveaux de gris, certains filtres, modifier les contrastes… Le plus dur est de savoir comment modifier l’image pour qu’elle soit bien interprétée sur Blender! Voici une vidéo de 2015 qui explique les bases de ce travail :

Je trouve personnellement que ce processus est long et n’est pas justifié pour des textures courantes. En fait très peu de personnes doivent encore créer les textures PBR de cette manière mais si vous venez de Photoshop ça peut ouvrir peut-être quelques perspectives de créations originales et dans tous les cas cela aide à comprendre en détail le fonctionnement du rendu des textures!

J’ai découvert également un logiciel gratuit qui se nomme Materialize qui permet de s’affranchir de l’aspect retouche photo et de jouer directement sur les valeurs essentielles. Voici le lien de téléchargement : https://boundingboxsoftware.com/materialize/downloads.php

Comme pour une création manuelle il faudra beaucoup de temps pour trouver les bons paramètres et avoir la matière voulue. Si vous êtes motivé voilà un exemple de création avec Krita, un logiciel libre :

Créer une texture de brique avec Krita

B/ Grâce à des logiciels dédiés

Je place dans cette section des logiciels dédiés uniquement à la création de textures. Ils sont souvent complexes, s’interfacent avec les principaux logiciels de rendu 3D et nécessitent un minimum d’apprentissage pour en maitriser le fonctionnement :

  • Substance Painter est le plus cité dans le milieu professionnel car il est robuste et permet de créer des textures complexes plus ‘simplement’ (ajout de logo, peintures, etc) .
  • 3Dcoat
  • Armor Paint : dont les sources sont gratuites mais la version windows payante!
  • Quixel Mixer
  • Material Maker est très intéressant car il s’agit d’un logiciel que vous pouvez tester gratuitement ( https://rodzilla.itch.io/material-maker ). Si vous l’utilisez régulièrement il sera convenable de quand même rémunérer son auteur 😉

Voici un comparatif qui vous permettra de découvrir les possibilités de ces logiciels :

Très bon comparatif qui montre un peu le workflow ou flux de travail

Je suis un peu sorti du cadre du débutant sous Blender mais cette parenthèse est utile à mon sens car elle permet de savoir où placer ses efforts. Ne passez pas tout votre temps à réalisez des textures PBR si votre but est de modéliser des objets de la vie courante et n’achetez pas directement substance painter si vous ne savez pas modéliser… Revenons à nos moutons.. On peut aussi très bien générer des textures PBR de qualité gratuitement…

C/ Grâce à Blender!

Oui Blender permet de boucler la boucle : il fait tout (sauf le repassage) et permet de générer différentes maps (même la normal map) à partir d’une image RGB voir même à partir de rien en utilisant les nœuds de texture procédurale.
Pour découvrir les effets des différentes composantes d’un matériau on peut même peindre directement les textures dans la vue 3D. Il faut juste être motivé et trouver les tutos! J’ai commencé des articles sur le texture painting et vous trouverez ci-dessous des tutos pour créer des textures procédurales.

IV/ Créer des textures procédurales

Dans la continuité de ce que l’on a vu, nous avons ajouté un noeud « ImageTexture » en entrée de la « base color » du noeud principal pour changer la couleur par une image. Le principe pour créer une texture procédurale est tout aussi simple : vous pouvez remplacer le noeud « imageTexture » par un noeud texture « Brick Texture »!

Noeud de texture procédurale de type brique

La liste des noeuds de texture disponibles et leurs paramètres sont très bien documentés : https://docs.blender.org/manual/fr/dev/render/shader_nodes/textures/index.html

Pour créer rapidement des matières réalistes en utilisant ce genre de textures il faudra comprendre les différentes propriétés physiques qui caractérisent le matériau pour arriver au résultat escompté mais on peut aussi obtenir de très bon résultats en quelques tutos pour les principales matières :

Des petites vidéos pour tout comprendre

Les bases des textures ou matériaux dits ‘PBR’ :

L’explication de la création de texture

Une suite de tutos qui permet de comprendre les différents paramètres qui composent un matériau