From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Le “Baking” (~= “cuisson”), en général, est le fait de pré-calculer quelque chose de manière à accélérer d’autres processus par la suite. Tous rendre d’un coup demande beaucoup de temps, en fonction des options que vous avez choisies. En conséquence, Blender vous permet de pré-calculer (“cuire”) certaines parties de votre rendu en avance, pour des objets choisis. Lorsque vous pressez ensuite RENDER, la scène entière est rendue beaucoup plus vite, puisque les couleurs de ces objets n’ont pas besoin d’être recalculées.

“Baking” du rendu

Mode: Tous les Modes sauf Sculpt

Panneau: Contexte Scene (F10) → sous-contexte Render → panneau Bake

Raccourci clavier: CtrlAltB

Menu: RenderBake Render Meshes


Description

L’onglet Bake dans les boutons Render.

Le “baking de rendu” crée des images bitmap 2D de la surface rendue d’un objet mesh. Ces images peuvent être re-plaquées sur l’objet en utilisant ses coordonnées UV. Ce processus est effectué indépendamment pour chaque mesh, uniquement s’ils ont été “dépliés” (“unwrapped”, “dépliement” du mesh sur un plan : processus similaire à la transformation d’une mappemonde en carte papier). Bien que cela prenne du temps à mettre en place et à calculer, cela diminue le temps de rendu final. Si vous rendez une longue animation, le temps passé au baking peut être bien inférieur à celui gagné au rendu final.

Utilisez Render Bake dans les scènes (ab)usant intensivement des lumières/ombrages, comme l’AO (Ambient Occlusion, occlusion ambiante) ou les ombres douces produites par les lampes Area. Si vous pré-calculez l’AO pour les objets principaux, vous pouvez ensuite la désactiver lors du rendu final (beaucoup de temps de gagné !).

Utilisez Full Render ou Textures pour créer une texture image ; les textures procédurales pré-calculées peuvent être utilisées comme bases pour de la peinture de texture. Utilisez Normals pour faire apparaître un mesh basse-résolution comme étant un mesh haute-résolution. Pour cela, “UV-dépliez” un mesh haute-résolution, finement sculpté, et pré-calculez ses normales. Enregistrez cette “normal map” (“carte des normales”), et UV-plaquez-la (onglet Map To, dans les réglages de matériau) sur un mesh basse-résolution “déplié” de la même manière. Le mesh basse-résolution aura alors le même aspect que le mesh haute-résolution, mais avec beaucoup moins de faces.

Avantages 
Peut réduire significativement les temps de rendu ;
Facilite la peinture des textures ;
Permet de diminuer le nombre de polygones ;
Le temps gagné aux rendus augmente avec le nombre de ceux-ci.
Désavantages 
Les objets doivent être “dépliés” (unwrapped) ;
Si les ombres sont pré-calculées, les lampes et les objets ne peuvent bouger les uns par rapport aux autres ;
Les grandes textures (par ex. 4096×4096) peuvent prendre beaucoup de mémoire, et rendre cette solution aussi lente qu’un rendu complet ;
Il faut passer beaucoup de temps (humain) à “déplier”, pré-calculer, enregistrer les fichiers et les appliquer aux modèles.

Vous appliquez l’image des normales pré-calculées comme une Normal Map, via l’un des canaux texture.

Options

Full Render
Pré-calcule tous les matériaux, textures et éclairages, sauf la spécularité et le SSS.
Ambient Occlusion
Pré-calcule l’occlusion ambiante (réglée dans les panneaux World – F8). Ignore toutes les lampes dans la scène.
Normals
Pré-calcule les tangentes et les normales en espace caméra (parmi bien d’autres choses), et les stocke dans une image RGB.
Textures
Pré-calcule simplement les couleurs des matériaux et textures, sans ombrage.
Clear
Si sélectionné, efface l’image avec la couleur de fond sélectionnée (par défaut, le noir) avant de lancer le baking.
Margin
Le résultat du pré-calcul est étendu sur plusieurs pixels autour des bords de chaque “île” UV, pour adoucir les “coutures” dans la texture.
Le mesh doit être visible au rendu
Si un mesh n’est pas visible dans un rendu “normal”, par exemple parce qu’il est désactivé pour le rendu dans la fenêtre Outliner, ou a le réglage DupliVerts activé, il ne pourra pas non plus être pré-calculé !


Options en développement (post v2.45)

