sho*_*osh 9 3d graphics animation
我在OpenGL中进行了一个练习,用几个对象的简单动画来编写游戏
在与我的合作伙伴讨论我们的设计选项时,我们已经意识到我们对动画的工作方式有两个主要选择,或者
通常应该采用哪种方法?有没有人有任何方法的具体经验?
Mac*_*cke 10
尽可能快地渲染和计算以获得最大帧速率(由垂直同步限制)
不要使用计时器,它们在Windows上不可靠<50-100毫秒.检查已经过了多少时间.(通常,您需要delta t和绝对值,具体取决于您的动画是基于物理还是基于关键帧.)
另外,如果你想保持稳定,可以在时间步长上使用上限/下限,如果帧需要几秒钟来渲染(由另一个进程进行光盘访问?)或者如果你跳过更新,则进入慢动作在10毫秒内得到其中两个.
更新 (因为这是一个相当受欢迎的答案)
我通常更喜欢固定的时间步,因为它使一切更稳定.大多数物理引擎在不同的时间内非常强大,但是其他东西,如粒子系统或各种更简单的动画甚至游戏逻辑,在一切都按固定时间步长运行时更容易调整.
Update2 (因为我有10个upvotes;)
为了在长时间运行(> 4小时)内获得进一步的稳定性,您可能希望确保不使用浮点数/双精度来计算大的时间差,因为这样做会失去精确度并且您的游戏的动画/物理将受到影响.使用固定点(或基于64位微秒)的整数.
对于毛茸茸的细节,我建议阅读Tom Forsyth 的精确问题.
小智 1
第二种方法是我的首选方法,因为计时器通常不如您想象的那么准确,并且具有事件处理系统的所有延迟和开销。考虑到时间间隔将使您的动画看起来更加一致,并且在帧速率下降时保持稳健。
话虽如此,如果您的动画基于物理模拟(例如刚体或布娃娃动画),那么为您的物理设置固定的更新间隔可以大大简化实现。