加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【Ogre引擎架构-第二讲】 深入OgreXmlConverter解析Sinbad.mesh.

发布时间:2020-12-16 09:15:39 所属栏目:百科 来源:网络整理
导读:OgreXmlConverter 是Ogre自带的一个工具,负责将.mesh和.skeleton文件转换为对应的.xml文件,以及反向转换。上一讲有个地方写错了,Sinbad.mesh文件所在的目录是Sample/Media/packs/Sinbad.zip,解压Sinbad.zip到当前文件夹,就能看到Sinbad.mesh了。还有看到

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.52php.cn/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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读