Voici un tutoriel pour créer des normal map dans Blender. C’est simple mais il y a des petits trucs bien spécifiques à blender.

1, principe de la normal map.

Générer des texture dans Blender, c’est simple, mais souvent il y a un besoin particulier en 3D. La normal map.

La normal map est une texture particulière en 3D, elle simule un effet de relief sur une surface plus ou moins plane.

Un peu à l’image d’une Bump map mais avec pour particularité d’apporter une information du relief sur 3 canaux avec les couleurs Rouge Vert et Bleu qui représente chacune un canal spécifique au relief. Voyez ces couleurs comme des axes X, Y et Z sur un plan. Ce qui permet d’avoir une orientation du relief en plus de l’intensité qu’offre le niveau de gris de la bump map.

La Bump map ne dispose que de l’intensité du relief étant en niveau de gris.

Voici un exemple de normal map (Source Wikipedia):

Exemple de normal map au centre

A droite on voit le modèle original, au centre la normal map générée depuis ce modèle original et à gauche un plan avec la normal map appliquée. On devine le relief mais on peut remarquer les limites de la normal map. Cela simule le relief jusqu’à un certain angle de vue qui montre bien que la surface est plane en réalité (Appliquez une normal map sur une sphère et vous verrez parfaitement les limites. Le centre de la sphère sera bien représenté mais les bords trahirons cet effet).

La normal n’est pas à voir comme un remplacement complet à la bump map, s’il n’est pas possible d’utiliser les deux, la normal map serait un choix intéressant par ce qu’elle apporte, mais il est préférable de voir la normal map comme un complément intéressant à la bump map. Nous disposeront de plus de contrôle sur le relief.

Ce types de textures est très souvent utilisée dans l’imagerie 3D que ce soit pour l’images fixe, le jeux vidéo ou la vidéo.

Un exemple de normal map appliquée sur un modèle simplifié. A gauche, le modèle original (4 millions de polygones), au centre la version simplifiée (500 polygones) et à droite le modèle simple avec une normal map appliquée

 

2, Création de la normal map.

Pour créer une normal map, on utilise très souvent deux modèles 3D. Un modèle particulièrement détaillé avec beaucoup de polygones. Souvent issue d’un sculpt 3D, ce modèle « High Poly » peut avoir plusieurs millions de polygones. Ce qui est très lourd en mémoire vive sur une machine.

Pour récupérer le détail apporter par la sculpture, on récupère le relief fin de ce modèle « high poly » pour l’appliquer sur un modèle bien plus modeste en définition, un model « low poly ».

Cette étape se nomme le baking de texture.

Pour obtenir une texture de relief, on demande au logiciel de comparer les deux surfaces et de calculer les différences de relief entre ces deux modèles pour en générer une normal map dans notre cas (on peut aussi effectuer cette manipulation pour avoir une map de displace ou de bump).

La plupart des logiciels 3D permet de faire ce type de manipulation plus ou moins de la même manière. Blender le permet aussi, avec ses particularités qui peuvent irriter certains utilisateurs habitués à une philosophie bien différente. Voyons donc comment baker une normal map dans Blender.

3, Baking de normal dans Blender.

Dans blender, la méthode théorique est similaire aux autres logiciels. On prend deux modèle 3D, un « high poly » et un « low poly », on demande à Blender de comparer les différences de reliefs entre les deux pour obtenir une normal map.

A noter que pour l’instant, le baking n’est possible qu’avec le moteur de rendu interne de Blender le fameux Blender Render. Cycles ne permet pas de faire du baking pour le moment. Donc le calcul se fera avec le CPU uniquement. C’est rapide, mais selon la texture que l’on souhaite, le temps de calcul peut être plus ou moins long. Le plus long que j’ai noté sont les light map (Ambient Occlusion).

Voyons donc la scène de départ avec les deux modèles très simples pour illustrer le concept du baking dans Blender.

Modèle HP un plan sur lequel j’ai mis un modificateur multiresolution afin de sculpter le message qu’on peut y lire à la tablette :

Modèle "High Poly", un plan simple sculpté.

Modèle “High Poly”, un plan simple sculpté.

 

Modèle LP un simple plan subdiviser afin de voir son mesh:

Le modèle "Low Poly", le même plan simple mais non sculpté

Le modèle “Low Poly”, le même plan simple mais non sculpté

Le but ici est de demander à Blender de comparer le modèle LP au modèle HP dans ce qui les différencie pour générer une normal map afin de l’appliquer sur le modèle LP pour simuler le relief que n’a pas ce modèle qui reste un plan simple.

Pour commencer, nous avons les deux meshes dans la scène, sur mon exemple j’ai posé le LP au dessus du HP.

Ensuite pour le modèle LP, vu qu’on souhaite lui appliquer une texture, il lui faut avoir des Uvs.

Il s’agit la d’un simple plan, mais voici l’UV du LP :

UV du modèle LP

UV du modèle LP

La subdivision du plan en 4 faces n’est pas vraiment utile, c’est surtout pour le visuel des captures. Mais un plan d’une seule face ferait très bien l’affaire.

Voyons maintenant les étapes du baking dans Blender :

Comme il faut comparer le HP au LP il faut donc les sélectionner tout les deux, et l’ordre est important. En premier lieu il faut sélectionner le HP qui sera la source de comparaison de Blender.

Ensuite on sélectionne le modèle LP tout en maintenant la première sélection avec Shift.

Voici ce que cela donne

Blender_tuto_baking_04

La sélection pour préparer le baking

Une fois la sélection faites, on peut aller voir les options de baking. Et pour cela, il faut se rendre dans l’onglet de rendu. Car techniquement, le baking est un « rendu en texture ».

