mesh文件和skeleton文件内容解析和骨骼动画原理

本文深入解析mesh和skeleton文件内容,介绍骨骼动画的原理。首先,mesh文件包含顶点缓冲区、面和顶点与骨骼的关联信息;skeleton文件则保存骨骼的位置、方向和继承关系。骨骼动画通过更新骨骼时间和应用动作到骨骼,驱动模型动起来。文章还展示了代码示例,解释如何计算骨骼和顶点的变换矩阵,以及如何驱动附着在骨骼上的顶点以实现动画效果。
摘要由CSDN通过智能技术生成
        前几天在实现编辑器特效跳过时间的时候,发现循环调用update的方法对骨骼动画没有效果。没办法那就看看骨骼动画的原理吧。
一、mesh文件和skeletion文件中的内容
1、mesh文件 中的主要信息
(1)vertexbuffer(顶点缓冲区)
像第一个vertex标签中
<vertex>
 <position x="-58.356" y="152.38" z="1.094436"> //顶点位置
<texcoord u="1.0831" v="-0.9544">                       //纹理坐标
<colour_diffuse value="1 1 1 1">                           //顶点颜色
</vertex>

(2)faces(面)
这部分保存的是由前面说的顶点构成的面,每个面有三个顶点。骨骼动画中的渲染就是以这些面为单位的。比如第一个face标签中<face v1="2" v2="35" v3="0">表示这个面由第2、35、0个顶点构成。

(3)boneassignments(顶点和骨骼的关联)
这部分记录每个顶点受那根骨骼影响,也可以说是记录每个顶点附着在哪根骨头上,具体情况像下面这样子。

比如第一个vertexboneassignment标签 <vertexboneassignment vertexindex="0" boneindex="53" weight="1">,下标是0的顶点附着在下标是53的骨骼上,(weight)权重是1,关于weight这个参数,表示的是骨骼对顶点影响的权重,因为一个顶点可能受多个骨骼影响,那么影响的程度就由weight来决定。但是这个权重的和必须是1.

2、skeleton文件中的主要信息
(1)bones部分主要保存模型的骨骼信息,每根骨骼有一个起始的位置,和一个指向 。

像第一个bone标签中
<bone id="0" name="Joint1">                       // 这根骨骼的id等于0,名称是Joint1
<position x="0.185046" y="0.51196" z="0">  //骨骼的起始位置是
<ratation angle="0"> 
    <axis x="1" y="0" z="0"/>                            //骨骼的指向
</rotation>
<bone>
(2)bonehierarchy(骨骼之间的继承关系)
这部分记录骨骼之间的关系,记录每根骨骼的父骨骼,这样就能组成一幅骨架了。

像第一个bonepatent标签中<boneparent bone="Joint2" parent="Joint1">,Joint2的父骨骼是Joint1,表示他连接在Joint1上,记录骨骼关系的目的是在他的父骨骼位置发生变化或者旋转的时候,也要用父骨骼的变换矩阵乘以子骨骼的变换矩阵。就是让子骨骼受父骨骼的影响。

(3)animations (动画集部分)
所谓骨骼动画,那就得有动作才行,animations部分保存的就是骨骼动作的信息。大概的形式是这样的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值