骨骼动画原理

骨骼动画技术后于帧动画技术出现
最开始,骨骼动画仅用于非实时渲染的建模领域,如3DMax这类建模软件之中,以方便美工的建模。后来,CPU从渲染中解放后,骨骼动画才用于实时渲染的游戏中。
顶点动画:早期的3D模型动画,就是把每帧的顶点数据输出到文件中,所以3D模型的一个动作就是一系列的模型,这样做的目的主要是硬件资源有限,没有多余的时间去计算顶点。

骨骼动画
随着动画越来越精细,将每帧的顶点数据输出到文件数据量太大。人们想出一种办法,将3D模型抽象为一些关键点的集合,整个模型的运动可以当做是这些关键点的运动,而模型的顶点只是受这些关键点的影响而已。这些关键点就称为骨骼


骨骼动画原理
骨骼动画的想法来源于人体骨骼。
例如说,人的上肢所有肌肉和皮肤都受上肢骨胳的影响,而人的踝关节则分别承受小腿骨胳和脚骨的影响。
根据这个我们可以将骨骼动画理解为两个概念:
骨骼:用以控制蒙皮的一种抽象的概念,如人体骨骼控制皮肤。
蒙皮:被骨骼控制、并显示在外的因素,如人体的皮肤被骨骼所影响。

骨骼动画原理:蒙皮(SKINMESH)

在最终的渲染结果中,蒙皮将完全显示出来,蒙皮实际上就是顶点、法线和纹理坐标等将被渲染的元素。
而其中,最关键的当然是顶点,顶点将直接被骨头牵扯运动,因而使得整个模型呈现骨骼所决定的样子。
 

骨骼动画原理:骨骼(SKELETON)
o骨骼是一种抽象的概念,在最终的渲染结果中,它不可见。
o类如人体骨骼、骨骼是若干骨头(Bone)成树状的集合体,而每块骨头又分别与若干数量的蒙皮顶点关联。
o当骨头运动的时候,与之关联的所有蒙皮顶点也会受骨骼的影响而运动。

骨骼动画原理:权重
骨头与蒙皮顶点的关联需要考虑到每块骨头对蒙皮顶点的影响。
尽管大部分情况下,一个顶点将仅仅被一个骨头的影响,但是关节处的顶点往往被多根骨头影响,例如踝关节,可能会分别受小腿骨50%和脚骨50%的影响,这种影响叫作权重(Weight)。
在这种情况下,我们称踝关节的这些顶点,受小腿骨影响的权重是50%,受脚骨影响的权重也是50%。

骨骼动画原理:算法
骨头究竟如何对顶点施加影响呢?
现实世界中,每一块骨头都可以位移、旋转,受这些骨头影响的表皮细胞也会跟随骨头同时按权重做位移旋转。
在3D中,这种影响对于蒙皮顶点而言也是一样的。

那么实际上,每根骨头最终将被换算成一个矩阵,这个矩阵记录了旋转,平移信息,我们用这个矩阵来对蒙皮顶点进行影响。
在骨头中,一般使用四元数来获得旋转时的精确性,这样,骨头一般记录表示旋转的四元数和表示位移的一个矢量,最后,将四元数和矢量换算成骨头的矩阵,并用顶点与这个矩阵乘法以进行影响。
 

参考文章https://wenku.baidu.com/view/66175c47c4da50e2524de518964bcf84b9d52dcb.html

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Opengl骨骼动画是一种通过在3D模型上应用骨骼结构和动画关键帧来实现动画效果的技术。在Opengl中,艺术家会将骨骼结构装配在一起,并为每种动画类型定义一组关键帧。关键帧包含了动画路径上骨骼的变换信息,图形引擎会在这些关键帧之间进行插值,从而创建平滑的运动效果。使用Opengl来实现骨骼动画需要借助辅助库如Assimp,它可以从多种格式加载骨骼信息。然而,使用Assimp加载的数据结构还需要一些工作来生成着色器所需的骨骼转换。通过使用Opengl的骨骼动画技术,可以实现人物行走、爬楼梯等复杂的动作效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Opengl骨骼动画](https://download.csdn.net/download/mirro187/10762824)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [opengl实现骨骼动画-(1)原理](https://blog.csdn.net/wqdqwass/article/details/121569040)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值