8

我正在尝试使用 OpenGL ES 在 iPhone 上制作动画。我可以在 Blender 3D 软件中制作动画。我可以作为 .obj 文件从 Blender 导出到 OpenGL,它可以在 iPhone 上运行。

但我无法将我的动画作品从 Blender 3D 导出​​到 OpenGL。谁能帮我解决这个问题?

4

5 回答 5

1

首先,我不推荐 .obj 用于此目的,因为 obj 文件格式不支持动画,仅支持静态 3D 模型。因此,您需要将动画数据导出为一个单独的文件,与 obj.

我会推荐哪种文件格式取决于您的动画到底是什么。我不记得 Blender 支持哪些文件格式,但我记得它不会导出带有动画的 Collada 文件,这是最普遍的建议。其他选项是用于角色动画的 md2,或用于简单“四处移动的刚性对象”动画的 3ds。我认为 Blender 的 FBX 导出器会起作用,尽管该文件格式可能对您的需要来说太复杂了。


也就是说,假设您只需要简单的刚性对象移动,您可以使用 .obj 来生成 3D 模型形状,然后编写一个简单的 Python 脚本从 Blender 导出一个文件,该文件在列出的关键帧处包含帧、位置和每个关键帧的旋转。然后在您的代码中加载该数据并在 3D 模型上播放这些关键帧。

于 2011-06-13T22:03:26.967 回答
1

这是一个老问题,从那时起一些新的 iOS 框架已经发布,例如 GLKit。我建议尽可能多地依赖它们,因为它们会处理许多这样的固有转换,尽管我没有研究具体细节。此外,虽然不在 iOS 上,但未来适用于 OS X 的新场景图技术(可能会在 iOS 上出现)将这一切更进一步,狡猾的人可以使用该工具进行一些转换,然后获取输出到 iOS。

于 2013-10-07T11:33:23.823 回答
1

如果您查看Jeff LaMarche 的这篇文章,您会发现一个混合器脚本,它将 3D 模型输出到 C 头文件。还有一篇 后续文章改进了上述脚本。

运行脚本后,只需在源代码中包含标题,然后通过绘图函数传递顶点数组即可。理想情况下,您需要一种在运行时加载任意模型文件的方法,但对于原型设计,此方法是最容易实现的。

既然您已经有了导入模型(obj)的方法,那么上述内容可能不适用。但是,使用搅拌机脚本的优点是您可以修改脚本以满足您自己的需要,也许还可以导出骨骼信息或模型关键帧。

于 2010-10-26T21:42:04.057 回答
0

我没有使用过最新版本的 Blender,但我的理解是它支持将网格动画导出为一系列 .obj 文件。如果您已经可以在您的应用程序中显示单个 .obj ,那么一个接一个地显示其中几个将达到您想要的效果。

现在,请注意,这不是导出此类动画的最有效形式,因为每个 .obj 文件都会有很多重复的信息。如果您的网格随着时间的推移保持固定(即只有顶点随着多边形结构移动,uv 坐标等全部固定),那么您可以只导入整个第一个 .obj 并从其余部分读取顶点数组。

如果您想进一步优化这一点,您可以压缩顶点数组,以便只存储与动画前一帧的差异。

编辑:我看到 Blender 2.59 已导出到COLLADA。根据Blender 手册,您可以导出对象变换,还可以导出绑定对象的烘焙动画。在您的 iPhone 应用程序中支持 COLLADA 格式的好处是您可以在动画工具之间自由切换,因为它们中的大多数都导出这种格式。

于 2011-10-15T18:55:08.063 回答
0

也看看SIO2

于 2010-06-02T11:29:51.470 回答