转载自:

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

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

  1. <skeleton>
  2. <bones>....
  3. <bonehierarchy>...
  4. <animaions>...
  5. </skeleton>

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

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

  1. <bones>
  2. <bone id="0" name="Joint1">
  3. <position x="0x1195046"  y="0.51196"  z="0"  />
  4. <rotation angle="0">
  5. <axis x="1" y="0"  z="0"  />
  6. </rotation>
  7. </bone>
  8. <bone>
  9. .....

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

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

  1. <bonehierarchy>
  2. <bonepatent bone="Joint2" parent="Joint1" />
  3. <boneparent bone="Joint3" parent="Jonin2"/>
  4. <boneparent bone ...
  5. ...

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

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

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

再看看mesh文件

  1. <mesh>
  2. <submeshes>
  3. <submesh materail="Examples/Ninja" usesharedvertices="fase" use32bitindexes="fase" operationtype ="trangle_list">
  4. <faces count="904">
  5. <face v1="0" v2="1" v3="2"/>
  6. ..........................
  7. </faces>
  8. <geometry vertexcount="781">
  9. <vertexbuffer positions="true" normals="true">
  10. <vertex>
  11. <position x="0" y="179.594" z="-16.0094" />
  12. <normal x="1.66615e-008" y="0.160267" z="-0.987074" />
  13. </vertex>
  14. .....................................
  15. </vertexbuffer>
  16. <vertexbuffer texture_coord_dimensions_0="2" texture_coords="1">
  17. <vertex>
  18. <texcoord u="0.44849" v="0.141284" />
  19. </vertex>
  20. .......................
  21. </vertexbuffer>
  22. </geometry>
  23. <boneassignments>
  24. <vertexboneassignment vertexindex="0" boneindex="7" weight="1" />
  25. <vertexboneassignment vertexindex="1" boneindex="7" weight="1" />
  26. ..................
  27. </boneassignments>
  28. </submeshes>
  29. <skeletonlink name="ninja.skeleton" />
  30. </mesh>

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

Ogre的mesh和skeleton文件数据格式分析的更多相关文章

  1. Axiom3D:Ogre中Mesh文件格式分析(一)

    在Axiom3D,或者说是Ogre的mesh的文件格式我们可能通过代码反推出相关格式,相关过程本来我是直接写的,后面发现相关流程写完后,我自己都看晕了,然后我就把一些过程用Execl整理出来,发现过程 ...

  2. PE文件学习系列笔记四-C++实现PE文件的分析

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com 综述: 首 ...

  3. 教程-Delphi资源文件(全面分析于使用)

    Delphi资源文件(全面分析之位图.光标.图标.AVI.JPEG.Wave)   几乎每个Windows应用程序都使用图标.图片.光标等资源.资源是程序的一部分,但是它是不可执行代码.下面我们就详细 ...

  4. 【JVM】Java中的JavaCore/HeapDump文件及其分析方法

    产生时间 Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下. 有时致命问题发生后,Java应用不会死掉,还能继续运行: 但有时致命问题 ...

  5. 对stm32f373XX的startup.s的文件的分析

    ;******************** (C) COPYRIGHT 2012 STMicroelectronics ********************;* File Name : start ...

  6. Android.mk文件简单分析

    Android.mk文件简单分析 一个Android.mk文件用来向编译系统描写叙述须要编译的源码.详细来说:该文件是GNUMakefile的一小部分.会被编译系统解析一次或多次. 能够在每个Andr ...

  7. /etc/rc.d/init.d/functions文件详细分析

    /etc/rc.d/init.d/functions文件详细分析 functions这个脚本是给/etc/init.d里边的文件使用的(可理解为全局文件). 提供了一些基础的功能,看看里边究竟有些什么 ...

  8. opencart 单入口文件简单分析

    opencart 单入口文件简单分析   opencart是基于mvcl的商城系统,据说是一个外国有人单独开发.比较牛叉.但是又不大符合国人习惯,目前国内opencart社区也是不少. 简单分析了下单 ...

  9. quick-cocos2d-x教程3:程序框架内文件夹分析之docs文件夹

    如今我们分析框架中的docs文件夹.看看这个文档文件夹中,究竟放了那些对我们实用的东西. docs文件夹分析 UPGRADE_TO_2_2_3.md 就是讲升级的变化.详细说明:quick-cocos ...

随机推荐

  1. WPF中的数据绑定Data Binding使用小结

    完整的数据绑定的语法说明可以在这里查看: http://www.nbdtech.com/Free/WpfBinding.pdf MSDN资料: Data Binding: Part 1 http:// ...

  2. [Phoenix] 二、数据类型

    目前Phoenix支持24种简单数据类型和1个一维Array的复杂类型.以下是对支持数据类型的说明: 1. INTEGER 2. UNSIGNED_INT 3. BIGINT 4. UNSIGNED_ ...

  3. ReentrantLock和Synchronized

    1 synchronized 1.1 一旦没有获取到就只能一直等待 A和B都获取同一个对象锁,如果A获取了,B没有获取到,那么在A释放该锁之前,B只能无穷等待下去. 1.2 synchronized是 ...

  4. mongodb学习之:数据库

    首先来介绍下Mongodb的基本概念: 左边一列是关系数据库的术语,右边这一列是NOSQL也就是mongodb的术语 database:       database         数据库 tabl ...

  5. AndroidContactsTest.java

    以下代码使用ContactManager.apk进行测试 package com.saucelabs.appium; import io.appium.java_client.AppiumDriver ...

  6. 操作系统:Bochs 2.6.8的配置文件bochsrc.bxrc修改

    由于现在Bochs 2.6.8相比之前有些改动,之前的配置文件不能直接运行,针对配置文件需要有些修改. 1. 配置文件 ######################################## ...

  7. 测试,测试开发,QA,QM,QC--------- 测试之路勿跑偏

    测试,测试开发,QA,QM,QC可能是测试行业里的细分角色了,加了不少群学习,看到不同人有对自己不同的角色定位.我也做了这挺长时间的测试,也和大部分测试同胞一样,为了一份好的工作学习各种各样的技术,但 ...

  8. java引用问题(—)

    为了美观起见,将说明性问题用注释引起来,这样只是为了美观 基本的类型只有一块存储空间(stack中),而引用类型在内存中有两块存储空间(stack和heap中). public class test ...

  9. 2018值得选用的五个Linux服务器发行版

    [IT168 编译]据最新统计,目前Linux发行版约有300种,几乎都可以作为服务器系统运行.在Linux早期,几乎所有发行版都是“万能”发行版,专门的Linux服务器发行版并不火热,到21世纪初, ...

  10. 为Xen虚拟机扩容根文件系统(LVM)

    ===== 为Xen虚拟机扩容根文件系统(LVM) ===== 1. 增加1个4G的映像文件 # dd if=/dev/zero of=data.img bs=4k seek=1024k count= ...