Blender 3D : Matériau /4 – baking

Vous êtes devenus un pro dans la création de textures procédurales et vous voulez exporter vos modèles dans d’autres logiciels, moteurs de jeux, etc?
Vous allez devoir écraser tous vos nœuds pour les transformer en images compatibles avec le format PBR.

I/ La procédure basique

Voilà les quelques étapes qui vont vous permettre de créer votre texture image à partir de votre texture procédurale. A noter que pour l’exemple l’UV map n’est pas optimisée, etc.

1/ créer l’UV map de votre objet

J’ai déjà fait un petit article sur le principe et le détail de la création d’UV map simples. Ici j’ai simplement créé un découpage façon cube et en mode UV Editing. On se met en editMode, on sélectionne tout et UV> smartUV project

Création de la carte d’UV

2/ Créer le noeud de la future texture

En mode shading, ajouter un noeud imageTexture ([Maj]+[A]>ImageTexture) dans votre matériau puis créer une image vierge avec New :

Définissez une résolution (multiple de 1024px) en fonction de la taille et de la position de l’objet dans la composition. Cochez la case Alpha seulement si vous voulez conserver des parties transparentes.

3/ Bake It !

Pour obtenir votre texture il va falloir utiliser votre moteur de rendu qui va calculer l’emplacement des couleurs sur votre map en fonction de vos paramètres et de votre texture procédurale. Si vous avez une carte graphique puissante c’est le moment de l’utiliser :

paramètres de rendu : 32 itérations

La qualité de la texture dépendra de la résolution de votre image mais aussi du nombre d’itérations par pixel (les 32 dans Render). Ce nombre d’itérations dépendra des performances de votre carte mais surtout de la fidélité du rendu voulu. Personnellement je commence à 16 et j’augmente de 8 en 8. Quand je ne vois pas de différence notables entre 2 images j’arrête (même si vous avez une carte 3d puissante ça ne sert à rien de faire 128 itérations par défaut si 16 suffisent… ça réduira votre facture électrique :P).
Pour générer la Base color il faut scroller plus bas et allez dans la section Bake.
Pour les paramètres à utiliser : BakeType : Diffuse et Contributions : seulement Color.
(On ne veut pas que les lumières de la scène altère les couleurs sinon la texture va devenir incohérente si vous déplacez votre objet).

Notez que mon noeud et mon objet sont sélectionnés lorsque je clique sur Bake

baking

Si votre image reste vide avec le Bake, c’est que vous avez un problème avec le moteur de rendu. Par exemple pour ma carte Nvidia 1660 et AMD fx8320 le bake ne marche qu’avec Cuda dans les préférences de Blender :

Si vous voulez ajouter des détails, etc vous pouvez passer dans le mode(texturePaint et en profiter pour enregistrer vos images : menu Image>Save.

4/ Utilisez-là!

L’image est générée, vous pouvez relier le noeud imageTexture à votre Base Color et contrôler la qualité. Si vous ne voyez pas de différence c’est bon signe!

5/ Displacement Map

Avec la même technique vous pouvez également générer la carte de déplacement si celle-ci a été créée procéduralement. Créer une nouvelle ImageTexture en mode nonRgb. Mettez votre colorRamp en entrée de la baseColor, la displacement map recouvre alors votre modèle :

Sélectionnez votre nouveau noeud ImageTexture correspondant au déplacement et sur bake. Cela va générer la carte d’élévation que vous allez pouvoir directement brancher sur le noeud Displacement.

Vérification : le résultat final concorde bien :

Vous pouvez donc dupliquer le matériau (personnellement j’ajoute Bake derriere le nom du matériau) et supprimer tous les noeuds dont vous vous êtes servis pour créer la texture :

La texture finale : seulement 2 noeuds de tetures images

Je vous conseille de garder le matériau original procédural car si vous modifiez votre géométrie, il va falloir re-cuisiner!

II/ Petites optimisations

Il nous reste un petit problème… Pour l’instant on peut pas exporter la géométrie définitive et ces textures car on fait appel au noeud Displacement. C’est à dire que la géométrie est générée via le moteur de rendu à chaque fois. Sachant que pour être précis le maillage est assez fin si on veut optimiser notre modèle il va falloir réduire le nombre de faces et créer la géométrie avant le rendu!

Heureusement c’est assez simple : maintenant que nous avons notre carte de déplacement on peut l’utiliser pour créer la géométrie directement via le modifier displace :
– Supprimez les noeuds liés à l’entrée displacement du noeud Material output. Il ne reste plus que la texture BaseColor.
– Ajoutez un modifier Displace à votre objet. On va paramétrer ce modifier pour qu’il utilise la carte d’UV pour les coordonnées de la texture.

Utilisez le modifier Displace avec l’UV map comme carte de coordonnées.
imageTexture deplact

On va alors pouvoir utiliser comme texture de déplacement notre image générée précédemment :
Il vous reste à régler les paramètres midlivel et Strength du modifier pour, comme pour la partie shading, régler le niveau moyen et la force avec laquelle la texture va modifier la géométrie.
Une fois que vous êtes satisfait : appliquez le modifier!

Désormais vous voyez en editMode que votre modèle possède sa géométrie définitive.. Une dernière chose à faire avant de l’utiliser ailleurs sera peut-être de diminuer le nombre de faces. Ajouter simplement un modifier Decimate avec un facteur 0.5. Vous pouvez augmenter ce facteur si vous avez trop de pertes.
Si votre nombre de face est encore trop important il vaut mieux ajouter un autre modifier decimate à la suite plutot que trop diminuer le facteur.

Une fois que le nombre de faces vous convient appliquez le ou les modifier Decimate et corrigez éventuellement la géométrie!

III/ Conclusion

Vous pouvez appliquer la même méthode pour convertir toutes vos cartes procédurales (rugosité, etc) et surement en trouver d’autres sur youtube!

Ce genre d’opération n’a d’intérêt que si vous avez des problèmes de performances avec des scènes complexes ou si vous voulez rendre vos objets utilisables ailleurs que sur Blender. Chaque projet est différent, il faut simplement identifier le besoin!

Personnellement comme mes scènes changent souvent (géométrie, etc) et que mon objectif est de créér plutôt des rendus d’images ou d’animation entièrement sous Blender je garde le plus longtemps possible mes matériaux procéduraux… Mais si les temps de rendus augmentent trop je commence à simplifier le décor de fond.. D’où ce petit tuto!