【问题标题】:Importing blender animations to OpenGL将搅拌机动画导入 OpenGL
【发布时间】:2014-05-24 14:22:56
【问题描述】:

我正在从 Blender 读取 obj 文件并尝试加载动画。 (很多顶点,每帧1个文件)

为了性能...创建自己的动画类,使用这种方法存储帧是不是很糟糕?

vector <vector <float>> frames;
vector <float> verticesForThisFrame;
verticesForThisFrame.push_back(readX());
verticesForThisFrame.push_back(readY());
verticesForThisFrame.push_back(readZ());
frames.push_back(verticesForThisFrame);

如果效率很低,你建议我怎么做?

顺便说一下,我用 SDL 打开一个窗口,用 OpenGL 做图形。

【问题讨论】:

标签: c++ opengl animation blender


【解决方案1】:

每帧 1 个文件?我认为延迟是 io ,你为什么不首先阅读所有帧?我想知道你的帧中大约有多少个顶点,我看我的示例角色有大约 6*10^4 个顶点,如果只存储大约使用的 4 * 3 * n(vertices) 字节的顶点,我的角色每帧大约 720KB,我将使用72 MB 内存用于 100 帧缓冲区来存储它。

最后一个,和 .obj ?我认为你应该使用二进制文件来存储数据

【讨论】:

  • 我每帧大约有 4000 个顶点。
【解决方案2】:

Wavefront Obj 有no animation support。根据混合器导出的建议,为每个帧渲染不同的网格是一种蛮力补丁,尤其是对于重型模型。

如果您想将网格保留在 obj 中,您可以在搅拌机中创建助手(虚拟点、线、路径等)并命名它们。但最终的动画应该使用那些帮助器来保持相同的网格变换。

对于处理动画的导出格式,我会使用collada。

【讨论】:

  • 好的,那么有什么比使用 obj 文件更好的方法呢?或者最好的方法;)
  • 我遇到了和你一样的情况,我选择了我解释过的那个(为旋转轴制作虚拟的命名顶点等等..)。我没有搜索更高级的导出格式。
  • 谷歌搜索了一下,我会选择.x
猜你喜欢
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2022-06-22
  • 2023-03-24
  • 2017-04-18
  • 2017-09-03
  • 2016-06-28
相关资源
最近更新 更多