Ogre的mesh和skeleton文件数据格式分析

转载自:

http://www.cnblogs.com/topicofkevin/archive/2012/03/05/2380808.html 

 首先看一下skeleton文件,skeleton文件描述和记录了物体的骨骼和动画情况。

<skeleton>
    <bones>....
    <bonehierarchy>...
    <animaions>...
</skeleton>

从上面得知,整个skeleton文件分成了三部分bones,bonehierarchy,animations。

  1.bones部分描述了每一块骨头的具体情况:

<bones>
    <bone id="0" name="Joint1">
         <position x="0x1195046"  y="0.51196"  z="0"  />
         <rotation angle="0">
              <axis x="1" y="0"  z="0"  />
        </rotation>
        </bone>
        <bone>
        .....

从上面可知,其实一块骨头,实际上真正的有效数据仅是一个起始位置,和一个起始的转向。当然骨骼还包括骨骼的编号和名字这样的数据。

2.bonehierarchy,即骨骼的继承关系,描述了骨骼是怎么样组成骨架的。

<bonehierarchy>
     <bonepatent bone="Joint2" parent="Joint1" />
     <boneparent bone="Joint3" parent="Jonin2"/>
     <boneparent bone ...
... 

至此skeleton文件已经完整的描述了一整个骨架。

3.animations动画集部分。动画集,由多个动画组成。  每个动画由一系列的track组成,每个track由一系列的Keyframe组成。一个track描述了单块骨头在每个keyframe所描述的时间点的位移和旋转。

上图显示名为"Attack1"的动作,时长为1s, 由多个track组成,其中一个track所表示的是名为"Join1"的骨头的运动情况。各种Keyframe表示在指示时间点的位移和旋转。



再看看mesh文件

<mesh>
     <submeshes>
          <submesh materail="Examples/Ninja" usesharedvertices="fase" use32bitindexes="fase" operationtype ="trangle_list">  
           <faces count="904">
                  <face v1="0" v2="1" v3="2"/> 
                  ..........................
          </faces>
          <geometry vertexcount="781">
                    <vertexbuffer positions="true" normals="true">
                         <vertex>
                             <position x="0" y="179.594" z="-16.0094" />
                             <normal x="1.66615e-008" y="0.160267" z="-0.987074" />
                        </vertex>
                        ..................................... 
                  </vertexbuffer>
                   <vertexbuffer texture_coord_dimensions_0="2" texture_coords="1">
                          <vertex>
                                 <texcoord u="0.44849" v="0.141284" />
                         </vertex>
                         .......................
                    </vertexbuffer>
          </geometry>
           <boneassignments>
                <vertexboneassignment vertexindex="0" boneindex="7" weight="1" />
                <vertexboneassignment vertexindex="1" boneindex="7" weight="1" />
                ..................
            </boneassignments>
     </submeshes>
     <skeletonlink name="ninja.skeleton" />
</mesh>

 每个mesh由多个submesh组成,每个submesh由faces部分, geometry 部分,boneassignments部分组成。faces部分用 顶点索引描述了物体的每一个三角形面。geometry部分由两个vertexbuffer组成,第一个描述了每个顶点的坐标和法线,每二个描述了顶点的UV,boneassignments部分描述了每个顶点所附着的骨头组及权重





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值