Normal Map depuis une texture peinte

Looking for english version ? Click here.

L’exercice ici est de partir d’une texture manufacturée (faite à la main, donc, contrairement à une texture procédurale ou encore photographiée), pour obtenir une Normal Map.
Pour cela on va avoir besoin d’une application graphique (Photoshop, ou Gimp), et de ZBrush 4 (pour la fonction de Timeline).
Le but est de garder la liberté artistique de la texture peinte à la main, sans pour autant faire l’impasse sur la Normap Map, qui elle relève d’un calcul logiciel.
À l’inverse, avec une texture procédurale, obtenir une Normal map est une simple formalité, mais c’est la personnalisation de la texture en elle-même qui devient délicate.
Pour la première étape, il nous faut un fichier de format carré, disons 1024 px de côté.
Puis on dessine l’ébauche du carrelage. Bien.

2014-02-13 10_11_29-AncientPavement_A_1024

Ensuite, il faut s’assurer que cette texture « boucle » bien. Je veux dire, si la juxtaposition du motif ne va pas montrer des faux raccords. Dans Photoshop, c’est avec un filtre que l’on va mettre en évidence ces faux raccords pour les corriger.
Il se trouve à cet emplacement : Filtres -> Divers -> Translation. Une fenêtre de réglages s’ouvre. Idéalement, il faut y indiquer la moitié de la taille de notre image : 1024/2 = 512, pour X et Y. On valide et on voit le résultat. Les faux raccords devraient être bien visibles désormais.

2014-02-13 10_10_06-AncientPavement_A_1024

Et bien le travail consiste à dessiner le contour des pierres, pour avoir un tracé qui soit agréable à l’œil, même si ça n’est pas bien droit. Au contraire, ça rend les contours du motif moins identifiables. Attention à ne pas retracer les contours qui se trouvent maintenant sur les bords du document, car on risquerait d’avoir à les retracer aussi avant l’export pour ZBrush.
Quand la correction est faite, très important, il faut revenir à la disposition originale de la texture (quoique en l’état elle se répète bien), en appliquant une fois de plus le filtre Translation, avec les même valeurs.

2014-02-13 10_16_53-AncientPavement_A_1024

Enfin, avant d’exporter ce motif pour ZBrush, on va modifier les couleurs pour bien distinguer la pierre des interstices. On dé-sature l’image, et on augmente les contrastes, et voilà la texture prête à faire office de pochoir !

2014-02-13 10_16_55-AncientPavement_A_1024

On peut passer à ZBrush désormais.

Partie préparation(ZBrush)

Première chose à faire, c’est de définir la taille du document ZBrush, pour qu’il corresponde au ratio de notre texture. Ça va aider plus tard pour la bonne répétition du pochoir.
Il faut se rendre dans le menu Document, et plus bas, se trouvent les dimensions en X et Y. Désactivez le gros bouton « Pro« (-portional) au préalable, car il sert de contrainte de ratio. Quand c’est fait, vous n’avez plus qu’à cliquer sur « New Document« , placé trois étages au dessus, et ensuite confirmer votre choix.

2014-02-12 11_43_13-ZBrush

Deuxième chose à faire, activer la TimeLine, si elle n’était pas déjà visible. Il faut se rendre pour cela dans le Menu Movie -> TimeLine, et cliquer sur « Show« .

Pourquoi avoir besoin de la TimeLine, alors qu’on ne va pas faire d’animation ?

C’est vrai, on ne va pas faire d’animation. Mais le gros avantage ici, c’est que la TL va nous permettre de garder en mémoire la position et l’orientation exacte d’un ZTool, et d’y faire appel à tout moment, car par défaut ZBrush ne nous permet pas de sauvegarder la position et la rotation par objet, comme le ferait un logiciel 3D classique. Sans cela, ça rendrait l’application d’un pochoir très aléatoire.

Partie Création

Ensuite, pour le choix de la primitive, on va très simplement prendre un Plane3D, qu’on va immédiatement convertir en PolyMesh3D, pour le sculpter.

