文件名称:OSG/OpenGL 游戏人物动画的制作(二)
文件大小:115KB
文件格式:PDF
更新时间:2014-08-05 04:29:56
OSG/OpenGL 游戏人物动画的制作
静态模型画出来了,如何让我们的 Md2 小人动起来呢?是不是不停的把模型文件中存 储的关键帧序列按顺序绘制出来就行了呢?答案是当然可以,他确实动了。不过如果这样做 你得到的将会是一个飞快运动的,快到几乎和音速小子刺猬索尼克有一拼的东东,那么如何 让他慢下来呢?减缓绘制速度?每绘制一帧让绘制进程歇一会?不错,他慢下来了,不过怎 么感觉动作一跳一跳的一点都不流畅呢?呵呵,插值算法终于派上用场了,这里由于是纯顶 点动画,线性插值就可以了,为了照顾一下初学的朋友,先讲一下线性插值算法,巨简单: Vd = V0 + (V1 – V0) * t 上过初中的朋友都知道这个等式线性的,所以叫线性插值。 Vd就是我们要插的值。其中V0 是 上一帧的一个顶点的坐标,V1是这个顶点下一帧的坐标,t是插值参数,t∈[0, 1],关键就是 这个t的确定会影响到运动的质量。有时模型文件包中附带的说明文件会指出人物模型以每 秒多少关键帧绘制是流畅的正常速度。比如说这个值是 15,则关键帧之间间隔需要 1/15 = 0.06667s,而你的程序每次绘制之间的间隔可能只有 0.01389 (72 帧)则dt = 0.01389 / 0.06667, 因此在两帧之间还应该添加 0.06667 / 0.01389 = 5 帧。下面给出大概代码描述,具体参看源 码和上面注解。