opengl动画_图形学笔记-1-骨骼动画

27a6349a87ceeef94714d4fd80580994.png

(本文旨在记录图形学相关学习过程中的点滴,不保证正确性以及专业性)

Mesh动画的实现大体有两种,一种是基于顶点变换,将所有顶点在不同时间的状态记录下来,然后进行逐帧播放。还有一种是基于绑定骨骼,将Mesh顶点与多个骨骼进行绑定,通过骨骼的变化带动顶点运动,需要在每帧计算骨骼位置,再计算各个顶点随骨骼变化后的位置,实时渲染大多采用这种方式。之前有了解过动作捕捉数据BVH,是一种用来保存骨骼位置信息的树形数据结构,以为骨骼动画的数据组织形式应该是差不多的,但实际上还真是差不多。

作案工具:

基于 C++,OpenGL,Assimp(数据读取),GLM(数学计算库)

骨骼动画原理:

我们从一个顶点vertex出发,假设vertex受到bone2的影响,bone2具有一个父节点bone1,也知道bone2到其父节点bone1的transform矩阵(在不使用骨骼动画时,这个矩阵就是绑定姿势下bone2到bone1的变换矩阵,但在动画过程中这个矩阵是会不断被插值计算得到),同时还知道bone2到世界坐标系下的offset矩阵(这个矩阵会帮我们把处于世界坐标下的mesh顶点转化到bone2的坐标系下),以及,bone1到世界坐标的transToWorld矩阵,那么一个顶点的最终位置是如何计算的呢?

我们先把被bone2影响的顶点(世界空间下)转化到bone2空间(offset),然后将bone2空间下的顶点位置进行相对bone1的位移变换(transform),然后将bone1空间下的点转化到世界空间(transToWorld),似乎绕了个大圈,如果我们采用绑定姿态的transform,其实这个过程是在做无用工,因为 transToWorld*transform 就是offset的逆矩阵,但是如果我们改变transform矩阵呢?这意味着,bone2相对bone1发生了变化,他可能进行了一定程度的旋转,这样我们计算得到的结果会是,这个受bon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介:本课程详细讲解基于Assimp C++库的模型读取模块,并且做了关于动画理论、关键帧插值、骨骼动画矩阵原理、骨骼动画读取与播放等知识的详细讲解,对于游戏行业或者三维可视化从业人员会有比较大的帮助。目前很多公司已经开始构建自己的底层图形引擎,其中动画就是重要的一个版块,本课程可以让学员从原理层面以及底层代码层面了解FBX、OBJ模型的读取本质,并且梳理程序架构,编写骨骼动画。2 课程解决优势:很多同学学习骨骼动画苦于无法找到详细的资料,其中卡主的问题点也比比皆是,比如FBX内嵌材质的读取,骨骼动画各类矩阵的应用,理论结合模型读取库读出来的数据如何一一对应等。我们的课程可以带领大家从原理+实践的角度进行学习,每一个知识点都会:a 推导基础公式及原理 b 一行一行进行代码实践从而能够保证每位同学都学有所得,能够看得懂,学得会,用得上,并且能够培养自主研究的能力。3 学习课程所得:学习本课程完毕之后,学员可以全方位的完全了解基于Assimp库的模型读取结构,了解每一个变量背后的含义,并且课程拥有随堂附赠的源代码,保证同学可以随时根据老师的代码纠正自己的错误。跟随课程一行一行写完代码的同学,可以获得自己的模型读取代码库,并且深度理解骨骼动画的原理与模型读取原理 本课程含有全源代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值