Le baking : procédure simple

Attention

Il est essentiel, avant de commencer cette étape, de s'assurer qu'on dispose d'un maillage valide, sans normale inversée, sans vertex isolé, sans face mal soudée et sans ilot de polygones inutiles sans quoi l'opération de baking produira des résultats mauvais voire aberrants.

Pour les mêmes raisons, il est également vital d'être sûr que le maillage et les points pivots du LowPoly et du Highpoly sont orientés dans la même direction et que leur échelle respective est concordante : les problèmes éventuels de baking viennent très fréquemment d'une erreur à ces deux niveaux.

Étapes

  • Baking des quatre textures de base avec Substance Designer : Diffuse, Bent Normal Map, Normal Map et Occlusion
  • Transformation de la Bent Normal Map en Height Map
  • Optimisation de la texture Diffuse
  • Création de la texture Glossiness à partir des autres textures
  • Exportation

Baking des textures avec Substance Designer

  1. Sélectionnez le menu File>New Substance. Dans la fenêtre qui apparaît, choisissez un template Empty et validez : dans la fenêtre Explorer, en haut à gauche de l'interface, doit apparaître une ligne Unsaved Package et en-dessous, une ligne New_Graph.
  2. Glissez-déposez le fichier du LowPoly mappé sur la ligne Unsaved Package : un nouveau dossier Ressources apparaît. Cliquez sur la petite flèche à côté du dossier pour déplier son contenu et faites un clic droit sur la ligne portant le nom du LowPoly : dans le menu qui apparaît, choisissez Bake model Information.
  3. La fenêtre qui s'ouvre est celle dans laquelle se paramètrent toutes les options du baking :Parametrage baking SD
    1. Dans la zone Setup High Definition Meshes, chargez le modèle HighPoly
    2. Sélectionnez un dossier de destination dans lequel les textures seront sauvegardées
    3. Paramétrez Set Distance Value sur une valeur appropriée pour le modèle (pour les détails, voir ci-après : Distance et normales, un peu de théorie). Dans le cas de l'exemple du buste, la valeur optimale est d'environ 0.1
    4. Avec le bouton Add Baker, ajoutez les différentes textures que vous voulez créer. Normalement, pour pouvoir les utiliser directement comme matériau PBR, ces textures devraient être : Transferred texture from mesh, Normal Map, Height Map et Ambiant Occlusion Map. Pour des raisons expliquées dans la partie suivante, il est préférable de générer une Bent Normal Map à la place ou en plus de la Height Map. Ces quatre textures sont nécessaires et indispensables, mais peuvent être complétées par d'autres en fonction de l'objet et des effets de matière désirés : Transparency, Thickness, Emission, etc.
    5. Sélectionnez un format de fichier et une taille de texture (TIFF et 2048 dans le cas du buste en plâtre). Enfin, la valeur de l'Antialiasing devrait être à 2x2 ou 4x4 (l'absence d'antialiasing produit des textures de mauvaise qualité, tandis qu'un antialiasing de 8x8 impose des temps de calcul très longs sans présenter de différence notable avec le 4x4).
    6. Cliquez sur le bouton Start Render pour lancer le baking. En fonction de la taille, du nombre de textures et du type d'antialiasing sélectionné, le calcul peut prendre de quelques minutes à plusieurs dizaines.

UV_HighPoly   UV_LowPoly_Bake

A gauche, la texture exportée par le logiciel de photogrammétrie ; à droite, la même texture après le baking : les différentes parties, très dispersées pour le modèle HighPoly sont réorganisées grâce à l'étape précédente du mapping et rendent d'éventuelles retouches beaucoup plus simples à effectuer.

A l'issu de l'étape du baking, on dispose au minimum des quatre textures suivantes : Diffuse map, Normal map, Bent Normal map et Ambiant Occlusion. Éventuellement une cinquième texture, la Height map, vient compléter l'ensemble... lorsqu'elle est exploitable.

Buste platre texture Height Bad    Buste platre texture 3D Height Bad

La texture Height bakée par xNormal présente une sorte de facettage qui produit, une fois appliquée au LowPoly, un effet peu exploitable ! Le problème peut venir d'un mauvais paramétrage de la Height map ou d'une structure 3D difficile à gérer pour le logiciel de baking.

Pour un matériau diélectrique (ce qui est le cas du plâtre pour le buste) les logiciels de rendu PBR temps réel nécessitent cinq textures pour obtenir un rendu aussi proche que possible de l'objet original : Diffuse, Roughness, Ambiant Occlusion, Height et Normal. Il manque donc deux textures (Roughness et Height) qu'il faut créer en combinant les textures disponibles.

Optimisation des textures bakées et création de la texture Glossiness

Dans cette partie, il s'agit de :

- Traiter les map Diffuse, Ambiant Occlusion et Normal pour les optimiser : essentiellement, le traitement consiste a diminuer les ombres dans la texture Diffuse si elle en contient, en lui soustrayant la texture Ambiant Occlusion, éventuellement à saturer les couleurs pour les rendre plus perceptibles et enfin à restreindre l'histogramme à des valeurs comprises entre 30 et 230. Les textures Ambiant Occlusion et Normal n'ont en général que très peu besoin d'être retouchées.

