我正在尝试了解Unity Physics引擎(PhysX),有人可以解释一下默认求解器迭代和默认求解器速度迭代到底是什么吗?
这来自Unity文档:
默认求解器迭代:定义Unity运行的求解器进程数 在每个物理框架上。解算器是小型物理引擎任务, 确定许多物理相互作用,例如 刚体部件之间的连接或管理接触。 这会影响求解器输出的质量,因此建议 在使用非默认Time.fixedDeltaTime的情况下更改属性, 否则配置要求很高。通常,它用来 减少由接头或接触引起的抖动。
请提供一些示例,它如何工作以及如何增加或减少对最终结果的影响?
答案 0 :(得分:0)
我在Unity论坛上问了这个问题,并且 Hyblademin 回答了:
在数学中,迭代求解方法是指 近似求解未知值的系统,例如[x1,x2,x3 ... [xn]重复一组步骤(重复)。通常, 兴趣是一组线性方程组,与在 代数类,但未知数过多。
从猜测每个未知数的解决方案开始,这可能是 基于类似的已知系统,或者可能来自一个共同的起点 像[1,1,1 ... 1]这样的点,执行一个过程 近似解,它将接近于精确值。后 仅一次迭代,除非近似,否则将不是一个很好的迭代 最初的猜测已经接近。但是程序可以重复 将第一个近似值作为新输入,这将给出一个 更加接近。
再重复几次后,我们可以期待一个可靠的 近似。还是不准确,我们可以通过确认 将我们的答案插入到原始系统中,并看到它 是不太正确的(简化后,我们最终会得到类似 10 = 10.001或类似的值)。也就是说,如果 逼近对于我们的应用程序来说足够接近,我们停止迭代 并使用它。
这些演讲笔记是由巴黎圣母院的课程提供的,非常好 使用众所周知的Jacobi方法的实际例子。携带 迭代方法的迭代输出一个近似值 比输入更好,因为方法的定义方式 导致这种情况发生,这是一个称为会聚的属性。什么时候 看看为什么任何给定的方法收敛,事情变得很抽象 很快。我认为这超出了您的问题范围, 尤其是因为我不知道Unity到底使用什么方法。
在Unity中计算物理量时,我们得到了很多系统 方程组。我们可以画一个自由图来显示力和 Unity运行时中给定FixedUpdate发生碰撞时的扭矩 展示这一点。我们可以尝试“直接”解决它们,这意味着 使用逻辑关系确定值的确切结果 (例如在代数类中求解x),即使系统处于打开状态 简单来说,执行很多操作会减慢执行速度 爬行。幸运的是,可以使用迭代的“间接”方法来获得 相当不错的近似值,而计算成本却很小。
增加迭代次数将导致更精确 近似解。有一点增加了 迭代使精度提高根本不值得 进行另一次迭代的处理开销。但是数量 关于这一点的迭代取决于您的项目需要做什么。 有时给定的物理对象排列会导致抖动 默认设置可能会通过更多求解器得到改善 迭代,在手册中有提到。没有一个 确定改变求解器迭代次数是否会的好方法 以所需的方式改善行为或性能,除了 只是反复试验(使用事件探查器可以更客观地指示 性能影响)。
https://forum.unity.com/threads/what-does-default-solver-iteration-means.673912/#post-4512004