L’onglet Bake dans les boutons Render. Version de développement.

Pour en savoir plus : Changements depuis v2.45 → “Baking Selected to Active” (en anglais).

Selected to Active
Des informations d’autres objets peuvent être utilisées lors du baking de l’objet actif, avec cette option activée.
Distance
Ce paramètre contrôle la distance maximale d’un point d’un autre objet par rapport au point de l’objet actif (NdT : pour que le premier soit considéré comme “l’alter-ego” du second ? Phrase originale : “The Distance parameter controls how far a point on another object can be away from the point on the active object.”). Seulement utile avec l’option Selected to Active activée.
Une utilisation typique est de créer un objet fortement détaillé (beaucoup de polygones), puis de pré-calculer ses normales vers un objet peu détaillé. La carte des normales peut alors être plaquée sur ce dernier, pour le faire apparaître plus détaillé qu’il ne l’est.
Displacement Map (nouvelle option pour le type de baking)
Similaire à la “cuisson” de cartes de normales, le baking de “cartes de déplacement” (“displacement maps”) peut aussi être effectué depuis un objet très détaillé vers un objet basse résolution, en utilisant l’option Selected to Active.
Quand vous utilisez ceci en conjonction avec des modificateurs Subsurf et Displacement dans Blender, il est nécessaire d’ajouter temporairement un modificateur Subsurf très fort au modèle “basse résolution” avant le baking. Cela signifie que si vous utilisez ensuite un modificateur Displacement par-dessus cette subdivision de surface, le “déplacement” sera correct, puisqu’il est enregistré comme la différence relative à la géométrie subdivisée, et non à la géométrie de base du mesh (qui peut être assez fortement modifiée par Subsurf). Plus le niveau de subdivision pour le rendu est élevé au baking, plus les “déplacements” seront précis. Cette technique peut aussi être utile quand vous enregistrez la carte de déplacement pour l’utiliser avec un moteur de rendu externe.

Les normales peuvent maintenant être pré-calculées dans différents espaces :

  • Camera space – La méthode déjà existante.
  • World space – Les normales dans les coordonnées du monde, dépendant des transformations et déformations des objets.
  • Object space – Les normales dans les coordonnées objet, indépendant des transformations de l’objet, mais pas de ses déformations.
  • Tangent space – Les normales dans les coordonnées de l’espace tangentiel, indépendant des transformations et déformations de l’objet. C’est la nouvelle option par défaut, et le bon choix la plupart du temps, puisque cette carte des normales peut aussi être utilisée pour les objets animés.

Pour les matériaux, vous retrouvez les mêmes options d’espace pour les normales, dans les boutons Texture, à côté du bouton Normal Map déjà présent. Pour des résultats corrects, la même option devrait être choisie ici et au baking. Notez que cela remplace le réglage NMap TS dans les options du matériau, qui est automatiquement converti vers l’option Tangent space de la texture.

Mise en œuvre

Blender sous Windows : AO d’abord
Si vous utilisez Blender sous Windows, vous devrez pré-calculer l’occlusion ambiante (AO) en premier. Sinon, vous aurez le message d’erreur suivant : No Image to Bake To (“Pas d’image où enregistrer les résultats du baking”), vous ne pourrez rien pré-calculer pour ce mesh, et devrez redémarrer Blender.


  1. Dans une fenêtre 3D, sélectionnez un mesh et passez en mode UV/Face Select.
  2. “Dépliez” le mesh.
  3. Dans une fenêtre UV/Image Editor, créez une nouvelle image ou ouvrez-en une déjà présente. Si votre vue 3D est en mode d’affichage Textured, vous devriez maintenant voir cette image plaquée (“mapped”) sur votre mesh. Assurez-vous que toutes les faces sont sélectionnées.
  4. Avec le curseur de votre souris dans la vue 3D, tapez CtrlAltB pour afficher le menu des pré-calculs disponibles. Ou bien accédez au panneau Bake (fenêtre Buttons, contexte Scene (F10), boutons Render).
  5. Pré-calculez le type d’image désiré : Full Render, Ambient Occlusion, Normals, ou Textures (sans ombrage)…
  6. Après les calculs, Blender remplace l’image par celle produite par ceux-ci.
  7. Enregistrez l’image depuis l’UV/Image Editor, via ImageSave (AltS).
  8. Affinez l’image avec le processus décrit ci-dessous, ou améliorez-la avec la fonction Texture Paint ou un éditeur d’image externe.
  9. Appliquez l’image au mesh comme une texture UV. Pour les cartes “displacement” et “normal”, voyez « “Bump Maps” et “Normal Maps” ». Pour les pré-calculs complets et texture, voyez « Textures ». Dans tous les cas, vous utiliserez (dans Map Input) la carte UV utilisée lors du baking.

