版权信息
省级大型综合性科技类期刊
主管部门:自治区科技厅
主办单位:自治区科学技术信息研究院 
协办单位:自治区科学技术情报学会
编辑出版:科技期刊编译室
刊社地址:呼和浩特新城西街149号本刊杂志社
邮政编码:010000
电      话:0471-2536371

E-mail  :

nmgkjzz@vip.163.com 

网站地址:www.nmgkjzz.com


往期杂志
当前位置: 首页>往期杂志>详细介绍

基于Android的Universal 3D场景展示

时间:2016-07-01来源: 作者: 点击: 627次


  :    通用三维规范(Universal 3D,  简称U3D)已经以其通用、便携的特点在机械、医疗等行业得到了广泛应用。随着智能移动设备的飞速发展,U3D的多平台支持也成了目前亟需解决的问题。笔者具体分析了U3D文件结构和文件数据的压缩算法,实现了U3D文件在安卓平台上的解析。深入研究了U3D规范中三维场景数据的定义和组织,基于OpenGL ES实现了U3D场景渲染和交互。

关键词:   Universal 3D;文件结构;压缩算法;三维场景

中图分类号:    TP311        文献标识码: A       doi:10.3969/j.issn.1006-2475.

The Demonstration of Universal 3D Scene on Android

Wang Wen-cheng1, Guo Lian-shui2

( School of mechanical engineering and automation, Beihang University, 100191,Beijing,China)

 

Abstract: The Universal 3D (U3D, for short) is general and portable, which makes it widely applied in various industries such as machinery and medical. Along with the rapid development of smart mobile devices, multiplatform supports of U3D has come to be a major issue to be addressed. In this article, the author of this article analyzes concretely the file structure of U3D and the data compression algorithm for U3D files, a deep study into the definition and organization of 3D scene data in U3D is also made. Meanwhile, the article provides a sketch from the implementation of U3D file parser on Android and scene rendering based on OpenGL ES.

Key words: Universal 3D;file structure;compression algorithm;3D scene


0      Universal 3D简介

在过去的几十年里,CAD/CAM行业得到了长足发展,在工业设计、生产制造中扮演越来越重要的角色,许多优秀的三维工业软件得到了大规模的应用。然而,由于三维工业软件间的技术壁垒和软件厂商的刻意垄断,这些软件通常只能支持相应的三维文件格式,这严重阻碍了三维数据上下游的传递[[1]]。为了解决下游3D CAD数据重用和可视化问题,Intel公司联合几十家三维工业软件公司组成的三维工业论坛制定了通用三维规范(Universal 3D)。

U3D文件格式去除了原始绘图中的相关工程数据,这使得U3D文件容量极大减少,从而能实现其快速下载、快速渲染等特点,以满足当前远程传输和便于携带数据的需要[[2]]。目前,主流的三维工业软件如CatiaSolidWorksPro/Engineering等都已经加入了对U3D的支持,U3D文件也被广泛应用于虚拟展示、在线测量等领域[[3]]。但在智能移动设备上,特别是目前占市场最大份额的Android平台上,仍未有相应实现。

1      U3D文件解析

1.1    U3D文件结构

U3D文件由文件头块、声明块和附加块组成,如图1所示。文件块拥有相同的基本数据结构:块类型、数据大小、元数据大小、数据和元数据,其中每个数据成员都以四字节对齐[[4]]

 SEQ \* ARABIC 1 U3D文件结构图

文件头块主要包含文件版本、文件配置、文件大小、编码方式和文件数据单位等信息,解析器通过文件头块中的信息选择文件解析方式。同时,文件块也被视为一个特殊的声明块。

声明块包含了文件中所有的对象信息。在U3D文件中,主要有文件头、文件参考、节点、修改者链等对象,如表1所示。

 SEQ \* ARABIC 1 U3D基本对象类型表

对象类型

对象名称

0x00443355

文件头

0xFFFFFF12

文件参考

0xFFFFFF14

修改者链

0xFFFFFF15

优先级更新

0xFFFFFF21

组节点

0xFFFFFF22

模型节点

0xFFFFFF23

光照节点

0xFFFFFF24

视图节点

附加块提供了U3D对象的附加信息,每个附加块必须与一个声明块相关联。通常,附加块中包含的是U3D对象的资源信息。

1.2    U3D文件数据压缩算法

U3D规范给出了U3D文件数据的编码规范,提供的位编码算法定义了一个与平台无关的二进制数据表示方式。该位编码算法是一种基于整数运算的算术编码算法[[5]],主要用在文件中包含大量可压缩数据的部分,如几何资源数据和动画资源数据部分。

算术编码的基本原理是将编码的数据映射到实数区间[0,1)。算术编码进行编码时,从实数区间[0,1)开始。按照符号的频度将当前的区间分割成多个子区间。根据当前输入的符号选择对应的子区间,然后从选择的子区间中继续进行下一轮的分割。不断的进行这个过程,直到所有符号编码完毕。对于最后选择的一个子区间,输出属于该区间的一个小数。这个小数就是所有数据的编码。

由于该编码算法中的高精度实数运算在目前计算机系统上无法实现,基于整数运算的算术编码算法将子区间映射到整数区间上。通过符号的频度信息,很容易计算出映射区间。

算术编码的统计模型可以是静态的,也可以是动态的。在U3D规范中,如果符号分布随机性较大且难以预估采用静态模型,而动态模型通常用于被编码的数据分布集中且容易预估的情况。

笔者在参照CACM87算法和U3D规范的基础上,实现了U3D压缩数据的解码。

2      U3D场景渲染

2.1     U3D场景组织结构

