3DXML文件格式解析及应用
更新时间:2023-08-30 03:40:01 阅读量: 教育文库 文档下载
- 3dxml是什么文件格式推荐度:
- 相关推荐
2010年 工 程 图 学 学 报 2010第2期 JOURNAL OF ENGINEERING GRAPHICS No.2
3DXML文件格式解析及应用
王晓斌1, 宁 涛1, 王 可2
(1. 北京航空航天大学机械工程及自动化学院,北京 100191;
2. 北京新洲协同软件技术有限公司,北京 100062)
摘 要:3DXML文件格式是一种重要的轻量化CAD数据格式,通过对3DXML文件格式的分析,论述了一种基于MSXML解析器的文件解析技术。这种解析方式可以快速提取3DXML文件中的重要信息,通过对几何及属性信息的重构,建立整个装配体场景,使用文件中的多分辨率模型,可以提高较大模型的渲染速度。最后给出了基于3DXML文件格式的轻量化CAD浏览器的应用实例。
关 键 词:计算机应用;3DXML技术;MSXML技术;SAX技术;轻量化模型 中图分类号:TP 391
文献标识码:A 文 章 编 号:1003-0158(2010)02-0033-05
Parsing 3DXML File Format and Its Application
WANG Xiao-bin1, NING Tao1, WANG Ke2
( 1. School of Mechanical Engineering and Automation, Beijing University of Aeronautics and Astronautics, Beijing 100191, China;
2. United Right Software Limited Corporation, Beijing 100062, China )
Abstract: 3DXML file format is an important lightweight CAD data format. Through
analyzing 3DXML file format, an approach to parse 3DXML file with MSXML is presented, which can be used to get important information from 3DXML file quickly. According to reconstructing the geometry and attribute information, the whole scene of assembly will be built. Using the LOD models, the speed of rendering will be accelerated. Finally, a lightweight CAD model viewer based on 3DXML file format is given as an example.
Key words: computer application; 3DXML; MSXML; SAX ; lightweight model
三维模型不仅是设计和制造过程中表达产品信息的重要媒介,在产品发布,产品销售,维护等过程中,同样扮演着重要的角色。通过在网络上浏览产品的三维模型,将三维模型整合到技术文档、维护手册、宣传册、邮件中,用户可以更直接的了解产品的相关信息,更加迅速地掌握
收稿日期:2008-09-22
作者简介:王晓斌(1984-),男,辽宁抚顺人,硕士研究生,主要研究方向为CAD/CAM技术。
产品的使用,降低产品的维护成本。
但是传统的CAD文件中包含重要的设计信息,而且文件较大,不便于网络传输和企业之间的数据交流。针对这些问题,需要一种轻量化的三维模型数据格式,保留产品的三维模型显示信息,过滤掉重要的设计信息,同时文件的尺寸更
·34· 工 程 图 学 学 报 2010年
小。
通过CAD软件内置的工具,可以将三维模型转换成VRML,STL,PLY等文件,这些文件采用三角片来表示模型,过滤了模型的设计信息,但是没有装配信息,不能表达零件之间的关系,同时文件较大,不便于网络传输和存储。
为此,Dassault Systemes公司推出了3DXML文件格式[1]。3DXML是一种基于XML的轻量化的3D数据格式,它体积更小,压缩比高,能使用户快速、简单地获得和共享精确的3D数据。
本文针对3DXML文件格式进行解析,给出解析的主要步骤和基于3DXML文件的轻量化三维模型浏览方案及应用实例。
信息,建立适当的数据结构,对文件数据重新进行组织,以实现对三维模型的浏览和编辑。
2 3DXML解析器设计及实现
本文所采用的3DXML文件格式为最新的4.0版本,其解压后的所有文件都可以使用文本编辑器进行浏览和修改。
解析器使用MSXML4.0进行XML文件的解析[2],使用SAX(A Simple API for XML)方式进行解析,该解析方式适合解析大型的XML文件,可以快速提取大型装配体的相关信息。SAX是一个事件驱动接口,采用顺序的方式读取XML文件,在读到XML元素的开始标记,结尾标记和内容标记时将产生一系列的事件,返回元素名,属性值,元素内容字符串等信息供用户使用。对MSXML所提供的接口ISAXContentHandler,派生出新的类,并重载该接口的3个虚函数,如表1所示。
表1 SAX解析主要重载函数 函数名称 startElement characters endElement
主要参数
元素名称,属性信息 字符串值及其长度 元素名称
1 3DXML简介
3DXML是一种完全开放的数据格式,不同于一般的CAD文件,3DXML文件中不含有几何信息,只包含模型实体信息,同时保有装配信息。这使3DXML的文件尺寸远远小于一般的CAD文件,同时3DXML对文件近一步压缩,使其能够提供更快的文件传输速度和更短的储存时间。
3DXML完全遵循XML语法,使用任何的标准XML解析器都可以对其进行解析,提取需要的信息。
Dassault System在其所有的产品中如CATIA,Virtools等,都加入了对3DXML的支持,可以将CAD文件转换成相应的3DXML文件,同时Dassault Systemes提供了3DXML浏览器,但是只能进行最基本的显示操作,而用户在使用模型的过程中,往往要进行如拖拽,生成爆炸图,设置属性,添加注释等操作,这就需要提取图形信息,重新进行组织,完成所需的功能。为此,本文对3DXML文件格式进行解析,提取必要的
startElement响应XML元素结点开始事件,endElement响应结点结束事件,character处理所有的非结点字符,包括元素值,空格和换行符。
当解析器读取到文件相应内容时,将自动回调上表中相应函数,并将文件信息作为参数传入函数供使用者调用。
3DXML文件的基本构成如图1所示。
图1 3DXML多文件组织结构
第2期 王晓斌等:3DXML文件格式解析及应用 ·35·
3DXML文件是一种多文档格式,并采用ZIP算法压缩成一个文件。Manifest文件中的<Root>元素结点值为装配信息文件名,即扩展名为3dxml的文件。扩展名为3drep的文件保存图形数据及属性信息。在本文的解析器中,有两个主要的类,都派生自接口ISAXContentHandler,分别用来解析装配和图形文件。
在解析的过程中,首先对文件进行解压缩,然后读取Manifest文件,获取装配信息文件名。读取装配信息,生成产品结构树,同时获取所有的图形数据文件名,最后依次解析图形文件。
2.1 装配信息解析
在装配文件中保存的信息较多,但产品的装配结构是人们最关心的,因此主要针对装配信息进行解析。
3DXML文件中零件之间的装配关系采用有向非循环图结构进行组织[3]。其文件数据结构如图2所示。
3DXML采用引用/实例(Reference/Instance)的方式描述产品结构,引用表示一个可以被重复使用的物体,实例则表示该引用的一个实例化物体,而一个引用常常又是由多个实例组成。
图2 装配文件结构
产品结构信息由XML元素<ProductStructure >标识其开始,该结点有4类子结点,<Reference3D>,<Instance3D>,<ReferenceRep>,<InstanceRep>。每个结点具有唯一的ID值。<Instance3D>结点有3个子结点,<IsAggregatedBy>,<IsInstanceOf>,<RelativeMatrix>,前两个子结点中分别保存了一个ID值,表示该实例结点是哪个引用结点的组成部分,该实例结点是哪个引用结点的一个实例,最后一个子节点存储了该实例结点相对其上层引用结点的相对位置矩阵。<ReferenceRep>结点保存了图形数据的文件名,<InstanceRep>结点作为连接图形结点和零件引用结点的中间结点。其两个子结点保存的信息与<Instance3D>的前两个子节点的信息相同。在本文的解析器中,有向非循环图中的结点为<Reference3D>和<Instance3D>两个元素结点。其数据结构如下:
struct Referebce3D {
结点ID,名称;
图形结点指针;/*即<ReferenceRep>元素结点,若该结点不是零件结点,则为空*/
组成该引用的实例结点指针链表/*若该结点为零件,则链表为空*/
};
struct Instance3D {
结点ID,名称;
Referebce3D指针1;/*该实例结点为该
引用的一个实例*/
Reference3D指针2;/*该实例结点是该
引用的组成部分*/
相对位置矩阵; /*该实例结点相对指针2的位置矩阵*/
·36· 工 程 图 学 学 报 2010年
};
解析过程主要针对上图中的4类结点进行解析,重点解析Reference3D和Instance3D结点。为了便于结点的查询,创建一张结点指针表,保存结点指针,即Reference3D*和Instance3D*。在读取到引用结点开始元素时,检测指针表中对应ID的结点是否创建,若指针为空,则创建,然后读取相应的属性信息。在读取到实例结点时,同样检测对应指针是否为空并读取属性信息,对于实例结点的前两个子节点,只判断对应ID的结点是否为空,为空则只分配内存,不为其填入属性信息。
有向非循环图结构可以大大减少文件的尺
寸,但不便于图形的绘制和属性的传递。为此,需要将图形结构装换成常用的树形结构。采用深度优先原则遍历图,遍历过程中,将每条路径中出现的Instance3D结点做为树结点添加到树结构中。
2.2 图形数据解析
在装配文件中,每个<ReferenceRep>元素结点对应一个3drep文件,即图形文件。
3DXML的一个图形文件中可能包含多个零件的图形数据,这些零件在装配体结构中,可以看作是一个完整的零件,而不会影响装配结构的表达。其文件数据结构如图3所示。
图3 图形文件结构
每个零件的图形数据由XML元素<Rep xsi:type="PolygonalRepType">标识其开始,由面片集合<Faces>,边集合<Edges>和顶点信息<VertexBuffer>组成。顶点缓存中保存该零件所有顶点的坐标和法线,在面片信息中只保存组成面的三角形(条带,扇)的索引,可以大大减少了图形文件的尺寸。在边集合中的点则直接保存为点的坐标值。为了加快图形绘制的速度,面片信息中使用了LOD(多细节层次)模型,每个零件最多有8个LOD模型,由元素<PolygonalLOD>标识。在图形绘制过程中,计算该零件到视点的距离,然后根据文件中每个细节层次所提供的临界选取值,即<PolygonalLOD>的属性accuracy,选择
相应的LOD模型绘制,可以大大提高渲染的效率。
图形文件中没有存储各基础图元的数量,为了加快解析速度,减少内存使用,可预先分配一块足够大的缓存,每次将某种图元数据全部读取到缓存并计算出图元数量[5]。在读取到该图元结点结束的位置时,为相应的图形结点分配内存,将缓存中的数据拷贝至其中,并将缓存清空,为下个图元结点数据加载做准备。 2.3 解压缩
3DXML文件是采用ZIP压缩算法进行压缩的。通过文本编辑器打开3DXML文件,可以看到文本的前两个字符为PK,所有采用ZIP算法
第2期 王晓斌等:3DXML文件格式解析及应用 ·37·
压缩后的文件,其前两个字符都以PK作为标识。
在本文的解析器中,采用了Zlib库进行解压,Zlib库是一个开源的免费的商用程序库,主要用来解压/压缩字符串。本文解析器在其基础上进行了封装,使其可以解压文件,这里不再赘述。
3 3DXML数据格式的应用
在VC6.0平台上,作者开发了基于3DXML文件的轻量化浏览器,采用OpenGL和Direct3D9.0完成渲染操作。同时,开发了其控件
版本,可以嵌入文档或网页中,便于产品信息的发布和共享。
浏览器界面如图4所示。在模型的左边用树形结构表示产品的装配层次关系。系统提供了基本的交互操作,可以设置零件的颜色,实现了零件的显示和隐藏。
图4中的装配体由超过200个零件组成,文件大小仅为1.38M,为原始CAD文件大小的5%,文件解析时间大约5秒,其帧率可达到30帧/秒以上,完全可以满足交互操作的效率要求。
图4 基于3DXML的轻量化浏览器
[2] Fabio Arciniegas. Advanced programming guide with
4 结 束 语
3DXML文件格式体积小,便于扩展和传输,可以大大加快产品信息的发布和企业之间资源的共享。本文针对3DXML文件格式进行解析,提取重要的装配信息和图形数据。供用户在此基础上进行进一步的开发。
参 考 文 献
[1] Dassault System. 3D XML User’s Guide[EB/OL].
http://www.77cn.com.cn, 2007.
C++XML [M]. 北京: 中国希望电子出版社, 2002. 102-357.
[3] 曹 翔. 3DXML标准在协同装配中的研究与应用[D].
南京: 南京航空航天大学, 2007.
[4] 孙 静, 宋 杨, 胡金星, 等. 大型XML文件的分
割和动态加载研究[J]. 计算机工程与应用, 2003, 16(6): 107-125.
[5] 刘云华, 刘 俊, 陈立平. 产品三维数据模型轻量
化表示实现[J]. 计算机辅助设计与图形学学报, 2006, 18(4): 602-607.
[6] 谢君英. 微软XML技术指南[M]. 北京: 中国电力出
版社, 2003. 126-460.
正在阅读:
3DXML文件格式解析及应用08-30
省培儿幼儿园“信息技术与学科融合”教学设计新部编版05-03
终生难忘的话作文600字06-30
消费者涉入前因-涉入程度与购买意愿间关系的实证研究04-28
白酒操作规程06-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 解析
- 格式
- 文件
- 应用
- 3DXML
- 环境绩效监测与合规性评价控制程序
- 2016年北京中医药大学中医专业考研复试真题,参考答案,考研参考书,复习方法,考研资料
- 自动计算空调水管及冷量管径对应表-office2010以上版本
- 音乐与健康 章节测试答案
- 老三篇学习心得体会
- 孝感市2012年中考调研考试地理学科质量分1
- 葡萄是酸的教案
- 钢铁企业蓄热式燃烧技术推广实施方案
- 专业化推销总论
- 《21世纪课堂评价》作业模块三
- 二手房经纪人实战技巧-闵新闻
- PS制作动感火焰效果图
- 《数学教育学概论》模拟试题及答案13
- 【推荐精选】2018-2019学年高中地理 第三章 地球上的水 第三节 水资源的合理利用课时提升 新人教版必修1
- 大学生消费心理调查报告
- 阁楼楼梯装修效果图 小楼梯依然精彩
- 2017-2022年旅游酒店行业深度分析及“十三五”发展规划指导报告目录
- Basys 2数字电路实验指导书
- 玉米病虫害防治
- 浅谈 220KV 高压输电线路的防雷技术