Le rendu baking et des options supplémentaires sont disponibles dans les boutons Render, onglet Bake. L’image enregistrée peut maintenant être assignée comme texture image en utilisant les coordonnées UV, dans l’onglet Map Input des boutons Material (F5). Dans une situation de multiples cartes UV, les images peuvent être pré-calculées avec une carte UV (inactive), et utilisées avec une autre carte UV (active). Cela peut être utile pour enlever des coutures, ou pour certains moteurs de jeux qui réclament des réglages UV particuliers.

Raffiner les images pré-calculées

Mode: UV/Image Editor

Raccourci clavier: AltS

Menu: ImageSave

Après le baking, assurez-vous d’enregistrer l’image générée. Elle peut également être affinée, retouchée, dans l’UV/Image Editor, en utilisant la peinture de texture.

Exemples

Modèle “Adrianna” par Mr_Bomb ;
dépliage et textures par BgDM.
Carte UV pour le modèle Adrianna.

Ces exemples utilisent un modèle de tête humaine, et sa carte UV, montrés ci-dessus. Le mesh a été “découpé” sur le sommet du crâne, et de haut en bas sur l’arrière de la tête, puis “déplié” en utilisant la projection LSCM. Il a sept images et textures procédurales superposées, et est éclairé par une hémisphère de spots plus quelques lumières “d’accentuation”.

Pré-calcul d’occlusion ambiante.

Option Ambient Occlusion : génère un bitmap “déplié” du résultat de l’occlusion ambiante, ignorant tout éclairage. L’image AO est souvent multipliée avec les canaux couleur pour simuler l’auto-ombrage, l’éclairage doux, ou la saleté. Notez que si la texture montrée ici était simplement multipliée avec la texture “diffuse”, cette dernière serait fortement assombrie ; voyez plus loin pour un système de nœuds de compositing rendant plus clair et adoucissant le bitmap AO.

Pré-calcul des normales.

Un baking des Normals génère une carte RGB des normales dans l’espace caméra. L’orientation des normales du mesh relativement aux axes X, Y et Z de la caméra est enregistrée dans les canaux Rouge, Vert et Bleu respectivement. Dans cet exemple, la caméra a été dirigée sur le côté droit du modèle de tête, donc les faces côté droit sont fortement bleues puisqu’elles sont face (!) à la caméra et que leurs normales sont donc (plus ou moins) parallèles à l’axe Z de celle-ci. Les cartes de normales en espace caméra ont un intérêt limité : elles vous permettent de simuler un mesh haute-résolution avec un mesh basse-résolution, mais cela ne fonctionne que si on le regarde depuis l’emplacement de la caméra (en l’occurrence, sur le côté droit de la tête). La solution à ce problème est une carte des normales en “espace tangentiel” (“Tangent space”), qui est indépendante de la position de la caméra ou des déformations d’objet. Blender peut pré-calculer beaucoup de types de carte différents, voyez « “Bump Maps” et “Normal Maps” ».

Pré-calcul des textures seules.

L’option Textures rend tous les matériaux et textures en ignorant totalement tout éclairage, AO et ombrage (similaire au rendu Shadeless). L’exemple ci-dessus comprend les textures couleur et bump, deux textures Clouds, et une discrète texture de dégradé linéaire (Blend). Un des usages possibles de ce type de rendu est de le multiplier avec une image AO au compositing.

Pré-calcul de rendu complet.

La “cuisson” Full Render prend en compte l’éclairage/ombrage, les matériaux, les couleurs des vertices, le bump, et l’AO si possible. Il n’inclut pas la spécularité ni la “dispersion subsurfacique” (“subsurface scattering” ou SSS), car ils dépendent du point de vue. Ce mode ne supporte pas non plus les matériaux de type Halo. Il peut être utile pour gagner du temps au rendu de scènes ou d’objets statiques : par exemple, les ombres douces d’un arbre ou d’un meuble projetées par une lampe Area (lent à rendre) peuvent être pré-calculées et “peintes” dans la scène (très rapide à rendre), et resteront convaincantes tant que l’objet ou la lampe ne bougent pas.

