Archive for the ‘Ageia PhysX’ Category

Fluides : en temps réel aussi

Autre avancée spectaculaire de nVidia : l’intégration d’une méthode (approximative) permettant de calculer l’écoulement d’un fluide en temps réel en exploitant un GPU. ça donne ça:

La méthode utilisée est la « Smoothed particle hydrodynamics » (SPH), qui approxime le fluide par des sphères dont le mouvement et la taille de chacune est influencée par ses voisines les plus proches.

Un des précurseurs (le précurseur ?) de cette méthode est Matthias Muller (de Zürich, en Suisse…) dont j’ai déjà parlé ici et qui a travaillé sur le moteur PhysX chez Ageia, l’entreprise rachetée l’an passé par nVidia … Depuis, la méthode a été appliqueé à d’autres domaines, notamment la simulation de phénomènes astrophysiques dont je causerai très bientôt sur Dr. Goulu.

Une chose est sure : bientôt les jeux vont devenir nettement plus aquatiques. Cool.

download (si vous avez une GeForce 8600 ou mieux…)

source: shadows.fr

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:

  1. « L’eau procédurale » (Procedural Water) pour représenter de vastes étendues océaniques ou de l’eau sans interaction physique avec le jeu.
  2. 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.
  3. 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:

  1. 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
  2. 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: