android - 在 iOS 和 Android 上将(非交互式)动画(使用 Maya 制作)加载到 OpenGL ES 的推荐方法

标签 android ios animation opengl-es 3d

到目前为止,我们已经能够将静态 OBJ 文件(转换为 .h)成功加载到我们的 OpenGL 应用程序中。

然后我们可以对这些对象应用变换,以便为它们设置动画。

我们项目的下一步是让专业的 3D 动画师在 Maya 中制作动画,并创建一个“加载器”以使用 OpenGL 以 3D 形式显示它们。

我们在网上找到了很多处理视频游戏和加载静态模型的示例,但是我们的动画绝对是由动画师预先定义的,我们只需要加载它们即可。

重要的是要提一下我们不能将它渲染成 oa 视频,因为我们是在 AR 库的基础上构建它,它可以让用户真正地在动画中走动,这部分已经解决,我们只需要让动画渲染使用 OpenGL。

我调查了this question关于动画师从 Maya 导出时应使用的适当格式。

.dae (COLLADA) 文件格式似乎是封装模型和动画信息的好方法,加载它使用 Assimp但我们还没有找到为 iOS 或 Android(我们正在开发的平台)编译的加载器。

我们看到网上推荐的另一种方法是导出一系列OBJ文件并为每一帧加载相应的OBJ。

我们看到的另一种方法是使用“引擎”,但是有太多的东西很难知道我们应该关注哪一个。

我们不介意为引擎付费,但我们如何知道哪个引擎效果最好?

我们找到了these examples ,但我们看不到明确的“赢家”。

有没有人在 iOS 或 Android 设备上得到这样的东西?

您有什么建议?

最佳答案

嗯,OpenGL(-ES) 本身只是一个绘图 API,它不做任何与动画相关的事情。动画播放由自己的动画系统管理。这种系统的输出是变换参数,您可以在以后使用 OpenGL 绘图时使用这些参数来放置和变形几何体。这些天通常的方法是骨骼动画系统,即你向模型添加一些骨骼,其中每个顶点绑定(bind)到一组骨骼,每个顶点每个骨骼权重。骨骼可以表示为平移和四元数的组合。平移通常是一个常数,所以通常的动画系统给你的是描述骨架姿势的四元数向量。你加载到一个统一的(一个vec4)或一个GL_RGBA32F 1D纹理中,宽度是骨骼的数量,它在顶点着色器中用于根据姿势应用每个顶点变换。顶点骨骼权重通常作为附加的顶点属性提交。

关于android - 在 iOS 和 Android 上将(非交互式)动画(使用 Maya 制作)加载到 OpenGL ES 的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154847/

相关文章:

android - 从android执行.bat文件

android - 将 USB 设备连接到 Android 模拟器

Android Large Scale Project - 是否可以分成几个库项目?

ios - 在导航堆栈上使用一个 ViewController 启动

ios - 如何插入新字体并强制更改 UIButton?

java - 在 Android 中使用谷歌地图在自定义信息窗口上动画

ios - 如何沿圆形路径为 UIView 设置动画?

Android:如何显示在 1 个类中创建的动态表也显示在另一个类中

javascript - 如何正确使用 setInterval 和 clearInterval 在两个不同的函数之间切换?

ios - 使用 NSObject 类中的 AVAudioPlayer 播放音频