OpenGL动画

13
如果我有一个人体3D模型,我想让它走路动起来,最好的方法是什么?以下是我看到的可能实现方法:
  • 创建几个模型,每个模型中的腿处于不同的位置,然后在这些模型之间进行插值。
  • 将模型加载到OpenGL中,然后找出哪些顶点对应于腿部并执行适当的变换。
  • 实现骨架或关节系统(类似于此:blender animation wiki)。

通常导入的模型已经包含了动画。为什么需要在OpenGL中进行动画处理?这不应该由艺术家来处理吗? - Daniel Rodriguez
@Seth,我正在做这个作为个人项目。所以如果模型包含动画,我只需要在它给我的不同关键帧之间进行插值处理吗? - Martin Konecny
是的,没错。关于这个有很多资源。http://gpwiki.org/index.php/OpenGL:Tutorials:Basic_Bones_System - Daniel Rodriguez
2个回答

14

你所描述的第一个选项技术称为形状目标动画,通常用于一些细节动画,比如面部动画或手的打开和关闭。

第二个选项是程序化或物理动画,类似于机器人技术,您给角色的身体一些速度向前移动,并计算出腿部需要做什么来避免摔倒。但您不会直接对顶点进行操作,而是对骨骼进行操作。请参见下一个选项。

第三个选项是骨骼动画,它通过一组规则来为骨骼制定动画,其后面的顶点将跟随其运动,将顶点附加到骨骼上称为“皮肤绑定”。

我建议,在掌握了OpenGL相关知识(模型在空间中的查看和定位、相机等)之后,你可以开始学习骨骼动画。

您需要一个已经绑定骨骼并且有动画的模型,在您选择的3D应用程序中。然后您可以编写导出器以将其导出到您想要读取的格式或自定义格式。该文件格式应包含模型、骨骼、皮肤绑定和关键帧的描述。最后您可以从代码中读取和使用这些数据来构建网格、骨骼并进行关键帧动画。


对于好的帖子点个赞。就我个人而言,我建议使用.3DS文件作为动画关键帧、骨骼数据和模型都包含在一个文件中。 - Bojangles

2
如果我是你,我会从http://www.blender.org下载Blender,并学习一些动画教程,例如这个:http://wiki.blender.org/index.php/Doc:Tutorials/Animation/BSoD/Character_Animation。完成后,你可以使用Ogre导出器导出你的模型和动画,例如这是最新版本,但请检查确保:http://www.ogre3d.org/tikiwiki/Blender+Exporter&structure=Tools。然后,你只需要编写C++代码来加载所有内容,在关键帧之间插值等。如果你有兴趣,我可以展示给你这方面的代码。

我应该补充一下,当我这样做时,需要一些小心和调整才能使一切正常工作,但是它是可以完成的 :) - Stuart Golodetz
谢谢,我已经看过你提到的教程了,我会研究一下Ogre导出器。 - Martin Konecny
@tom_mai78101:请参考 https://github.com/sgolodetz/hesperus2/blob/master/source/engine/core/hesp/io/files/ModelFiles.cpp 和 https://github.com/sgolodetz/hesperus2/tree/master/source/engine/core/hesp/models - 希望能对你有所帮助。 - Stuart Golodetz
@StuartGolodetz 谢谢。 - tom_mai78101

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接