如图2所示,U3D的场景组织结构是基于几个关键元素的相互作用:场景图、调色板、节点、资源和修改者链。调色板控制节点和资源的访问。资源中包含绘制3D对象需要的数据信息,而节点提供了3D对象引用资源的空间信息和层次关系。多个节点可以引用同一个资源,所以节点是资源的一个实例。修改链中的修改者用于管理节点和资源中的数据。

 SEQ \* ARABIC 2 U3D场景组织结构图

2.1.1调色板

调色板由一个排序后的实体列表构成。每个实体是由一个标识名称和指向对象的引用组成,客户程序可以通过标识名称或者实体列表的枚举器访问调色板中的实体。

2.1.2  节点和节点资源

节点包含了层次信息和相对于父节点的空间信息,作为资源的实例被引用。通过调色板,节点可以获得资源中包含的3D对象的主要信息。节点和资源通过调色板分开和连接使得资源可以被重复使用。

在一个复杂场景中,可能包含很多相同的几何体,重复创建资源无疑会浪费空间和时间。通过调色板控制资源和节点访问的方法可以有效解决这种问题。

2.1.3  修改者链

修改者链中包含一个节点和一个有序修改者列表,并且节点必然是修改链中的第一个对象。每个修改者接受一系列数据元素即一个数据包作为输入,定义一个数据元素集作为输出,每个输出都包含一个依赖包。

修改者链将从节点及其引用资源获得的数据作为数据包传给修改者,然后基于输入的数据包和该修改这输出的数据包创建一个新的数据包继续传递给下一个修改者,直到所有修改者都进行相应操作后,将最终数据包作为修改者链的输出,如图3所示。

 SEQ \* ARABIC 3 修改者链数据处理流程

2.2     U3D中的连续层次细节网格

层次细节(LOD)技术是指通过一些简化规则简化模型渲染细节,从而提高渲染效率。U3D中,连续层次细节(CLOD)网格生成器可用于建立CLOD三角网格,它不仅包含几何体本身的几何信息,还包含从网格中增加或删除几何体的方法描述。三角网格中的几何体个数就代表了模型渲染细节的层次。

CLOD网格生成器由基本网格和基本网格更新信息组成。基本网格为最小网格,不包含分辨率更新信息,所以一个网格细节层次控制器无法被用于降低基本网格的分辨率。基本网格更新信息描述了如何更新网格的细节层次。要增加分辨率,更新信息中为每个属性、新三角面和对已存在面的更新提供了新的引用接口。例如,要提高一个三角面的分辨率,需要向三角面片中添加一个新点,这时CLOD网格生成器会在对应的点列表中添加新点的位置信息,在对应的法线列表中添加新点的法线信息,修改原三角片中的一个顶点信息,增加两个新的三角片的信息,如图4所示。

 SEQ \* ARABIC 4 CLOD简单示例

2.3     基于OpenGL ES的场景渲染

OpenGL ES是OpenGL的一个子集,专为嵌入式设备设计的三维图形扩展接口。在Android设备上建立AndroidOpenGL ES的联系通常有两种方式:1、继承Android定义的GLSurfaceView类并实现Render接口;2、通过NDK方式,使用EGL接口创建OpenGL绘制环境。笔者从跨平台可移植方面考虑选择第二种方式[[6]]。样例效果如图5

 SEQ \* ARABIC 5 Android样例图

3      结 语

U3D文件具有很好的通用性和便携性,经过解析可以将三维场景渲染在智能移动设备上。但由于移动设备的性能问题,解析较大U3D文件并加载场景的效率仍有待进一步提升。同时,从PDF文件中抓取内嵌的U3D对象也是笔者接下来研究的重点。

参考文献


---------------------------------

收稿日期:2016-04-26                     

作者简介: 王文诚(1990), 男,江苏东台人,硕士研究生,主要研究领域为CAD/CAM、计算机图形学;郭连水 (1967), 男,副教授,主要研究领域为设计优化技术与多学科综合优化、飞行器制造技术与CAD/CAM 企业信息化.


 



[[1]]苗英华,苏鸿根. U3D文件格式及运行机制剖析[J]. 计算机应用与软件,2010,02:249-251+282.

[[2]]冯晓东. 基于通用三维规范的文件播放系统的设计与实现[D].华中科技大学,2007.

[[3]]郭庆,王翔宇,王元争. 基于U3D的航空发动机涡轮装配模拟器开发[J]. 实验技术与管理,2012,04:111-114.

[[4]]ECMA-363: Universal 3D File Format[S/OL]. http://www.ecma-international.org.

[[5]]Ian H. Witten, Radford M. Neal, John G. Cleary, Arithmetic Coding for Data Compression, Communications of the ACM, 1987, 30(6), 520-541.

[[6]]黄小凤,宋瑾钰,俞成海. 基于OpenGL ES的移动平台的三维模型绘制[J]. 工业控制计算机,2013,01:60-62.

本刊创刊于1982年,是由自治区科技厅主管、自治区科技信息研究院主办,由自治区科技情报学会协办、国内外公开发行的省级综合性科技刊物,是反映内蒙古自治区科技与经济发展的窗口。杂志入选《中国期刊全文数据(CJFD)》全文收录期刊和《中国学术期刊综合评价数据(CAJCED)统计刊源期刊,《中国核心期刊(遴选)数据库》收录。本刊是公开发行的综合性科技期刊,为月刊,大16开本。本刊坚持以科技创新为目标,融科技、经济、信息、产业、市场为一体,是促进科技成果转化、推动科技进步、加强技术创新,促进经济发展的专业性期刊。