L’option Margin fait “dépasser” les pixels sur les bords de la carte UV.

L’option Margin ajoute le nombre indiqué de pixels au-delà des bords de la carte UV. Peut être utile pour minimiser les coutures lorsque l’image est re-plaquée sur le mesh. Si aucune valeur n’est rentrée, un pixel est ajouté par défaut.

Plaquer les images pré-calculées

Quand vous avez pré-calculé le mesh, vous étiez en mode UV Face Select. Enregistrez ou empaquetez l’image ainsi créée, puis, en fonction de l’option choisie, plaquez-la sur le mesh en utilisant la méthode adéquate :

Full Render
Dans les réglages matériau de l’objet, activez TexFace, ce qui indique à Blender de ne pas utiliser les réglages du matériau procédural pour calculer les couleurs du matériau, mais la texture UV plaquée sur le mesh d’après la carte UV.
Ou bien, créez un canal texture pour le matériau. Dans l’onglet Map Input, activez UV, et sélectionnez/créez la texture UV dans l’onglet Texture (UVTex par défaut). Dans l’onglet Map To, activez Colour (couleur). Passez aux boutons Texture, choisissez Image comme type de texture, et chargez l’image en sélectionnant Load New dans la liste déroulante.
Quelle que soit la méthode choisie, TexFace ou canal Texture, puisque Full Render prend aussi en compte l’éclairage, vous devriez aussi activer Shadeless dans l’onglet Material. Lors du rendu final, Blender ne perdra pas son temps à recalculer les effets d’éclairage sur les matériaux Shadeless, gagnant beaucoup de temps de rendu.
Ambient Occlusion
Ajoutez un canal texture, et activez le plaquage UV dans l’onglet Map Input, comme décrit ci-dessus. Dans l’onglet Map To, activez Col mais modifiez la méthode de mélange à Multiply. Blender va maintenant multiplier les canaux textures “du dessus” avec la texture AO, assombrissant les couleurs dans les craquelures et les fissures.
Normals
Ajoutez un canal texture et chargez l’image des normales pré-calculées. Assurez-vous d’activer Normal Map dans l’onglet Image (boutons Texture). Activez UV dans l’onglet Map Input, et dans l’onglet Map To, activez Nor et désactivez Col. Pour les normales en espace caméra, n’utilisez pas NMap TS dans le shader ; cette option est uniquement destinée aux normales en “espace tangentiel”.
Textures
Ce pré-calcul inclut tous les matériaux, mais aucun éclairage/ombrage.


Raffiner l’image d’occlusion ambiante

L’image pré-calculée de l’AO sera souvent sombre et granuleuse. Gardez à l’esprit que cette image sera multipliée avec le reste du matériau, donc si elle est sombre, elle assombrira tout le mesh. Si elle est granuleuse, elle rendra votre mesh sale ou tacheté. Si cela arrive, essayez d’augmenter le nombre d’échantillons (Samples) et de désactiver Noise.

Système de compositing suggéré pour les images AO.

Nous vous recommandons d’enregistrer les images AO pré-calculées dans des fichiers de la forme “<objet>-AO.<ext>”, où “<objet>” est le nom de l’objet sélectionné, et “<ext>” est l’extension du format choisi (tga pour du Targa, jpg pour du Jpeg, etc.). Notez que si vous avez Extensions activé dans les boutons Render, Blender ajoutera automatiquement l’extension à votre place.

En dernier ressort, et bien que techniquement peu précis, vous pouvez flouter l’image pour l’adoucir, et augmenter sa dynamique. Pour cela, passez à une fenêtre de nœuds de compositing et construisez le système montré ci-dessus. Placez l’image AO en entrée avec un nœud Image. Le nœud Blur enlèvera la grain, le bruit, et le nœud ColorRamp corrigera l’image de manière que les parties les plus claires de l’image soient bien blanches (1.0).

Dans une fenêtre UV/Image Editor, sélectionnez l’affichage Viewer Node, puis enregistrez l’image corrigée, par exemple sous un nom du type “&lg;objet>-AOK.<ext>”. Utilisez maintenant ce fichier corrigé comme image AO, et il ombrera délicatement et en douceur votre mesh pour l’occlusion ambiante.

Appliquer des normales “haute-résolution” à un mesh “basse-résolution”

