Light Green
Light Blue
Gris Souris
Simulation de Fluides avec Blender 2.40

Cette page présente quelques exemples et remarques sur le simulateur de fluides de Blender. Elle correspond à ma façon de voir les choses (et je ne suis pas allé voir dans le code ni dans les articles comment çà marche vraiment), donc elle est peut être fausse, mais elle peut toujours donner un point de départ ou dépanner dans certains cas.

Les remarques et exemples ci-dessous supposent que vous savez déjà vous servir de Blender et que vous avez déjà les bases de simulation de fluides (en particulier, vous connaissez déjà les étapes à suivre pour effectuer une simulation). Dans le cas contraire, vous devriez d'abord aller voir :

Le Paramètre "Resolution"

Ce paramètre se trouve dans les options de fluides attachées au domaine.

La résolution est le paramètre le plus important et celui qui est à la base de la majorité des problèmes que l'on peut rencontrer. Elle détermine la taille de l'élément de simulation qui est à la base des capacités du simulateur. En effet :

La taille de l'élément de simulation est obtenue en divisant la taille du domaine par la résolution. Ainsi si le domaine est un cube de 2 unités [1] de large, l'élément de simulation sera un cube de 0,02 unités de large.

Faire Couler le Fluide

La documentation officielle permet facilement d'obtenir des résultats en plaçant une grande quantité de liquide en haut du domaine et en regardant comment il s'écoule. Il est très légèrement plus délicat de faire couler du liquide à partir de l'extérieur du domaine (comme si on avait un robinet ou un jet d'eau). Voici un exemple :

Jet de liquide
XViD [1,7 Mo] / .blend [602 Ko]

En apparence, la solution est très simple : il suffit de sélectionner l'option Inflow dans le panneau Fluid Simulation de l'objet et de régler la vitesse initiale dans le même panneau. Cependant, très souvent le fluide n'apparaît pas.

Le problème vient du rapport de tailles entre la source de fluide (l'objet Inflow) et l'élément de simulation : si la source de fluide est plus petite que l'élément de simulation, il sera impossible de la représenter et le jet ne sera pas visible. Il est donc particulièrement important de veiller à ce que la source de fluide soit plus grosse que l'élément de simulation [2].

Régler le débit d'arrivée du fluide

Il n'est pas possible de régler directement le débit d'arrivée du fluide (en m³/s). Cependant, le débit est lié à la vitesse et à la section par la relation : Q=S·v. La section est difficile à régler précisément, mais la vitesse est directement accessible dans le panneau Fluid Simulation et permet d'ajuster le débit.

Éviter que le récipient ne déborde

Dans l'exemple précédent, le récipient se remplit au fur et à mesure que le temps passe. L'exemple ci-dessous évite ce phénomène et permet de réaliser une fontaine dont le bassin ne déborde pas :

Fontaine
XViD [1,0 Mo] / .blend [607 Ko]

L'astuce consiste à placer dans le bassin un objet de type Outflow. Cet objet évacuera tout le fluide qui pénétrera à l'intérieur. Là encore il faut veiller à ce que l'objet soit plus grand que l'élément de simulation, faute de quoi il risque d'être ignoré.

Ajouter des Obstacles

Ce n'est pas très difficile d'ajouter des obstacles à la simulation : il suffit d'activer l'option Obstacle du panneau Fluid Simulation. Cependant, il y a deux points très importants auxquels il faut faire attention :

Voilà donc deux exemples de fluides avec obstacles :

Tobogant
XViD [560 Ko] / .blend.gz [437 Ko]

Lavabo
XViD [477 Ko] / .blend

Remarques concernant le réalisme

Très souvent, les simulations de fluide ont un aspect un peu visqueux. Il est très difficile d'obtenir un liquide vraiment fluide. Voici quelques directions à creuser pour améliorer le réalisme du résultat.

Encore la résolution

Le principal problème vient de la résolution : celle-ci doit être suffisante pour représenter le plus petit détail du liquide. Plus ce dernier est fluide, plus il est susceptible d'avoir des détails fins (gouttes, vaguelettes, etc) et donc plus il exige une résolution importante.

Grandeurs physiques

Le deuxième point sur lequel on peut jouer concerne les grandeurs physiques : Blender permet de régler certaines valeurs dans les options avancées du domaine :

Il est cependant important de se rappeler que l'unité de longueur de Blender est purement arbitraire et sans correspondance physique. Blender permet d'établir cette correspondance avec l'option Realworld-size qui permet de préciser la taille du domaine en mètres.

Phénomènes non simulés

Certains effets des fluides (en particulier les tourbillons lorsqu'on vide une baignoire) sont dûs à des phénomènes externes qui ne sont pas pris en compte (comme la rotation de la terre). Ces effets ne seront donc pas simulés (voir l'exemple de l'évier qui se vide ci-dessus et où il n'y a pas de tourbillon).

Marche à suivre pour un réalisme maximum

Pour obtenir un réalisme maximum, les étapes à observer sont les suivantes :

  1. Choisir la taille du domaine et régler le paramètre Realworld-size (10 cm pour un verre d'eau, 1 km pour un lac) ;
  2. Choisir la durée de la simulation. Le simulateur calcule le nombre d'images spécifié dans les paramètres de rendu. Avec le nombre d'images par secondes de l'animation (aussi spécifié dans les paramètres de rendu), on peut calculer la durée de l'animation en secondes. Il faut alors régler les paramètres Start time et End time pour représenter la même durée. Par exemple avec les valeurs par défauts : 250 images à 25 images par secondes donnent 10 s. Il faut donc que la différence entre le Start time et le End time soit 10 ;
  3. Choisir la résolution pour obtenir un élément de simulation assez petit pour représenter les détails souhaités (0,25 mm pour le verre d'eau, 2 cm pour le lac) ;
  4. S'apercevoir que la mémoire nécessaire est astronomique (12,8 Go pour le verre d'eau, Blender refuse pour le lac) et courir s'acheter un Athlon 64 et 16 Go de RAM ;
  5. Régler la pesanteur et la viscosité aux valeurs réelles 
  6. Lancer le calcul ;
  7. Patienter quelques siècles pour avoir le résultat...

Cette méthode est la seule méthode systématique qui garantit un résultat réaliste. Elle devrait donner entière satisfaction pour simuler un fluide visqueux. En revanche pour un liquide plus fluide, il faudra faire des compromis. À partir de ce moment, le paramètre important est la résolution qui doit absolument être aussi grande que possible. Les autres paramètres ne devraient pas avoir d'influence notable sur le réalisme, mais on pourra éventuellement essayer de diminuer un peu la viscosité du fluide pour compenser le manque de finesse de la simulation.


[1] Je rappelle que l'unité de longueur de Blender est une valeur complètement abstraite sans correspondance avec le monde réel. Voir à ce sujet le paragraphe sur les grandeurs physiques.

[2] En fonction de sa position, une source de fluide plus petite que l'élément de simulation peut être visible quand même. Cependant dans ce cas elle sera vue par le simulateur avec une taille égale à celle de l'élément de simulation. Afin d'obtenir un comportement aussi prévisible que possible, il vaut donc mieux toujours veiller à ce que la source aie une taille suffisamment grande.

[3] Mais rien n'interdit de faire la simulation avec un obstacle épais et de le remplacer par une version plus fine pour le rendu final...

[4] La page sur la viscosité de Wikipedia contient quelques valeurs de viscosités de référence.


 Écrivez-moi

Compteur de visites : counter

HTML 4.01 Transitional validé CSS validé
Dernière mise à jour le mercredi 22 avril 2009 à 19 h 33