【Ogre引擎架构-第二讲】 深入OgreXmlConverter解析Sinbad.mesh.xml文件(二)

前端之家收集整理的这篇文章主要介绍了【Ogre引擎架构-第二讲】 深入OgreXmlConverter解析Sinbad.mesh.xml文件(二)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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://www.jb51.cc/article/p-xtqkpdpz-bmn.html

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模型骨骼文件都可以读取了

但是对于Ogre这个庞然大物,上面的内容实在是微不足道,疏漏之处还望不吝指正,接下来下周(暂定每周一博看看效果),下一讲,看看怎么把读到的内容塞进Ogre的Mesh里,后面的世界更精彩,敬请期待(PS:读者若有疑问或者建议,可在下面直接发表评论,有时间作者第一时间回复,作者新浪微博:http://weibo.com/1012294255/profile?topnav=1&wvr=6)

猜你在找的XML相关文章