我正在编写一个使用 Verlet 集成的物理引擎,但我无法让一些约束正常工作。一些(如粘合/焊接约束)更加“潮湿”并且不够坚硬,而另一些(如区域约束)则具有额外的弹性并让原子飞扬。我的物理模拟器中更新方法的代码是这样的:
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();
}
}
我已经尝试了所有不同的更新命令组合,但没有任何帮助。我对使用迭代有一个模糊的想法,但不知道还有什么帮助。有什么建议么?