Question

J'écris un moteur physique qui utilise l'intégration de Verlet et je ne parviens pas à appliquer certaines contraintes. Certains (comme une contrainte de liaison / soudure) sont extra " soggy " et ne sont pas assez rigides, alors que d'autres (comme une contrainte de zone) sont très gonflables et font voler des atomes. Le code de ma méthode de mise à jour dans mon simulateur physique est le suivant:

    ProcessRemovedItems();
    ProcessAddedItems();
    _colliderManager.Update(timestepSize);
    foreach (Atom atom in _atomList)
    {
        atom.Update(timestepSize);
    }
    for (int i = 0; i < _iterations; i++)
    {
        foreach (IConstraint constraint in _constraintList)
        {
            constraint.Update();
        }
    }

J'ai essayé toutes les combinaisons idfférentes d'ordres de mise à jour et aucune aide. J'ai une vague idée de quelque chose sur l'utilisation d'itérations mais je ne sais pas quoi d'autre pourrait aider. Des suggestions?

Était-ce utile?

La solution

Vous êtes correct dans vos hypothèses d'itérations.

En exécutant la partie intégrateur de verlet plusieurs fois dans un cadre, plus la simulation sera rigide et performante).

Cela est dû à ce qui suit: Disons que vous avez 5 atomes l'un à côté de l'autre et que lorsque le dernier atome est intégré, il est déplacé un peu. malheureusement, il est déplacé sur l'atome à côté. Il faut une trame complète, avant que l’intégration ne soit refaite et celle-ci est corrigée (à cause des contraintes). Cependant, il y a de fortes chances que les atomes soient à nouveau placés dans les autres.

donc pour contrer cet effet, plus vous faites d'itérations (plus vous appelez l'intégrateur plus de fois par image), plus la simulation fonctionnera et respectera vos contraintes,

Cependant, vous remarquerez que plus vous exécutez l'intégrateur par image, plus la puissance du processeur utilisée sera importante. Donc, il y a un endroit idéal quelque part que vous devez trouver manuellement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top