使用着色器为网格设置动画

时间:2013-11-18 03:07:56

标签: c++ opengl animation

我一直在研究我对OpenGL的低级理解,最后我想到了如何为3D模型制作动画。无处看我告诉我如何做骨骼动画。大多数东西都使用某种3D引擎,只是说“加载骨架”或“应用动画”,而不是如何加载骨架,或者如何实际移动顶点。

我假设每个骨头都有一个4x4矩阵的平移/旋转/缩放,它的顶点也是这样的,当骨骼被移动时,附着的顶点也会移动相同的数量。

对于骨架动画我猜测你会将Bone传递给着色器,这样在顶点着色器中我将当前顶点移动到片段着色器之前移动它。如果我有一个关键帧动画,我将当前骨骼和新骨骼连同帧之间的当前时间一起发送到着色器,并根据关键帧之间的时间间隔插入骨骼之间的点。

这是制作网格动画的正确方法吗?还是有更好的方法

1 个答案:

答案 0 :(得分:3)

嗯 - 动画的方法取决于格式,以及写在其中的数据。有些格式会在向量中提供,有些则使用矩阵。我必须承认我来到这个网站提出类似的问题,但我已经指定了格式(使用* .x文件,你可以查看topic),我得到了答案。

你知道这个主题是正确的。如果您想要一个示例实现,可以在OpenGL wiki上找到一个。