Bien, on va charger la texture qu’on a créée, pour en faire un pochoir (un Stencil, dans ZBrush). Pour cela, il faut aller dans le menu Alpha -> Import… Puis on désigne la bonne texture, et quand c’est fait, il faut, plus bas dans le menu, ouvrir la sous-palette « Transfer« , et cliquer sur « Make St » (Make Stencil). Voilà pour ça !


Et pourquoi on fait un Stencil au lieu d’utiliser simplement la texture en Alpha ?

Pour la simple et bonne raison que le Stencil est calé sur les bords du document, et donc ne bougera pas, alors que l’Alpha sera appliqué uniquement selon l’endroit où l’on clique, donc source d’approximation.
Maintenant il s’agit d’aller dans le menu « Stencil« , pour activer le pochoir à proprement parler. Problème, par défaut, celui-ci n’est pas aligné au centre du document.
Pour ma part, j’ai activé « Stretch« , puis j’ai augmenté le nombre « Alpha Repeat » à 3, afin d’avoir au moins 1 motif en entier, et suffisamment dégagé des bords du document.

2014-02-12 13_51_23-ZBrush

2014-02-12 13_53_04-ZBrush

2014-02-12 13_53_04-ZBrush

Ensuite, il s’agit de positionner le PolyMesh sous ce motif, là aussi en se gardant de l’espace tout autour. Quand il est en place, il faut créer une clé dans la TimeLine, simplement en cliquant dans celle du bas, à un instant quelconque. La nouvelle clé est en orange plein.

2014-02-12 13_55_17-ZBrush

Ne pas hésiter à vérifier qu’elle correspond bien à l’emplacement souhaité en déplaçant le plan, puis en manipulant la tête de lecture !
Et, dernière chose avant de commencer à subdiviser , il faut se rendre dans le sous-menu MorphTarget, situé dans « Tool« , et cliquer sur StoreMT. Il faut le faire tant que le plan est encore plat. J’expliquerai plus tard l’utilité de cette option.

2014-02-12 13_58_00-ZBrush 2014-02-12 13_58_06-ZBrush

Maintenant que ces préparations sont faites, on peut donc commencer le transfert de relief !
Désactivez « Smt » (Smooth) dans la partie Geometry du même menu Tool. Même si les bordures sont déclarées comme « Dures » (Creased) dans ZBrush, cela évitera que le plan n’ait les bordures courbées par la subdivision, de toutes façons.
Pour la brosse qui servira à appliquer le pochoir, je préconise la brosse « Layer » (raccourci : B + L + A), car elle préserve les reliefs existants, et l’on peut repasser plusieurs fois au même endroit, elle ne s’accumule pas, et elle projette dans une même direction.

Ne surtout pas utiliser la brosse « Standard », car elle va faire gondoler le sol.

Idem pour la brosse ClayBuildup, car elle est accumulative. La brosse Clay n’a pas cette caractéristique, et pourrait être retenue, mais par sûreté je préfère prendre Layer, car je n’ai pas besoin de rajouter un relief autre que celui du pochoir, CQFD.
La suite est assez directe : on dessine sur toute la surface du plan, ce qui va appliquer le pochoir, on subdivise, on dessine, on subdivise encore, et on répète l’opération jusqu’à arriver au niveau 7.
On dispose d’un plan faisant plus de 4 millions de polygones, ce qui est plus que suffisant.

2014-02-12 14_15_39-ZBrush

On aurait même pu s’arrêter un cran avant, à 1.05 million, mais on n’aurait pas atteint le nombre de pixels existants pour  occuper l’intégralité d’une texture de 1024px de côté (1024 x 1024 = 1.048.576), compte tenu de la marge qu’on s’est donnée autour du motif sur le plan. Et oui, il y a un peu de déchet sur les côtés, donc tous les polygones ne seront pas exploités pour exporter les textures.
J’en profite aussi pour dire que la taille de la texture qui sera exportée sera de 2048 px de large, donc deux fois plus grande que ce qu’il nous faut. On laisse ainsi, car il est préférable d’avoir beaucoup de marge pour réduire la taille de cette image, plutôt que de se retrouver avec une textures d’une taille inférieure, ce qui se paye forcément par une qualité détériorée.
Bien, maintenant que le relief est posé, on va pouvoir lisser les contours des dalles, et ajouter les détails. C’est un processus qui s’annonce minutieux.

