Bonjour,
J'ai refais mon moteur physique et j'ai voulu en faire une dll.
J'ai réussi à implémenter mes softs et hard constraints pour particules et rigidbodies => ce n'était pas de tout repos
Du coup, je me suis attaquer à la dernière partie et logiquement la plus simple ( ce n'est que du recopiage grosso modo), implémenter mon moteur de collision qui marche très bien dans ma dll.
Sauf que, à ma grande surprise, j'ai des gros soucis finalement.
Dans mon jeu actuel, la détection et la réponse fonctionne très bien. J'utilise la méthode Verlet comme intégration.
Pour une élasticité de 100%, mon énergie cinétique reste bien inchangée.
Mais dans ma dll, pour une élasticité de 100%, mon Ec reste bien identique tant que je n'applique pas de force qui viendrait perturber le cycle.
J'ai fais plusieurs test,j'ai arrondi à 2 chiffres après la virgule ma vélocité, mes positions, mes accélérations. cela fonctionne comme dans le jeu, mais pas tout le temps
Si je met une gravité à seulement 1 chiffre derrière la virgule, c'est stable assez longtemps, mais avec 2 chiffres, c'est la foire au n'importe quoi dans les 2 secondes qui viennent.
Dans mon jeu, cela n'a aucune incidence et pourtant tout est implémenter de la même manière, de l'intégration en passant par la détection jusqu'à l'ordre de compilation.
Je ne comprends vraiment rien à ce qu'il se passe. Erreur d'arrondi, ma dll est-elle en cause?
En général je m'en sort tout seul lorsqu'il s'agit de réfléchir à un problème d'algo, de logique etc, mais là je suis complétement perdu .
Merci de votre aide par avance.
Partager