Bullet 按时间(秒)运行,并以固定速率执行模拟步。Bullet 解算器不使用帧作为时间单位。固定速率决定了模拟的分辨率,并由解算器的“内部固定帧速率”(Internal Fixed Frame Rate)属性指定,默认情况下设置为每秒 60 步。
例如,如果 Maya 设置为以 30 fps 播放,则每帧将有 2 个 Bullet 子步。此设计和实现可以更好地支持实时游戏应用程序,在这类应用程序中,每帧的绘制和计算时间必须保持接近恒定。通过允许解算器变换任何两个绘制帧之间发生的模拟步数,弱化了保持恒定绘制速度的需要。
作为 Bullet 解算器保持恒定时间安排模拟步数的另一种方法,该解算器还使用迭代求解算法来解算动态系统方程,而不使用显式算法。迭代求解首先估算一个解,然后将这些值代回方程中,以求得更精确的解。解算器用来估算解的时间是恒定的,并且仅取决于方程的个数。
当单次迭代的解的变化小于某个 epsilon 值时,系统将被视为完成解算。视模拟而定,解可能需要进行额外的迭代之后才能收敛于某个解。该解算器的“最大迭代次数”(Max Num Iterations)属性设定了方程系统的最大迭代次数,迭代该次数后,解算器将停止计算,并使用最近似解作为最终解。因此,这可钳制一个模拟步的总时间。此方法的缺点是,结果可能不像更为显式的解算器那样精确。但对于游戏和影片中的大多数应用程序,解算器的精确度是足够的。
请参见烘焙 Bullet 刚体模拟以获取有关如何烘焙模拟的信息。