La section Bake se trouve tout en bas de la colonne avec une interface par défaut.

Lorsqu’on la déroule, le bouton « Bake » est visible, le mode de baking juste en dessous et les options du baking suivent.

Les option de baking dans Blender

Les options de baking dans Blender

Nous souhaitons une normal map, donc nous allons choisir le mode Normal de la liste déroulante pour faire le réglage.

Choix du mode de baking

Choix du mode de baking

Une option « Normal space » apparait, le plus simple pour vous est de laisser cette option sur Tangent. C’est le type de normal map qui va bien dans la plupart des cas.

Ensuite, on coche la case « Selected to Active », cela permet de définir qu’on veut que Blender compare les deux Mesh pour générer la map. On laisse la distance à 0 et le bias à 0,001 vu que les modèles sont parfaitement superposés.

La marge à 16 sera très bien aussi. Selon les cas, il est parfois nécessaire d’augmenter la marge mais pas ici.

 

Les options de baking de la normal map

Les options de baking de la normal map

Une fois les options définies, on ne peut qu’appuyer sur le bouton bake pour effectuer notre baking :)

Sauf qu’en faisant ceci, une erreur semble apparaitre. Et pas de normal map à la clef.

Erreur classique du baking mal préparé dans Blender

Erreur classique du baking mal préparé dans Blender

En effet, c’est ici que l’on voit la subtilité de Blender. Le programme à besoin d’une texture en mémoire pour effectuer le baking, d’où le message d’erreur : No object or images found to bake to (pas d’objet ou d’image trouver pour rendre en texture)

Alors pour se faire, nous retournons en mode UV de l’objet LP, comme c’est le dernier objet sélectionné, il n’est pas nécessaire de défaire la sélection en cours. Mais ce n’est pas grave s’il faut refaire la sélection pour générer le baking du moment que l’ordre est respecté.

 

Ajout de texture dans l'UV du modèle Low Poly

Ajout de texture dans l’UV du modèle Low Poly

Comme on peut le voir dans mes choix, il n’est pas nécessaire d’avoir une couche alpha pour une normal map, j’ai laissé la taille à 1024 pixels de côté mais il est tout à fait possible de choisir une autre taille selon ce que vous souhaitez.

N’oubliez pas de passer en mode Edit de l’objet LP pour définir la texture fraichement mise en mémoire sur l’objet en question. Sinon Blender vous indiquera qu’il n’y a pas d’image pour baker alors qu’une image a pourtant été créer.

Une fois la texture liée à l’objet, vous pouvez sortir du mode Edit.

Maintenant on peut re-tenter le baking.

 

Le baking s'est bien passé

Le baking s’est bien passé

Cette fois tout se passe bien la normal map est bien calculée et elle se trouve à la place de la texture noire qu’on a généré peu avant.

Comme on peut le voir, le relief du model HP est représenté en 2D sur la texture avec les 3 canaux de couleurs représentant les axes.

Cette texture est d’ailleurs visible sur le modèle lorsque l’on passe l’affichage en mode texture.

Mais elle n’agit pas en tant que normal map.

 

La map est visible en mode Texture sur le viewport après le baking

La map est visible en mode Texture sur le viewport après le baking

On peut maintenant sauvegarder cette texture dans le format images de notre choix pour l’appliquer sur le modèle LP en tant que normal map et voir le résultat.

Je passe les détails pour appliquer la texture mais n’oubliez pas les coordonnées mapping en UV/UVMap avec la projection flat et de décocher la texture en mode Diffuse pour cocher en mode Normal.

Blender_tuto_baking_12

Préparons la scène pour vérifier la map directement dans Blender.

En premier lieu, j’ajoute une lampe simple que je décale du centre pour générer de l’ombre.

Ensuite je passe le shading du viewport en mode GLSL afin d’afficher le résultat de la normal map dans le viewport sans avoir à faire de rendu avec une caméra.

Et voilà le résultat (pour la capture, j’ai décalé le model HP pour la comparaison).

Le résultat de la Normal map directement dans le viewport

Le résultat de la Normal map directement dans le viewport

Le mesh LP est sélectionné, j’ai laissé afficher son wire afin de bien montrer qu’il n’est qu’un simple plan de 4 polygones à 4 côtés.

Si je déplace la lumière, les ombres suivent le mouvement:)

 

Le même résultat après avoir déplacer la source lumineuse

Le même résultat après avoir déplacé la source lumineuse

Voilà comment on bake une texture dans Blender. C’est simple, mais la particularité de Blender avec la texture à créer et à assigner au modèle LP à de quoi rendre fou beaucoup d’utilisateurs habitués à d’autres logiciels 3D (on peut le voir sur les différents forum autour de Blender).

4, Récapitulatif

  • Le baking de texture dans Blender se fait avec le moteur Blender Render (interne)
  • Il faut que le modèle qui va accueillir la normal map dispose d’un UVmap
  • Ce modèle Low Poly doit avoir une texture affiliée en mode UV pour accueillir la normal map sinon il y a un message d’erreur
  • Bien définir les UV pour l’application de la normal map en tant que normal map.
  • Vérifier l’effet en mode GLSL dans le viewport pour se faire plaisir ;)

Voilà, le principe du baking dans Blender n’a plus de secret. A noter que dans mon article je traite du cas spécifique de la nomal map mais cette méthode est tout autant applicable avec les différents types de textures que Blender permet de baker comme on peut le voir ici :

Choix du mode de baking

Choix du mode de baking

Voici le fichier source utilisé pour ce tutoriel pour vous aidez dans l’apprentissage du baking > Clic droit, Sauvegarder sous

A vos baking :)