Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Physique Discussion :

AMD présente FEMFX


Sujet :

Physique

  1. #1
    Responsable Qt & Livres

    AMD présente FEMFX
    La méthode des éléments finis trouve sa place dans les jeux,
    AMD propose la bibliothèque FEMFX pour une simulation en temps réel des déformations

    La simulation physique dans les jeux est bien souvent limitée par rapport aux simulations effectuées par des scientifiques et des ingénieurs : quand un jeu doit avoir fini tous ses calculs pour une image en seize millisecondes, top chrono, une simulation physique de haute qualité peut prendre plusieurs mois. L'étendue de méthodes possible est alors bien plus large, mais aussi le nombre de phénomènes physiques implémentés. Parmi les simulations les plus complexes, on compte les déformations, notamment celles dues à la chaleur. Pour ces dernières, la notion de position d'un objet n'a plus vraiment de sens : l'espace utilisé par un canard en plastique n'est plus seulement déterminé par la position d'un de ses points et l'orientation du canard par rapport à ce point ; au contraire, pour représenter un canard en train de fondre, il faut mémoriser la position d'un très grand nombre de ses points.
    Pour y arriver, les simulations de haute qualité utilisent surtout la méthode des éléments finis (FEM, en anglais). Elle consiste à diviser l'objet à simuler en petites surfaces (que l'on considère souvent comme planes) : plus il y a de surfaces, plus la simulation sera précise… et chère. Le solveur informatique mémorise la position de chacune de ces surfaces (position du centre, orientation) et simule leur évolution le long de la surface et au fil du temps (à l'aide d'équations aux dérivées partielles, le plus souvent : ces dernières sont discrétisées au niveau des surfaces et écrites sous la forme d'un système d'équations linéaires). Une extension de cette technique est la méthode des éléments finis étendue (en anglais, XFEM) : la différence principale est la possibilité de simuler des discontinuités, comme un objet qui se brise.


    (Source : Wikipedia.)

    En pratique, cette méthode n'est pas très utilisée dans les jeux vidéo : elle est très puissante, mais nécessite trop de calculs — surtout qu'une solution très précise n'est pas nécessaire, la simulation doit juste être plausible. La FEM est parfois présente pour précalculer certains mouvements ou pour des animations qui ne sont pas calculées en temps réel. Les solveurs FEM utilisés dans l'industrie et la recherche sont toujours fortement parallélisés et distribués, ils utilisent régulièrement des accélérateurs comme des cartes graphiques (par dizaines, au moins). D'où la surprise quand AMD annonce FEMFX, une implémentation de la FEM à destination de jeux vidéo, donc en temps réel.



    FEMFX est écrite spécialement pour gérer le cas d'objets déformables. Les objets sont représentés à l'aide d'éléments tétraédriques, les paramètres physiques (rigidité, module de Young, coefficient de Poisson) étant définis par élément. Ce solveur part donc des principes physiques bien connus, avec l'inconvénient d'un très grand nombre de paramètres avec lesquels les développeurs de jeux vidéo ne sont pas habitués à travailler.



    L'idée d'AMD est d'exploiter les possibilités de calcul parallèle des processeurs modernes (notamment ses Ryzen et Threadripper, dont le haut de gamme monte maintenant à trente-deux cœurs et bientôt soixante-quatre), c'est-à-dire sans carte graphique. Il n'empêche, les développeurs de FEMFX ne visent pas très haut (par rapport aux simulations par éléments finis traditionnelles) : pour eux, un objet ne devrait pas dépasser un millier de tétraèdres. Par exemple, la simulation de canard fondu ci-dessous utilise à peine trente-trois tétraèdres par canard.



    De même, ils ne recommandent pas d'utiliser une telle simulation pour l'entièreté d'une scène : les simulations actuelles d'objets rigides resteront l'outil principal pour les années à venir, avec des techniques plus évoluées pour certains effets (comme les objets fortement déformables). C'est pour cela que FEMFX est prévue pour s'intégrer avec des moteurs physiques existants, avec une implémentation des contraintes à l'aide d'un solveur itératif entièrement compatible avec la manière dont les simulations rigides sont pour le moment effectuées dans les jeux vidéo. Une API pour la résolution coordonnée des contraintes entre éléments finis et objets ridiges est disponible, mais ce principe n'est pas souvent disponible dans les moteurs physiques…



    Actuellement, le code source et des intégrations à Houdini (pour l'édition du contenu) et à Unreal Engine (pour le rendu) sont disponibles. L'intégration à Houdini affiche les paramètres de conditionnement de la scène, qui indiquent à quel point elle pose des problèmes pour la résolution numérique (c'est-à-dire que FEMFX ne peut pas proposer une bonne solution rapidement : la simulation risque d'être très laide à regarder).


    Le code source est disponible sur GitHub.

    L'extension Unreal Engine peut aussi y être téléchargée.
    Vous souhaitez participer aux rubriques Qt ou PyQt (tutoriels, FAQ, traductions), HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Membre actif
    hum, le calcul par élément fini c'est un calcul de point avec des liaisons, la triangulation.
    de toute façon la division en petites surfaces n'a aucun sens, c'est des points qui se déplacent.
    c'est pas parce qu’on voit sur les images des triangles que se sont des surfaces surtout que le maillage se fait dans le volume pas seulement sur la coquille.