我正在尝试将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也没有改变,我不知道它是否正常。
答案 0 :(得分:0)
文件中的current_frame
不会发生变化,这是正常行为。但是,至少某些节点的矩阵应该更改为非平凡的动画。
您是否通过执行以下操作检查节点?
for (Lib3dsNode* p = g_scenes3DS[ANIMATED_KART_ID].lib3dsfile->nodes; p != 0; p = p->next )
{
// check p->matrix here
}
确保检查每个矩阵,因为某些(大多数?)节点可能不会在卡丁车动画中移动。