Open GL ES 中的动画网格

Posted

技术标签:

【中文标题】Open GL ES 中的动画网格【英文标题】:Animating Meshes in Open GL ES 【发布时间】:2014-03-06 11:47:03 【问题描述】:

如何在 Open GL ES 中为对象设置动画。我知道你可以从 Blender 导入网格,而且我知道如何在 Blender 中为它们设置动画。我在 Blender 中制作的动画会显示在屏幕上,还是我需要使用 CAAnimation 或其他东西?那会是什么?

【问题讨论】:

【参考方案1】:

您不能使用 CAAnimation,它用于动画视图。 什么都没有会在 OpenGL ES 中“出现在屏幕上”——你需要从头开始做所有事情。

您首先需要找到一种方法将您的动画从 Blender 中取出并放入 OpenGL ES。据我所知,最简单的方法是以 COLLADA 文件格式导出。然后,您需要找到一个预先存在的导出器或编写自己的导出器,以将网格、法线、动画转换和时序数据转换为您可以提供给 OpenGL 的形式,并编写一个着色器(或多个着色器,具体取决于这些着色器的复杂程度)动画是)可以将该输入转换为类似于您在 Blender 中的动画。

代替 CAAnimation,您将在 GLKView 上使用 CADisplaylink 回调或 DrawFrame 方法,每次屏幕刷新以绘制视图时都会调用该方法。根据您的应用程序逻辑的工作方式,您可以增加一个浮点数,指示您在动画中的时间,您将其作为统一传递给着色器以确定在何处绘制对象。

一旦 Collada 导出工作正常,您应该创建一个对您的程序有意义的中间格式 -- 根据我的经验, Collada 可能需要 很长 时间来解析。

【讨论】:

以上是关于Open GL ES 中的动画网格的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中的网格中动画项目删除

在three.js中播放特定部分的网格动画

OpenGL中的3D立方体网格

在 WPF 中使用情节提要为网格背景颜色设置动画

多网格模型的 vao 管理

我正在尝试使用此代码制作网格视图动画,但我没有使用此代码获取网格视图动画。你能帮我怎么做吗?