Dans ce troisième tutoriel de la série consacrée au feu et à la fumée avec le simulateur Fluid de Blender 4.5, nous allons parler des méthodes utilisées par Blender pour effectuer et stocker le Bake, c’est à dire la simulation physique du feu et de la fumée.
Ce tutoriel fait partie d’une mini-série de 10 épisodes sur les bases du Feu et de la Fumée dans Blender 4.5. Pour voir la liste complète des épisodes, cliquez ici.
La version vidéo de ce tutoriel n’est pas actuellement disponible dans cette langue, mais elle est disponible en anglais en sélectionnant la langue correspondante en haut de la page.
Transcription de la vidéo
Bonjour à tous. Dans ce troisième tutoriel de la série consacrée au feu et à la fumée avec le simulateur Fluid de Blender 4.5, nous allons parler des méthodes utilisées par Blender pour effectuer et stocker le Bake, c’est à dire la simulation physique du feu et de la fumée. Nous verrons notamment comment calculer une seule fois la simulation pour un Domain afin de pouvoir le dupliquer et le placer dans d’autres zones de la scène sans recalculer toutes les copies. Enfin, nous verrons comment définir un Offset pour la lecture de la simulation, afin que l’animation commence avec un feu déjà en train de brûler plutôt qu’avec l’allumage initial de la flamme.
La scène de départ de ce tutoriel se compose d’un brasero contenant des bûches.
Il s’agit de deux meshes distincts, les bûches formant un seul mesh.
Le brasero repose sur un Plane rectangulaire qui sert de sol, et plus tard nous y placerons d’autres braseros. Le monde virtuel a une Strength de 0 et aucune source lumineuse. En mode Rendered, la scène apparaît donc complètement noire.
Comme nous l’avons vu dans les épisodes précédents, pour qu’un objet produise des flammes, il faut lui attribuer un composant Fluid de type Fire And Smoke Flow. J’ajoute donc un composant Physics Fluid aux bûches, en définissant Inflow comme comportement du composant, ce qui signifie que le bois générera des flammes à chaque frame.

Je crée ensuite un Cube, je lui attribue un composant Flow de type Domain et je fais en sorte qu’il englobe toute la scène au départ. Nous remarquons immédiatement un problème. La résolution par défaut est trop basse, ce qui produit des Voxels trop grands et rend les flammes beaucoup trop volumineuses par rapport aux objets qui les émettent.
Augmenter la résolution à 64 n’améliore pas beaucoup la situation et la simulation commence aussi à prendre plus de temps. Je ne souhaite même pas essayer d’augmenter davantage la résolution, car il est clair que ce n’est pas la bonne approche.

La solution la plus évidente consiste à redimensionner le Domain pour qu’il n’englobe que le brasero et un peu d’espace au-dessus, afin que les flammes et la fumée puissent se développer. Désormais, la résolution fonctionne même un peu trop bien. Elle est peut-être excessive, nous pouvons donc la ramener à 32 tout en obtenant des flammes bien définies. Le problème est plutôt que le bois produit beaucoup trop de feu.

Pour réduire la quantité de feu générée, nous pouvons ajuster le paramètre Fuel de l’objet Inflow. Intuitivement, plus la valeur de Fuel est élevée, plus de combustible sera brûlé à chaque frame. La solution consiste donc à diminuer cette valeur jusqu’à ce que les flammes atteignent une taille appropriée.
Comme mentionné dans les épisodes précédents, les données liées au Baking, c’est à dire au calcul de la simulation physique, sont stockées dans un dossier dédié dont le chemin est spécifié dans la section Cache de l’objet Domain. Avant de créer le Domain, j’ai enregistré le fichier sur le disque, donc le dossier de cache se trouve dans le même répertoire que le fichier projet Blender.
Dans la section Cache du Domain, nous pouvons définir la plage de frames sur laquelle calculer la simulation du Domain. Cette plage ne doit pas nécessairement correspondre à la plage d’animation de la scène. Cela peut être utile pour effectuer un Bake sur un nombre limité de frames afin d’avoir une idée du rendu du feu avant de lancer le Bake complet. Un autre cas d’utilisation se présente lorsque les objets Fluid ne sont pas dans le champ de la caméra, ce qui rend inutile le calcul de la simulation physique pour ces frames.
Avant d’examiner les autres paramètres de la section Cache, voyons ce qui se passe lorsque nous créons des copies de l’ensemble composé du Domain, du brasero et des bûches, ces dernières jouant le rôle d’objets Inflow, puis que nous plaçons ces copies dans la scène. Comme nous l’avons vu précédemment, un seul Domain couvrant toute la scène nécessiterait une résolution extrêmement élevée pour produire de belles flammes et laisserait beaucoup d’espace inutilisé. Pour ajouter plusieurs braseros, la seule option consiste donc à dupliquer l’ensemble complet.
Le problème est que lorsque l’on appuie sur Play dans la Timeline, Blender utilise le même dossier de cache pour tous les Domains, ce qui signifie qu’ils partagent les mêmes données de simulation. Si vous êtes certain de vouloir conserver les mêmes paramètres pour toutes les simulations, vous pouvez éventuellement essayer de tromper l’observateur en faisant pivoter légèrement les Domains ou en attribuant des Materials différents à chaque Domain afin de varier l’apparence des flammes au rendu.
Le véritable problème apparaît si nous modifions la résolution ou un autre paramètre d’un Domain, puis que nous relançons le Bake. Par exemple, je réduis la résolution des Domains plus éloignés, puisque nous n’avons pas besoin d’une haute résolution pour les objets d’arrière plan. Blender mélange alors réellement les données, car il s’agit du même ensemble de données volumétriques partagé par des objets ayant des caractéristiques différentes.

