# Simulation de fluide

La simulation de fluide est utilisée pour étudier le comportement des fluides d'une manière scientifiquement rigoureuse et pour aider à la conception d’objet dans le monde réel (moteurs, avions, digues etc.) ainsi que dans les domaines des images de synthèse (cinéma, jeu vidéo, infographie) pour obtenir des rendus physiquement réalistes ou vraisemblables. Les fluides comprennent les liquides, les gaz et les plasmas.

## Images de synthèse

La simulation de fluide dans le but d’obtenir un rendu graphique fait appel à des techniques graphiques par ordinateur pour générer des animations réalistes de fluides tels que l'eau ou la fumée. Les animations issues de simulation de fluides sont généralement axées sur l'émulation du comportement visuel qualitatif d'un fluide, avec moins d'accent mis sur des résultats physiques rigoureusement corrects, bien qu'ils s'appuient souvent sur des solutions approximatives des équations d'Euler ou de Navier-Stokes qui régissent la physique des fluides réelle. L'animation peut être réalisée avec différents niveaux de complexité

### Développement

Le développement de techniques d'animation de fluide est basé sur les équations de Navier-Stokes et a débuté en 1996, lorsque Nick Foster et Dimitris Metaxas ont mis en place des solutions aux équations 3D Navier-Stokes dans un contexte graphique par ordinateur, en basant leur travail sur un document scientifique de Harlow et Welch de 1965. Jusqu’alors, une variété de méthodes plus simples avait été utilisée, y compris des systèmes de particules ad hoc, des techniques dimensionnelles inférieures telles que des champs de hauteur, et des champs de bruit turbulents semi-aléatoires. En 1999, Jos Stam a publié une méthode nommée « fluides stables », qui exploitait une technique d'advection semi-lagrangienne et une intégration implicite de la viscosité pour fournir un comportement inconditionnellement stable. Ces travaux ont permis de réaliser des simulations plus simples et plus rapides. Cette technique générale a été étendue par Ronald Fedkiw et des co-auteurs pour traiter des fumées et des incendies plus réalistes, ainsi que des simulations d'eau 3D complexes utilisant des variantes de la méthode des surfaces de niveau$^,$$^,$$^,$.
Parmi les chercheurs universitaires dans ce domaine, on peut citer Jerry Tessendorf, James F. O'Brien, Ron Fedkiw, Mark Carlson, Greg Turk, Robert Bridson, Ken Museth et Jos Stam.

### Approches

Les séries de Fourier ont été grandement utilisées notamment dans les simulations graphiques en temps réel (en particulier les jeux vidéo) en raison de leurs performances élevées et de leur simplicité. Par contre, étant donné que c'est une simulation de surface seulement, cette technique n'apporte qu'un élément visuel et elle n'est donc pas utilisable pour des simulations plus poussées. C'est ici que les systèmes de particules en temps réel entrent en jeu. Il existe plusieurs techniques de modélisation de fluides à l'aide de systèmes de particules en temps réel viables, soit basées sur une grille avec des coordonnées fixes (eulérienne), soit basées sur les particules avec des coordonnées mobiles (lagrangienne) ou hybride (semi-lagrangienne)$^,$. Il existe aussi une autre implémentation pour les grandes quantités de liquides en utilisant un height field mais qui n'est utile que pour simuler une surface sans gouttelettes individuelles, comme un océan.

#### Eulérienne en résolvant la quantité de mouvement

L'approche eulérienne en résolvant la quantité de mouvement des premières méthodes de simulations de fluides appliquée notamment aux jeux vidéo. Originellement développée par Jos Stam chez AutoDesk, elle est particulièrement efficace pour représenter la fumée$^,$.

#### Eulérienne avec le tourbillon comme inconnue

Utilisée en recherche pour sa précision, l'approche eulérienne en résolvant le potentiel tourbillon est trop lente pour être applicable à des simulations en temps réel.

#### Lagrangienne par la quantité de mouvement

L'approche lagrangienne avec la quantité de mouvement comme inconnue, ou en anglais SPH (Smoothed particle hydrodynamics) est excellente pour représenter des éclaboussures et des arrosages et est facile à intégrer à cause de l'absence de domaine fixe et de la simplicité avec laquelle les particules peuvent entrer en collision avec l'environnement.

#### Lagrangienne par le potentiel tourbilllon

L'approche lagrangienne en résolvant le potentiel tourbilllon ou en anglais DVM (Discrete Vortex Method) : Sert surtout à représenter des mélanges de fluides différents, des courants sous-marins ou de la fumée. Ce type de simulation est distinct visuellement par ses nombreuses spirales s'influençant les unes les autres.

#### Height field

La technique dite Height field consiste à représenter uniquement la surface d'un fluide à l'aide d'une fonction utilisant 2 coordonnées f(x,y). Le désavantage de cette technique est qu'une fonction ne peut avoir qu'un résultat, donc on ne peut pas représenter les déferlantes.

#### Séries de Fourier

