【Ogre引擎架构】 第二讲 从零开始 解析角色模型文件(二)

来源:互联网 发布:小猪微信cms 编辑:程序博客网 时间:2024/05/08 16:52

OgreXmlConverter 是Ogre自带的一个工具,负责将.mesh和.skeleton文件转换为对应的.xml文件,以及反向转换。上一讲有个地方写错了,Sinbad.mesh文件所在的目录是Sample/Media/packs/Sinbad.zip,解压Sinbad.zip到当前文件夹,就能看到Sinbad.mesh了。还有看到有些读者编译时遇到一些问题,作者的环境采用的是vs2008,Ogre-1.7.4,Ogre的Dependencies选用old版本下载好src目录有.sln编译后把Dependencies目录复制到Ogre目录里,CMake可以用官方最新版,编译流程参考http://blog.csdn.net/phenixzhong/article/details/8479611

分析之前先看几张图,Ogre的渲染效果(作者自己写的Demo):

                   

                   

OgreXmlConverter对.xml文件的读取流程:

1.创建MeshSerializer对象,MeshSerializer::Import负责完成读取流程

void XMLToBinary(XmlOptions opts)

{

//通过TiXmlDocument打开并读取Sinbad.mesh.xml(opts.source)文件

TiXmlDocument* doc = new TiXmlDoucment(opts.source)

doc->LoadFile();

}

//在这里打开并读取全部的Sinbad.mesh.xml文件,在Parse函数里面进行文件解析

2.TiXmlDoucment::Parse对Xml文件字符串进行解析

将Xml文件的树形结构,解析到一个树中,树的节点就是XmlNode

class XmlElement:public XmlNode{
virtual const char* Parse(const char *p);
const char* Attribute(const char* name) const;
const XmlAttribute* FirstAttribute() const;
const char* ReadValue(const char *p);
XmlAttributeSet attributeSet;
};

通过XmlElement对下面的小树进行深入解析


//因为是树结构,通常在遍历解析的时候都是递归进行,理解清楚就好办了



经过以上步骤,基本可以完成对Xml模型文件的读取,甚至所有Ogre模型骨骼文件都可以读取了

作者新浪微博:http://weibo.com/1012294255/profile?topnav=1&wvr=6)


0 0
原创粉丝点击