Si vous souhaitez que chaque Domain dispose de données clairement séparées, vous devez spécifier des dossiers de cache distincts pour chaque Domain avant de lancer la simulation. Inutile de préciser que cela augmentera considérablement l’espace disque utilisé par les données des différents Domains. Selon vos besoins, vous devrez choisir la stratégie la plus adaptée entre un ou plusieurs très grands Domains en dupliquant la même simulation, ou la création de caches séparés pour les différents Domains.
Jusqu’à présent, Blender calculait le Bake de la simulation chaque fois que nous appuyions sur Play dans la Timeline. Ce n’est pas le seul mode possible. Il en existe un autre qui permet également d’utiliser un outil très utile. Pour simplifier, je laisse un seul brasero avec son Domain dans la scène et je supprime les autres. Attention toutefois, car supprimer des Domains ne supprime pas leurs données du disque. C’est en réalité un avantage, car cela signifie que nous pouvons enregistrer et réutiliser les données de simulation plus tard. Mais dans ce cas précis, je n’en ai plus besoin, je vais donc les supprimer manuellement.
Dans la section Cache du Domain, nous trouvons le menu Type, qui est par défaut réglé sur Replay. C’est le mode que nous avons utilisé jusqu’à présent. Blender recalcule un nouveau Bake chaque fois que nous revenons à la frame 1 et que nous appuyons sur Play, en écrasant les données précédentes.

Le mode Modular permet d’effectuer des Bakes séparés pour différents aspects de la simulation. Cela peut être utile dans certains cas, pour examiner ou remplacer certaines parties individuellement sans devoir refaire l’intégralité de la simulation.
Le mode All permet quant à lui d’effectuer le Bake complet de la simulation, mais en le calculant en arrière plan et non dans la Timeline. Pour lancer le Bake, il faut cliquer sur le bouton Bake All dans le panneau. Blender affiche alors une barre de progression. Une fois le calcul terminé, vous pouvez appuyer sur Play dans la Timeline pour visualiser le résultat de manière beaucoup plus fluide, puisqu’il a déjà été pré calculé.
Pour modifier les paramètres de la simulation, vous devez d’abord supprimer les données existantes en cliquant sur le bouton Free All. Les paramètres redeviennent alors modifiables et vous pouvez les changer. Ensuite, vous devrez cliquer sur Bake All afin que Blender recalcule la simulation.
En consultant le dossier utilisé, vous pourrez vous faire une idée des différents modules ou étapes de baking qui sont calculés et stockés séparément lorsque vous utilisez les modes Modular et All.

Le mode All rend disponible le paramètre Offset, qui permet de résoudre un problème que vous avez peut-être déjà remarqué. Jusqu’à présent, toutes les simulations de feu commençaient par l’allumage de la flamme à la première frame de l’animation.
Ce n’est pas toujours souhaitable, car nous pouvons vouloir que l’animation débute avec un feu déjà en train de brûler.
Pour résoudre ce problème, nous pouvons saisir un nombre négatif dans le champ Offset.
L’infobulle précise que cela ne signifie pas que le Baking commencera plus tôt, mais simplement que la simulation sera lue comme si elle avait déjà avancé de ce nombre de frames à la première frame de l’animation.
La durée de l’animation en nombre de frames restera celle définie entre Frame Start et Frame End.
Dans ce cas, les 25 dernières frames de la Timeline restent sans simulation, car avec l’Offset nous avons demandé à Blender de lire la 25e frame de la simulation à la première frame de la Timeline.

Pour résoudre ce problème, il suffit de faire calculer davantage de frames par le Bake afin que la simulation couvre toute la Timeline. Je règle donc Frame End sur 275 dans la section Cache du Domain, je clique sur Free All, puis je relance le calcul en cliquant sur Bake All.