Simule les interactions d'entités avec la surface d'un liquide. Elle est très utile pour faire une simulation minimale et peu coûteuse au niveau des performances et cela la rend très populaire dans les séries à gros budget comme World of Warcraft, Far Cry, Crysis, Battlefield, etc.

### Logiciels

De nombreux programmes de réalisation de représentation graphiques de synthèse 3D par ordinateur implémentent des techniques d'animation fluide. RealFlow est un package commercial autonome qui a été utilisé pour produire des effets visuels dans des films, des émissions télévisées, des publicités et des jeux. RealFlow implémente un solveur de particules implicites fluides (FLIP), une grille hybride et une méthode de particules permettant des fonctionnalités plus avancées comme la modélisation de mousse et de pulvérisation. Maya et Houdini sont d’autres programmes graphiques informatiques 3D qui permettent de réaliser des simulations de fluide. Blender 3D est un programme libre de programmation 3D qui utilise la méthode de Boltzmann sur réseau pour animer les fluides.

### Jeu vidéo

La simulation des fluides dans les jeux vidéo nécessite une approche différente des autres domaines quant à l'implémentation des algorithmes de simulation. Les jeux vidéo ont des contraintes extrêmement élevées par rapport aux performances, l'implémentation des physiques de fluides doit donc être optimisée pour permettre aux autres processus de fonctionner sans faire chuter les fréquences d'images rendues par seconde en dessous de 30 ou 60 selon le cas. Cette optimisation sacrifie la fidélité visuelle pour de meilleures performances.
L'avènement du parallélisme et le gain de performance considérable des UCT durant les années 2000 ont permis le développement des simulations de fluides en temps réel. Auparavant, ces simulations ne pouvaient être rendues que sur de très longues périodes de calcul ou sur des superordinateurs. Aujourd'hui, il est commun de trouver des jeux vidéo, modestes ou à gros budget, ayant des simulations de fluides en temps réel.
Les méthodes les plus souvent utilisées sont les séries de Fourier pour simuler la surface d'un liquide, la simulation à l'aide d'un height field ou des systèmes de particules en temps réel.

#### Exemples
##### Alice : Madness Returns

Le développeur Spicy Horse Games dans le jeu Alice : Madness Returns publié par Electronic Arts a utilisé la technique du SPH pour représenter ses fluides. Ils ont aussi utilisé le module PhysX de NVIDIA pour améliorer les performances puisqu'une scène complexe pouvait contenir plus de 10 000 particules en interaction l'une avec l'autre.

##### LiquidSketch

LiquidSketch est un jeu entièrement basé sur une simulation de fluide dont le but est de résoudre des casse-têtes avec plusieurs sortes de liquides en bougeant le iPad. Tobias Neukom, mathématicien et développeur de LiquidSketch pour iPad a utilisé un système hybride ou semi-lagrangien pour représenter ses fluides.

##### Puddle

Puddle est un jeu développé par Neko et publié par Konami. Le jeu consiste à guider différents types de liquides à travers des obstacles et d'en conserver la plus grande quantité jusqu'à la fin du parcours. L'algorithme utilisé pour la simulation est inconnu.

##### Vessel

Ce jeu d'un développeur indépendant utilise un engin sur mesure qui simule les fluides à l'aide de particules qui exercent l'une sur l'autre différentes forces comme la pression, la tension de surface et la viscosité, entre autres.

##### Portal 2

Le développeur de Portal 2, Valve, a créé une simulation de fluides pour les différents types de gels qu'on retrouve à travers le jeu. Par contre, cette simulation ne s'exécute que pour l’interaction entre les blobs, et ces derniers deviennent des textures dès qu'ils touchent une surface solide, comme le plancher ou un mur$^,$.

##### Uncharted 3 : Drake's Deception

Naughty Dog, le studio derrière Uncharted 3, a eu à simuler une tempête dans un océan, et bien qu'ils ont considéré utiliser un height field, cette méthode n'est pas appropriée pour simuler des vagues très pointues. Ils ont donc opté pour un système de déplacement de vecteurs (f(<u,v>, t, paramètres) → <x,y,z>)$^,$.

## Vidéos

* https://www.youtube.com/watch?v=7uVLBosJu2E - Exemple d'une simulation eulérienne avec momentum.
* https://www.youtube.com/watch?v=ok8ThRR-59Q - Exemple d'une simulation eulérienne avec vorticité (SPH).
* https://www.youtube.com/watch?v=-OueBYao5bg - Exemple d'une simulation lagrangienne avec vorticité(DVM).
* https://www.youtube.com/watch?v=vK7FDATekMU - Bande annonce pour Puddle.
* https://www.youtube.com/watch?v=Xg6L-dnUZ8c - Série de vidéos à propos des simulation eulériennes et lagrangiennes.
* https://www.youtube.com/watch?v=3Y23IfCCmlM - Les fluides de Alice : Madness Returns.
* https://www.youtube.com/watch?v=Nt5_gzv3vPY - L'océan de Uncharted 3 : Drake's Deception.