Une des ficelles du métier, surtout dans les jeux vidéo, consiste à améliorer le rendu d’un modèle avec peu de polygones (par défaut, très anguleux), en en modelant deux versions : une avec peu de polygones, l’autre en haute résolution. Puis, vous pré-calculez la carte des normales du modèle haute définition, ce qui vous donne une texture image qui montre tous les plis, ombres, et autres petits détails. Appliquez ensuite ces images au modèle basse-résolution, et vous gagnez beaucoup de temps que vous auriez sinon dû passer à peindre la texture du modèle basse-résolution. Pour des explications détaillées sur les “normal maps”, voyez « “Bump Maps” et “Normal Maps” ».

Grâce à l’option Selected to Active qui vous permet de “cuire” un objet sélectionné “à partir” de l’objet actif, vous n’êtes pas obligé de déplier le mesh haute-définition. Voici la marche à suivre :

  1. Faites une copie de votre objet ;
  2. Dépliez la copie en basse résolution ;
  3. Ajoutez une nouvelle image au dépliage du mesh via la fenêtre UV/Image Editor ;
  4. Assurez-vous que les objets haute-définition et basse-définition sont situés exactement à la même position dans Blender (les avoir sur deux calques différents peut aider – vous pouvez travailler dans un calque à la fois, puis les sélectionner tous deux avant “cuisson”) ;
  5. Sélectionnez l’objet haute-définition, puis l’objet basse-définition (clic ⇧ ShiftRMB Template-RMB.png) : tous deux sont maintenant sélectionnés, le second étant l’objet actif ;
  6. Dans le panneau Render, activez l’onglet Bake ;
  7. Choisissez le type de carte que vous voulez “cuire” (Normal ou Displacement) ;
  8. Activez le bouton Selected to Active ;
  9. Cliquez sur Bake.


Astuces

Actuellement (Blender v2.45), seuls les objets mesh peuvent être pré-calculés en rendu.

Les images pré-calculées ne sont pas automatiquement enregistrées. Faites le depuis la fenêtre UV/Image Editor, avec le menu ImageSave (ou AltS).

Le “baking” peut être interrompu par la touche Esc.

Si vous déplacez les lampes, vous devriez relancer tous les bakings Full Render. Si vous modifiez le mesh, vous devriez tout recalculer.

Si vous modifiez le matériau de l’objet, vous devriez relancer les bakings Textures et Full Render pour que ces changements prennent effet.

Les textures procédurales (par ex. Clouds) peuvent être pré-calculées avec les options Full Render ou Textures, vous fournissant une base pour des textures plus avancées. Utilisez les matériaux Shadeless (sans ombrage) si nécessaire.

Si vous obtenez le message d’erreur “No images found to bake to”, contrôlez les points suivants :

  1. L’objet est sélectionné ;
  2. Assurez-vous qu’il y a une nouvelle image (avec la grille de test UV) chargée pour le baking ;
  3. Si cela ne donne toujours rien, passez en mode Object, sélectionnez l’objet, et essayez de lancer le baking ;
  4. Essayez ImageNew de nouveau dans l’UV/Image Editor, et pré-calculez l’AO avant tout autre.


“Normal map” de Blender vers xNormal/Maya

Convertir une carte des normales de Blender vers le format xNormal.

L’outil de baking de normal map de Blender est différent de celui d’autres programmes, comme xNormal et Maya. Ces deux-là sont largement utilisés par l’industrie des jeux vidéo et ont déjà fait leurs preuves en production (ce qui signifie que la façon dont ils calculent et stockent leurs normal maps est plus couramment utilisée et peut être vue comme un standard). Pour convertir une carte des normales Blender au format xNormal, vous devez inverser les canaux rouge (Red) et vert (Green), ce qui est aisément accompli par le système de nœuds montré ci-contre. Utilisez le nœud d’entrée Image pour charger les normales “cuites” par Blender. Envoyez cette image à un nœud RGB Curves. Dans les canaux rouge et vert, cliquez-tirez l’extrémité gauche de la courbe tout en haut, et l’extrémité droite, tout en bas, afin que la courbe dessine une diagonale descendante comme dans l’illustration ci-contre. Il ne vous reste qu’à relier la sortie Image de ce nœud au nœud de sortie Composite, à activer Do Composite dans les réglages de rendu, à faire un “rendu”, et à enregistrer l’image produite.