Unity3d 默认解算器迭代意味着什么?

Unity3d 默认解算器迭代意味着什么?,unity3d,physics-engine,physx,Unity3d,Physics Engine,Physx,我试图理解Unity Physics engine(PhysX),有人能解释一下默认解算器迭代和默认解算器速度迭代到底是什么吗 这来自Unity文档: 默认解算器迭代次数:定义Unity运行的解算器进程数 在每一个物理框架上。解算器是小型物理引擎任务 确定一些物理交互作用,例如 关节或管理重叠刚体组件之间的接触。 这会影响解算器输出的质量,建议 如果使用非默认Time.FixedDelatime,请更改属性, 或者配置要求过高。通常,它习惯于 减少由接头或触点引起的抖动 请提供一些示例说明它是

我试图理解Unity Physics engine(PhysX),有人能解释一下默认解算器迭代默认解算器速度迭代到底是什么吗

这来自Unity文档:

默认解算器迭代次数:定义Unity运行的解算器进程数 在每一个物理框架上。解算器是小型物理引擎任务 确定一些物理交互作用,例如 关节或管理重叠刚体组件之间的接触。 这会影响解算器输出的质量,建议 如果使用非默认Time.FixedDelatime,请更改属性, 或者配置要求过高。通常,它习惯于 减少由接头或触点引起的抖动


请提供一些示例说明它是如何工作的,增加或减少它如何影响最终结果?

我在Unity论坛上问了这个问题,Hyblademin回答了这个问题:

在数学中,迭代解法是指 近似求解一个未知值系统,如[x1,x2,x3。。。 xn]通过重复一组步骤(迭代)。通常情况下 有趣的是一组线性方程组,与图中所示的完全相同 代数类,但未知量太多

首先猜测每个未知问题的解决方案,可能是 基于类似的、已知的系统,或者可能来自同一个起点 类似于[1,1,1…1]的点,执行一个程序,给出 接近精确值的近似解。之后 只有一次迭代,除非 最初的猜测已经很接近了。但是这个过程可以重复 以第一近似值作为新输入,这将给出 更接近

在重复几次之后,我们可以期待可靠的结果 近似值。这仍然不准确,我们可以通过 将我们的答案插入我们的原始系统,并确保 不完全正确(简化后,我们最终会得到如下结果 10=10.001或类似的内容)。也就是说,如果 近似值对于我们的应用程序来说已经足够接近了,我们停止迭代 并使用它

这些由圣母院课程提供的课堂讲稿给人一个很好的印象 使用众所周知的Jacobi方法,这一示例正在发挥作用。运送 一个迭代方法的迭代输出一个近似值 比输入更好,因为方法的定义方式 导致这种情况发生,这是一个称为收敛的属性。什么时候 看看为什么任何一个给定的方法都会收敛,事情变得非常抽象 迅速地。我认为这超出了你的问题范围, 特别是因为我不知道Unity使用了什么方法

当物理是统一计算的时候,我们最终会得到很多系统 方程组。我们可以画一张自由体图来显示力和力 Unity运行时中给定FixedUpdate的碰撞期间的扭矩 来证明这一点。我们可以尝试“直接”解决它们,也就是说 使用逻辑关系确定值的确切结果 (就像在代数课上解x),但即使系统是开着的 简单的一点是,多做这些操作会将执行速度降低到一定程度 爬行幸运的是,可以使用迭代的“间接”方法来获得 相当好的近似值,只需计算成本的一小部分

增加迭代次数将导致更精确的结果 近似解。在这一点上,增加 迭代提高了精度,但这一点都不值得 执行另一次迭代的处理开销。但是 这一点的迭代取决于您需要项目做什么。 有时,物理对象的给定排列将导致抖动 使用更多解算器可能会改进的默认设置 迭代,这在手动输入中提到。没有一个 确定更改解算器迭代计数是否会 以您需要的方式改进行为或性能,除了 只是尝试和错误(使用轮廓仪获得更客观的指示 性能影响的评估)


正如它所说:迭代次数越多,计算结果“越好”->物理更平滑、更精确,
减少碰撞和关节的抖动。但同时,更多的迭代会带来更高的性能成本。=>你们试着让它尽可能小,但若你们对关于抖动的物理不太满意,你们可能会想要增加它们