APP下载

一种面向规则建筑物的OBJ文件无损压缩方法

2018-11-02赵志鹏

测绘通报 2018年10期
关键词:字典顶点材质

黄 鸿,赵志鹏,张 磊

(广州都市圈网络科技有限公司,广东 广州 510000)

随着对地观测技术的快速发展,地理信息数据每天以TB量级增加[1]。三维城市模型数据作为三维GIS的重要内容,在数字城市和智慧城市建设过程中发挥着重要作用。建筑物三维模型作为一种重要的地物,在三维城市展现和应用中具有关键的作用,但其海量的数据给存储和网络传输都带来了极大的挑战。现如今HTML 5和WebGL技术在浏览器端得到了更好的支持,WebGIS对海量数据渲染能力越来越强,逐渐替代传统桌面端成为主流的GIS应用形式。因此对建筑物三维数据进行压缩,以适应网络的传输具有迫切的需求。

在众多三维模型生成文件中,OBJ格式是常用的三维文件格式,针对OBJ文件的压缩方法目前分为有损压缩和无损压缩两种[2]。有损压缩采用模型化简的方法对模型的网格和贴图进行化简[3];而无损压缩在数据经过压缩后,信息不受损失[2],通用的二进制无损压缩在浏览器端缺少广泛的兼容性,但是针对OBJ文件的文本形式的无损压缩的研究较少。本文在分析建筑物数据存储特征的基础上,针对面向建筑物的三维OBJ文件的无损压缩方法进行研究。

1 无损压缩数据模型

1.1 基本思路

OBJ文件是一种采用文本形式存储的三维模型格式,其结构简单,采用单纯的字典状结构排列[4]。OBJ文件本身只存储几何网格信息而不含模型的颜色材质等信息,但可以扩展引用材质库MTL(mtllib)。OBJ和MTL文件在数据存储方面存在如下4个方面的问题,对每个问题可以进行针对性的优化,从而达到数据压缩的目的:

(1) 说明信息占据较大空间。此部分非模型信息,可删除。

(2) 材质信息未能索引化。OBJ文件通过引用MTL表达材质信息,MTL中每个材质单独记录,键和值存在重复记录,可通过键和值的索引化解决重复记录的问题。

(3) 建筑物顶点数据存在较多重复。值得指出的是本文研究的建筑物为普通规则建筑物,而非形状复杂的特种建筑,规则建筑物具有如下3个基本特征:①建筑物立面垂直于地面;②建筑物表面平滑;③建筑物转角为直角。具有这3个特征的建筑物模型的顶点坐标由于共面在单个维度上会存在大量的重复,需要针对性地对这些重复坐标数据进行简化存储。

(4) 面信息中的索引过长。OBJ中面存储的是顶点索引,随着顶点数量的增加,索引存储的位数也逐渐增加,从而占用较多的存储空间。

1.2 压缩数据格式

本文提出的无损压缩方法需要对OBJ进行重新组织,为便于描述,本文将压缩合并的文件区块称为压缩区块,将压缩合并前的原始文件区块称为原始区块。压缩区块的数据格式由3部分组成。

(1) 索引化的材质块。材质块分为头部、材质参数字典和数据块3部分。材质头包含材质标识(MTL)、材质字典的个数和材质的个数,如图1中“1”所示。材质参数字典包含当前模型文件引用到的所有材质参数及相应可用的参数值,如图1中“2”所示。数据块中包含模型引用的所有材质信息,每条材质数据的参数个数与材质参数字典中参数的个数一致,每个参数对应的值为材质参数字典中可用参数值的引用索引,如果当前值不存在则采用“#”填充。

图1 索引化材质块

(2) 折叠收缩后的点块。点块中包含几何网格的顶点、法线及贴图坐标,点块以“VD”标识点块的开始,如图2中“4”所示。其中顶点部分的起始头部为“V”+顶点数据的行数,紧接着是收缩后的顶点数据,每行中的“;”表示一级收缩片段,具体的格式为z;y x0 x1 x2 ...,如图2中“5”所示。其余的法线和贴图坐标采用相同的原理进行数据组织,经过这样的收缩对于比较规整的模型数据能够得到很高的数据压缩率。

(3) 基准+偏移存储的面块。面块的起始位置包含一个面块的说明头部,由标识符“VF”和面的个数组成,如图3中“8”所示。第二部分是以“G”开头的组说明,组中还包含了组名及组的个数,如图3中“9”所示。第三部分是指定材质,以“UM”标识,第二位为材质在索引材质块中数据部分的索引值,根据该索引可以直接找到相应的材质值,第三位是当前面块下所有面索引的基准值,该值当前面块索引分量的最小值,如图3中“10”所示。最后一部分是面块的数据部分,该部分每行表示一个面,每个分量记录的是相对于基准值的偏移值,如图3中“11”所示,在数据读取的过程中只要将偏移值和基准值进行相加便可得到真实的顶点数据的索引值。

图2 折叠收缩后的点块

2 压缩方法

图4 材质索引化的过程

图5 面块中材质索引化的过程

3 试验结果与分析

3.1 试验及分析

本文的试验分为两个步骤:①对原始数据进行压缩,一共选取某单位的两组三维模型数据进行试验。一组为连体的建筑物,这栋建筑物属于正常的规则建筑物;另外一组为不规则地面数据,采用不同的数据类别来验证本方法在实际使用中的效果。②前端引擎可视化。本文选择目前在前端三维可视化方面应用比较广泛的Three.js引擎作为数据渲染的基础框架,硬件环境为Intel(R) Core(TM) i5-5200U CPU @ 2.20 GHz 2.19 GHz。为了能够解析压缩后的数据格式,本文为此开发了一套Three.js的压缩数据加载插件CompressLoader,以保证数据能够被正确加载。

3.2 数据压缩试验

分别将选定的建筑物和地面数据命名为Building和Base。根据压缩结果可以看出规则建筑物的压缩比优于不规则建筑物,其中顶点行数的压缩起到了关键的作用,规则的建筑物顶点可以被很好地折叠与收缩,减少重复记录的空间,但是对于不规则地物的顶点折叠收缩的效果就没有那么的明显。

表1 Building和Base压缩统计信息

3.3 前端可视化试验

使用Three.js进行数据加载和可视化,如图6所示,本文只统计文件在浏览器端内容加载的时间,即Content Download的时间,对于网络加载时间本文采用多次测量取平均值的方法进行测量,记录了20次结果的平均值,保证结果准确可靠。通过表2统计的结果可以看出压缩后的文件体积减小,网络传输效率有明显的提高。

图6 Building和Base数据在Three.js中的可视化效果

数据名原始数据加载时间压缩数据加载时间Building765.468425.261Base712.344489.224

4 结 论

在分析建筑物数据特征的基础上,针对原始OBJ文件结构冗余、体积过大、网络传输效率低的不足,提出OBJ文件无损压缩数据模型及OBJ文件到压缩格式的转换方法,并结合三维引擎Three.js进行可视化验证。试验表明: 该压缩方法针对规则建筑物能够起到有效的压缩效果,提高数据传输效率,但是对于不规则的地物数据压缩效果还不理想,这也是后续需要深入研究的课题。

猜你喜欢

字典顶点材质
过非等腰锐角三角形顶点和垂心的圆的性质及应用(下)
过非等腰锐角三角形顶点和垂心的圆的性质及应用(上)
刚柔并济
字典的由来
大头熊的字典
正版字典
材质放大镜电光闪耀亮片
外套之材质对比战
针织衫之材质对比战
数学问答