Collada Dom是一个基于文档对象模型的用来给用户读取Collada数据提供方便的DOM接口,其内核经过我自己在里面找还是Boost和TinyXml,所以在学习Collada结构之前掌握一定的xml的Schema的知识我看来是非常必要的,因为我自己也是一个半吊子学的XML,所以可以看做是一边学Collada的读取一边学dom了(虽然不太可能):
首先是要说明一下collada的学习主要还是来自于http://www.wazim.com/Collada_Tutorial_1.htm这位大神的文章,是英文的,当然国内也有人翻译了第一部分,但是我觉得先看一遍翻译自己再理解一遍英文文档会有更大的收获,然后就是如何得到Dom的问题了,我的话就是在sourceforge中得到的http://sourceforge.net/projects/collada-dom/,因为自己用的collada是1.4版本的,所以只能编译相应的文件,奇怪的就是一定要用对应版本的IDE,否则会出现莫名其妙的错误,我是用VS08编的dll然后自己写程序用vs2010.
下面当然就是学习的过程了,因为自己之前已经花了一定时间理解collada的Schema和其树结构,所以现在可以直接走起(主要是来自于对于其用户手册的理解http://collada.org/mediawiki/index.php/COLLADA_DOM_user_guide和相关的博文http://www.cnblogs.com/Jedimaster/archive/2007/12/01/979256.html,怎么编译和配置guide上都有讲,也不用再废话了,所以就从文档的创建直接开始)。
【创建文档】
DOM中所有的交互都建立在文档的基础上,所以在程序的最初就是需要建立一DAE文档对象,其提供了一个文件之间相互参考的方式,同时也提供其他对象建立所需的状态:
#include<iostream>
#include"dae.h"
#include"dom\domCOLLADA.h"
#include"dom\domAsset.h"
#include"dom\domGeometry.h"
using namespace std;
int main(int argc,char **argv)
{
// 创建一个叫做simple的dae文档,writeAll的作用就是写入添加到DAE中的原有路径中的所有文档当中,而
daeElement
daeElement
daeElement *contributor=asset->add("contributor");//contributer可以为空
daeElement *created=asset->add("created");
daeElement *modified=asset->add("modified");
const char *date="2008-04-08T13;07:25—08:00";//创建时间不能为空
created->setCharData(date); //修改创建时间
modified->setCharData(date);//修改修改时间
/
dae.writeAll();
return 0;
}