动画从3DS到OpenGL

时间:2013-12-27 18:48:37

标签: c opengl animation 3ds

我正在尝试将3ds动画导出到OpenGL,我想一点一点地进入下一帧。要做到这一点,我使用带有100个键的3ds文件,所以如果我不犯错误就可以了。

要运行我的动画我使用lib3ds_file_eval语句,但似乎我在犯错误

我是这样做的:

void animationTimer(int value) {
    if (g_haltAnimation != 0) {
        lib3ds_file_eval(g_scenes3DS[ANIMATED_KART_ID].lib3dsfile, g_currentFrame);
        g_currentFrame = (g_currentFrame + 1) % g_scenes3DS[ANIMATED_KART_ID].lib3dsfile->frames;
        glutTimerFunc(10, animationTimer, 0);
    }
}

所以很简单。我把我的场景的lib3ds文件放在参数和下一帧的编号中。当我检查节点中的转换矩阵时,它不会改变,我找不到原因。

我注意到lib3dsFile中的current_frame也没有改变,我不知道它是否正常。

1 个答案:

答案 0 :(得分:0)

文件中的current_frame不会发生变化,这是正常行为。但是,至少某些节点的矩阵应该更改为非平凡的动画。

您是否通过执行以下操作检查节点?

for (Lib3dsNode* p = g_scenes3DS[ANIMATED_KART_ID].lib3dsfile->nodes; p != 0; p = p->next )
{
   // check p->matrix here
}

确保检查每个矩阵,因为某些(大多数?)节点可能不会在卡丁车动画中移动。