Petite vidéo expliquant simplement l'intégration de verlet, appliquée en informatique. Mon travail est basé sur celui de Pezzza's Work, Sebastian Lague ainsi que wikipedia.
Lien des ressources :
- https://www.youtube.com/@PezzzasWork
- https://www.youtube.com/@SebastianLague
- https://en.wikipedia.org/wiki/Verlet_integration
Outils utilisés :
- PowerPoint
- OpenShot
- Audacity
- CLion
- SFML
Transcript :
Prenons une simple balle. Que se passerait-il si elle était réelle ? Bien sûr, elle tombera dans le vide, dû à différentes lois physiques qui gouvernent notre monde.
Maintenant, comment appliquer ceci a une balle virtuelle au cœur d’une simulation ? On pourrait donner à cette balle, une vélocité ainsi qu’une accélération. Il nous suffirait ensuite d’appliquer la troisième loi de newton afin de lui appliquer une gravité. C’est la méthode d’Euler.
Mais cette solution n’est plus viable pour une simulation avec des milliers d’objets. C’est dans ces moments qu’intervient l'intégration de verlet.
Cette formule a été découverte en 1967 par Loup Verlet. Elle est très utilisée en dynamique moléculaire, mais aussi dans les jeux vidéos et de nombreuses simulations physiques.
Voici la formule comme on peut la trouver sur wikipedia. Elle a l’air assez complexe, mais nous pouvons la simplifier pour retrouver cette formule. Elle peut s'interpréter comme : ma prochaine position est égale à ma position à l’instant T + ma vélocité a l’instant T.
Pour retrouver la vélocité, au lieu d’utiliser, comme dans la méthode d’euler, l'accélération, nous déduisons la vitesse à l’instant T grâce aux positions de l’objet. Soit, ma vitesse est égale à ma position actuelle moins ma position précédente.
Ce petit changement permet à l'intégration de verlet d'être robuste et plus simple que la méthode d’euler.
Verlet prend en charge pour nous la conservation de l'énergie, et confère au solver une meilleure stabilité au cours du temps.
Toutes ces propriétés permettent de réaliser un simple solver physique, pouvant simuler facilement des centaines d’objets.
Essayons d'abord de créer un solver simple, qui gère la physique entre 2 balles dans un environnement contraint, comme celui-ci.
Tout d'abord, commençons par créer un objet simple, stockant sa position, son ancienne position ainsi que son accélération.
Ensuite, appliquons la formule de verlet, vu précédemment, dans une fonction update, qui sera chargée d’appliquer l'intégration de verlet à chaque étape de notre solver.
Nous allons ensuite faire en sorte que la balle entre en collision avec son environnement. Pour cela, lorsque la balle essaiera de sortir des contraintes, nous n’aurons qu'à la ramener au bord le plus proche.
Intégrons cette solution à notre objet.
Comme on peut le voir, Verlet a pris en charge pour nous la dynamique de l’objet, grâce à sa propriété de conservation d’énergie.
Pour finir, faisons en sorte que nos balles puissent entrer en collision. Pour cela, nous allons utiliser une méthode naïve. Si 2 balles se chevauchent, il nous suffit de calculer le vecteur sur lequel elle se chevauche. Il faudra ensuite bouger les 2 balles le long de ce vecteur, de la moitié de leur chevauchement.
Les collisions semblent marcher. Mais avec plus d’objets, cela n'est pas suffisant, car une seule passe de l’algorithme ne suffit pas à résoudre toutes les collisions.
Pour résoudre ce problème, il faut donc couper l'étape de collision en sous étape, pour effectuer l’algorithme plusieurs fois.
Nous avons désormais un solveur simple mais améliorable, que ce soit en efficacité ou en fonctionnalités.
Voici quelques piste d'amélioration :
- Utiliser une thread pool pour pouvoir simuler beaucoup plus d’objets
- Intégrer des contrainte de distance entre les objets pour créer une simulation de vêtement
- Utiliser la propriété déterministe du solver pour créer des images de manières dynamique
Bref, ce solver offre une infinité de projets et de solutions, amusez-vous bien avec !
Musique utilisées :
- Teal - denada. [https://www.youtube.com/watch?v=Oaue5-7uUhY]
-
Sunshine Boulevard - Haruko [https://www.youtube.com/watch?v=PNcdNGVReQ0]
Mots clés : verlet
Informations
- Tom Fourcaudot (tfourcaudot@u-bordeaux.fr)
-
- Pierre Ramet (pramet@u-bordeaux.fr)
- 12 janvier 2024 04:18
- Autres
- Français