- Créer la texture Height a partir de la Bent Normal : l'opération est assez simple et permet de générer une texture Height fiable si le baking n'a pas permit d'en créer une exploitable directement.

- Créer la texture Glossiness / Specular : Cette texture n'existant pas, elle est produite en combinant les textures Normal, Diffuse et Ambiant Occlusion.

- Créer éventuellement des textures supplémentaires (Emissive, Transparency, etc.) : Si des effets particuliers qui ne peuvent pas être isolés à la prise de vue doivent être ajoutés, les textures appropriées doivent être créés. Soit elles sont produites en combinant des textures déjà existantes, soit elles peuvent être produites lors du baking (par exemple la texture Thickness), soit elles peuvent être réalisées manuellement (mais dans ce cas, Substance Designer n'est pas idéal, il faut lui préférer Substance Painter).

Comme pour le baking, l'ensemble des étapes se déroulent dans Substance Designer (le nom de chaque node utilisé est indiqué). Pour rappel, sous chaque node se trouve une information indiquant la façon dont l'image est encodée à cette étape : la première lettre indique soit un encodage linéaire (L) ou avec une correction Gamma (C), le chiffre qui suit indique la profondeur de l'encodage (8, 16 ou 32 bits par canal). La présence du F à la fin indique que l'encodage est fait en virgule flottante.

La texture diffuse :

Trois étapes sont nécessaires pour traiter la texture Diffuse : d'abord lui enlever les ombres indirectes en lui soustrayant la texture Ambiant Occlusion puis en utilisant le node Light Cancellation High Frequency, ensuite d'éventuellement corriger les intensités chromatiques, enfin de limiter leurs valeurs entre 30 et 230 environ. Dans Substance Designer, ces opérations donnent le schéma suivant :

SD Texture Diffuse

Pour la dernière opération qui consiste à tasser l'histogramme entre 30 et 230, il est conseillé d'activé la vue de l'histogramme de l'image : dans la vue 2D, cliquez sur le symbole d'histogramme, puis affichez les valeurs en 8bits. Dans le cas de l'exemple, une légère correction de -0.24 en contraste et 0.01 en luminosité permettent de ramener l'histogramme a des valeurs comprises entre 33 et 226.

Substance Designer Histogramme

Les textures Ambiant Occlusion et Normal :

Elles n'ont normalement aucun besoin d'être retouchées. S'il est possible de modifier le contraste et la luminosité de l'Ambiant Occlusion pour rendre les ombres indirectes plus ou moins marquées, il est fortemment déconseillé de toucher à la texture Normal. Celle-ci ayant une incidence sur la structure du maillage, les retouches auront pour conséquence de déformer l'objet 3D au niveau des détails

La texture Height :

Substance Designer dispose d'un node qui permet de convertir directement une texture Bent Normal en texture Height, simplifiant considérablement l'opération (xNormal est également capable de faire cette conversion). Une fois convertie, la texture doit avoir un histogramme aussi large que possible afin d'optimiser le résultat avec un node Auto Levels - s'il est trop prononcé, il est toujours possible de diminuer son effet dans les logiciels de rendu 3D temps réel. Enfin, il faut inverser le résultat pour que les parties les plus hautes soient en blanc et les plus basses en noir. Dans Substance Designer, ces opérations donnent le schéma suivant :

SD Texture Height

La texture Glossiness :

C'est la plus complexe des textures à produire. Comme elle décrit les zones plus ou moins lisses, plus ou moins brillantes de l'objet, et que celles-ci sont souvent plus présentes dans les zones convexes (les zones concaves ont tendance a accumuler la poussière ce qui les rend moins brillantes), on peut la produire en combinant les textures Diffuse, Ambiant Occlusion et Normal. La première phase consiste à transformer la texture Normal en texture Curvature avec le node Curvature Sobel qui traduit les parties convexes en blanc et les parties concaves en noir, puis à contraster l'image au maximum avec un Levels. Le résultat est combiné une première fois avec l'Ambiant Occlusion afin d'assombrir davantage les parties concaves (node Blend en mode Add), puis une deuxième fois avec la texture Diffuse (préalablement convertie en dégradés de gris) pour ajouter du détail (node Blend en mode Min). Le contraste de l'image résultante est retravaillée avec un node Levels avant d'étre à nouveau étalé sur l'ensemble de l'histogramme avec un node Auto Levels. Dans Substance Designer, ces opérations donnent le schéma suivant :

SD Texture Glossiness

Il ne reste plus qu'à exporter l'ensemble des textures (format TIFF en 2048x2048 dans le cas de l'exemple) en cliquant sur le bouton en forme d'engrenage en haut de la fenêtre du Graph.

Résultats :

A l'issue de cette partie, on dispose désormais de toutes les textures nécessaires pour le rendu PBR temps réel : Diffuse, Glossiness, Ambiant Occlusion, Normal et Height. A ce stade, il serait encore possible de retravailler ces textures de façon plus fine avec Substance Painter - c'est en général nécessaire si l'objet est composé de matériaux multiples.

Final Diffuse    Final Height

Diffuse / Glossiness

Buste platre texture Height    Final Normal

Height / Normal

Final AO

Ambiant Occlusion

Modifié le: mercredi 26 mai 2021, 15:10