2014-02-12 14_29_52-ZBrush

Pour lisser les contours, j’utilise TrimDynamic (Raccourci : B + T + D), en conjonction avec le PenMask (CTRL + dessin sur la surface), pour protéger les arêtes voisines. Ainsi, cela polit les arrêtes franches.
Pour donner de l’élévation aux pierres, j’utilise Clay (B + C + L), mais sans Alpha, et j’atténue aussitôt avec la brosse Smooth (SHIFT). Pour les griffures, c’est avec la brosse DamStandard (B + D + S), mais que j’emploie avec un autre alpha, bien plus petit, c’est l’alpha 40.
Au bout du compte, vous devriez obtenir ceci :

2014-02-12 14_37_45-ZBrush

Pour exporter la Normal Map, il faut replacer le niveau de subdivision au plus bas de l’objet, c’est à dire 1. C’est là qu’on s’aperçoit que notre plan n’est plus tout à fait plan ! C’est pour cela que je vous ai demandé de créer une MorphTarget en début de processus, car celle elle qui va nous rendre un plan intact.

Pourquoi est-ce important ?

Parce que pour calculer les normales, ZBrush va analyser la différence de distance entre les géométries de bas niveau et de haut niveau. La distance qui sépare les points entre eux influence directement le résultat de la Normal Map. Si l’on avait pas rétabli la planéité de l’objet, le relief de la Normal Map serait plus faible qu’il ne l’est en réalité, alors que calculé sur un objet plat (ce qui est le cas pour mon besoin), la texture générée sera davantage fidèle à ce que j’ai sculpté !
On permute donc les MorphTarget, et on peut s’intéresser à la création de Normal Map.
Dans le panneau Normap Map, ne pas oublier d’activer « Tangeant« , sinon la texture ne sera pas utilisable, car en world-space, et pas en tangeant-space comme il nous le faudrait, ainsi que le petit bouton « FlipG« , qui va inverser la provenance de l’axe Y… Qui a un impact sur le relief.
On clique sur « Create Normal Map« , puis on laisse Zbrush faire ses calculs… Et la petite vignette bleutée s’affiche, signe que la texture est prête, mais pas encore sortie de ZB !
Si vous ne connaissez pas déjà la manipulation, la voici alors : toujours dans ce même espace, cliquez sur « Clone NM« , ce qui va la copier dans le menu « Texture« . Dans cet autre menu, une fois sélectionnée, il faudra cliquer sur « Export« , et choisir un nom et un format de fichier pour cette texture.
J’ajoute que d’ordinaire ZBrush travaille avec l’axe Y des textures inversé par rapport aux autres logiciels, mais la situation actuelle , celle-ci est dans le bon sens, et m’épargne donc d’avoir à faire l’opération moi-même dans Photoshop.

Retour dans l’éditeur d’image

Enfin, revenons sur notre texture originale en 1024 px, dans laquelle on insère la Normal Map en 2048 px, et que la réduction va nous permettre de recaler plus ou moins exactement sur les pixels existants, compte tenu de la marge qu’on s’était donnée. C’est la seule partie vraiment manuelle, mais d’après moi si vous faites le calage sérieusement, vous n’avez qu’une marge d’erreur d’un ou deux pixels, ce qui ne se verra pas dans notre cas.

2014-02-12 15_07_30-AncientPavement_A_1024

Voici un petit aperçu dans un moteur temp-réel de la surface, sans Normal Map, et avec.

2014-02-13 11_35_312014-02-13 11_35_56

Cela m’a demandé trois heures pour faire le processus, en comptant les essais et erreurs, et on pourrait améliorer cette texture en y rajoutant davantage de détails fins.
J’espère que ce processus vous donnera d’autres idées, ou d’oser expérimenter de nouvelles textures !

This is a unique website which will require a more modern browser to work!

Please upgrade today!