Schémas temporels pour les simulations physiques

8

Les opérations utilisées pour faire avancer une simulation physique sont le plus souvent:

  • Intégrer la vitesse et la position
  • Détection et résolution des collisions
  • Résolution des contacts (dans les cas avancés)

Il y a quelque temps, je suis tombé sur ce document de Stanford qui proposait un schéma alternatif, qui est le suivant:

  • Détection et résolution des collisions
  • Intégrer la vitesse
  • Résolution des contacts
  • Intégrer la position

C'est intrigant car il permet des solutions robustes au problème d'empilement. Alors je me suis demandé ...

Quels sont, le cas échéant, les systèmes alternatifs disponibles, simples ou complexes? Quels sont leurs avantages, inconvénients et considérations de performances?

kevintodisco
la source

Réponses:

2

La technique que j'ai trouvée qui a fonctionné le mieux pour moi au fil des ans est la suivante:

  • Intégrer la vitesse

  • Détection de collision

  • Solveur de contraintes (y compris la résolution des contacts)

  • Intégrer la position

Apparemment, cela s'appelle «semi-implicite». Je l'ai trouvée la plus stable de toutes les techniques que j'ai essayées. Je l'ai utilisé dans le moteur physique derrière Little Big Planet PSP.

J'espère que cela aide!

Santé, Paul.

lapin sauvage
la source
informations générales sur "semi-implicite": gafferongames.com/post/integration_basics
mnagel
0

Un autre schéma que j'ai rencontré est celui de Position Based Dynamics où vous:

  • Intégrer la vitesse et la position (sans contrainte)
  • Détection de collision
  • Solveur de contraintes (basé sur la position)
  • Mettre à jour les vitesses à partir de nouvelles positions (fondamentalement, vous les intégrez en utilisant les forces de contrainte calculées, tout comme vous l'avez fait pour les positions)

C'est pour montrer qu'il existe bien d'autres schémas. Chacun a ses avantages. PBD est bon pour le tissu par exemple, tandis que le solveur de vitesse semi-implicite est mieux adapté aux rigides.

L'étape de détection de collision doit se situer quelque part après la mise à jour des positions, car peu importe si vous la mettez avant ou après une mise à jour de la vitesse (sauf si vous utilisez la vitesse pour une détection continue). Les choses peuvent devenir encore plus compliquées si vous utilisez des méthodes d'ordre supérieur comme Runge-Kutta: où placez-vous la collision et à quelle fréquence? Je pense que Kenny Erleben a quelques paragraphes à ce sujet (approches paresseuses et avides) au début de sa thèse de doctorat.

Mihai F
la source