Mathias Müller : Simulation temps réel de fluides dans les jeux
Le cours « Real Time Fluids in Games » de Matthias Müller-Fischer présenté à la conférence SIGGRAPH 2007 est une remarquable synthèse des différents problèmes posés par la simulation réaliste des fluides. L’auteur propose de distinguer 3 situations et les solutions correspondantes:
- « L’eau procédurale » (Procedural Water) pour représenter de vastes étendues océaniques ou de l’eau sans interaction physique avec le jeu.
- La technique des « champs de hauteur » (Heightfield Fluids) permet de calculer en temps réel des vagues causées par des interactions physiques sur de petites étendues d’eau.
- Les « fluides basés sur les particules » (Particle Based Fluids) sont proposés pour traiter les situations où le fluide gicle ou s’écoule de façon turbulente.
Procedural Water
Cette approche vise un but purement visuel. La physique n’est utilisée que pour précalculer des textures et les animer pour obtenir un rendu réaliste sans calculs supplémentaires. L’article de Yuri Kryachko « Using Vertex Texture Displacement for Realistic Water Rendering » paru dans GPU Gems 2 explique par exemple comment des images telles que celle ci-dessous sont générées dans le jeu Pacific Fighters

Heightfield Fluids
Cette technique consiste à modifier en temps réel un maillage représentant la surface de l’eau, modélisée comme une membrane sur laquelle se propagent les vagues. Matthias Müller la décrit de façon très complète dans son document, largement assez pour l’implanter dans une démo Demoniak 3D, par exemple (encore un projet en cours de plus, je vous en reparle bientôt…)
La principale limitation de cette méthode est que la hauteur du fluide ne peut avoir qu’une seule valeur en chaque poitn de la surface. Matthias montre comment contourner cette limitation dans 2 cas:
- pour les objets flottants que l’eau peut partiellement recouvrir ou des objets semi immergés, il montre qu’une seule variable supplémentaire par point du maillage permet d’en tenir compte pour modifier la surface de façon réaliste
- l’article de N. Thürey, M. Mueller-Fischer, S. Schirm, M. Gross « Real-time Breaking Waves for Shallow Water Simulations » montre comment utiliser un système de particules pour représenter la crête des vagues, les déferlantes et les rouleaux.
Toutes ces techniques sont illustrées sont illustrées dans cette video:
Après avoir cofondé Novodex à Zürich, Matthias Müller y travaille pour Ageia, entreprise qui développe et commercialise l’API PhysX permettant d’intégrer facilement la simulation physique aux jeux ainsi qu’un « Physical Processing Unit » (PPU) accélérant notablement les calculs correspondants. Le support des « heightmap fluids » est annoncé pour la prochaine version de PhysX.
Particle Based Fluids
Quand le fluide gicle et s’écoule de façon turbulente, Matthias Muller propose de modéliser le fluide comme un ensemble de particules en interaction entre elles et avec l’environnement. Cette méthode est très différente de celle que j’avais décrite ici, basée sur la résolution des équations de la mécanique des fluides. Elle présente l’avantage de pouvoir plus facilement représenter les interactions entre le fluide et son environnement, comme on le voit dans cette vidéo montrant plusieurs exemples:
Par contre, et comme on le voit déjà dans l’exemple de la vague déferlante, le réalisme visuel des fluides représentés par des particules n’est pas terrible, ce qui est assez facile à comprendre.
Autres références:
- « Fluid Simulation for Computer Animation« , une page de Robert Bridson qui contient d’autres documents (plus techniques) présentés avec Matthias Müller au SIGGRAPH 2007
- Jerry Tessendorf, « Simulating Ocean Water« , 2001 : cours très complet de « procedural water »
- Lawrence M. Lachman, « An Open Programming Architecture for Modeling Ocean Waves« , 2007, IMAGE Conference, Scottsdale, Arizona : Multigen – Presagis
- Frank ROCHET « Simulation réaliste de ruisseaux en temps réel« , 2005, Travail de Master Université Joseph Fourier,Grenoble
Votre commentaire