Simulation des fluides basée sur la position : évolutions montrées au SIGGRAPH 2013

La simulation des fluides basée sur la position (position based fluids) est une manière de simuler les fluides basée sur le framework PBD (position-based dynamics) de PhysX, notamment utilisé pour les tissus et autres objets déformables. Comme toujours pour des jeux, cette simulation doit être rapide et stable (demander peu d’itérations pour converger), en sacrifiant la précision des résultats.

Cette approche combine une technique SPH classique (smoothed-particles hydrodynamics) avec ce framework PBD. Cette technique permet d’imposer l’incompressibilité d’un fluide (son volume varie peu, peu importe la pression appliquée, comme l’eau) de manière bien plus efficace qu’avec une approche de type SPH pure, grâce aux contraintes de position. Techniquement, il s’agit toujours d’un solveur itératif basé sur dix kernels CUDA.

Avec un terme plus artificiel de pression, ce nouveau solveur améliore la distribution des particules et crée des effets similaires à la tension de surface. Le confinement des vortex (une technique de simulation des écoulements dominés par des vortex) est aussi utilisé pour laisser l’utilisateur injecter de l’énergie dans le fluide.

Au SIGGRAPH 2013, Miles Macklin (un des auteurs de cette méthode de simulation) a présenté les dernières améliorations en date de l’algorithme : les interactions à double sens entre un fluide et des solides ou des tissus.

Les diapositives de cette présentation sont disponibles en ligne.

Il faut aussi noter que Eric Wolter propose une autre implémentation du même concept en C++ mais avec OpenCL : sources sur GitHub.

Sources : http://physxinfo.com/news/11109/introduction-to-position-based-fluids/ et http://physxinfo.com/news/11679/siggraph-2013-latest-improvements-to-position-based-fluids/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s