王行风,汪云甲
(中国矿业大学 环境与测绘学院,徐州 221116)
伴随着城市空间立体化开发进程的加速,室内空间应用的总规模大幅增加,室内环境越来越复杂,功能也越来越重要。同时伴随着物联网感知定位技术的发展,基于大型场馆的室内导航应用需求越来越受到关注,导航由室外进入室内成为地理信息系统(geographic information system,GIS)进一步发展的必然[1]。
传统的导航应用主要集中于室外区域,技术上则主要利用二维矢量地图或二维影像来实现,虽然部分产品初步实现了添加兴趣点三维模型的功能,但基础底图依然是采用二维矢量地图进行展示。在室内复杂环境下,尤其是在多层大型建筑物内部,这种基于二维矢量/栅格的导航地图往往因为不够直观而难于为用户提供快速理解周边环境及所处方位的足够信息[2-3]。因此,基于增强现实技术,面向个人移动平台(手机、平板等)研发室内三维导航系统已成为当前位置服务领域新的研究热点和重点领域[4-5]。但个人移动平台固有的存储容量和计算能力有限的现状以及用户对三维模型的高逼真度、流畅渲染等的现实需求之间的矛盾使得个人移动平台端的三维模型可视化质量和绘制效率成为室内三维应用中迫切需要解决的工程问题[6-7]。
模型复用、多细节层次、动态调度以及可见性裁减都是三维应用中普遍采用的实时渲染技术[8-12]。本文拟从轻量化建模的角度,利用数据库技术重新组织三维模型数据,通过合理的数据重构,有效降低数据冗余,提升数据传输和绘制的效率,为高逼真度的三维模型可视化绘制奠定可靠的数据基础和保证。
图1 3D场景数据组织和管理
三维模型的表示方法有栅格和矢量两种类型。栅格类型基于体元、结构简单、空间叠加操作方便,但占用存储空间大、数据精度低、缺乏空间拓扑关系,不利于空间分析等的实现[9-10]。矢量类型利用坐标来表达空间对象,在一定程度上克服了栅格数据冗余严重、精度低的缺点,同时又可以采用数据库技术对模型实体之间的拓扑关系进行管理,因此宜于空间分析操作的有效实现。因此,
矢量结构是实际应用中三维建模中常用的数据类型。矢量格式的三维数据多以模型对象为基本单元进行数据的组织和管理。但随着用户对模型高逼真度的追求,模型数据量飞速增长,单个复杂实体的真三维模型就可能包含几万、几十万甚至几百万个多边形,从而导致系统绘制效率低下[11],难以满足个人移动平台三维(3D)模型及场景流畅渲染的需求。本文采用矢量数据类型,在考虑室内三维空间导航及网络路径拓扑构建需要的基础上,参考相关文献[7,12-13],结合渲染引擎的工作机理,将3D模型对象抽象为顶点、三角面、外观(材质/纹理)等基本单元,对3D模型数据进行重新组合和优化处理,构造了针对三维数据的SLMATV数据组织和管理方案(场景-模型层-模型-外观-三角形-顶点,scene-layer-mode-appearance-triangle-vertex,SLMATV),获得较为紧凑的模型数据组织方式,在兼顾渲染效率的基础上,以达到模型轻量化的目的。数据组织和管理方案见图1。场景是由一个或多个图层以及图层属性值的集合,图层是根据不同的主题进行组织的模型集合体,是一个独立单位。SLMATV主要是侧重于从降低数据冗余,实现模型数据轻量化的角度以到达流畅渲染的目的。基本思路为:
图2 简单立方体
三角形ID点几何坐标法向量贴图坐标点ID点坐标法向ID法向向量ID坐标Point1x1,y1,z1normal1nx1,ny1,nz1Texture1tx1,ty1三角形1Point4X4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4Point5x5,y5,z5normal5nx5,ny5,nz5Texture5tx5,ty5Point6x6,y6,z6normal6nx6,ny6,nz6Texture6tx6,ty6三角形2Point5x5,y5,z5normal5nx5,ny5,nz5Texture5tx5,ty5Point4x4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4Point4x4,y4,z4normal4nx4,ny4,nz4Texture4tx4,ty4三角形3Point1x1,y1,z1normal1nx1,ny1,nz1Texture1Tx1,ty1Point3x3,y3,z3normal3Nx3,ny3,nz3Texture3Tx3,ty3……………………
顶点实体数据主要包括几何坐标、法向量及贴图坐标等属性信息,其存储的传统方法多是以模型顶点为存储的基本单元逐三角形存储。这里以图2的简单立方体为例,传统的存储方式如表1,从中可见,顶点1为6个三角形所共有,它的几何坐标、法向量和贴图坐标最多可能被存储6次,这种存储方法导致数据冗余现象较为严重,直接影响了数据的读取及模型的渲染效率[7]。本文从降低数据冗余的角度,按照“顶点·属性·索引列表”的思想对顶点的数据进行重新组织,组织方式为将顶点的几何坐标、纹理和法线向量等作为属性信息分别以列表方式存储(表2、表3和表4),这种存储方式顶点的几何信息、纹理坐标和法线向量信息分别列表进行存储,没有重复存储的节点信息,考虑到三维模型顶点数据众多,这样可以大幅度减少存储的空间占用。
表2 顶点几何坐标表
表3 顶点法向量
表4 纹理坐标
注:w指深度纹理坐标。
3D实体建模多以单个平面作为基本组织和绘制单元。一般来说,单个3D模型包含很多平面,很多情况下,这些平面可能具有相同的材质。绘制的时候渲染引擎(如OpenGL等)多会逐个平面进行绘制[7,9],这就不可避免的造成多个材质的频繁切换,从而影响到三维模型的渲染效率[14]。因此,为了提高绘制效率和渲染的速度,SLMATV方案改成以材质和纹理状态为单位的数据存储方式,并集中存储具有相同纹理和材质属性的模型数据,一个appearance可能具有多个平面,但这些平面具有完全相同的材质,从而避免材质的频繁切换或者着色器的传送次数。SLMATV方案采用数据库存储技术存储的外观表见表5和表6。
构建索引表的目的是通过提供索引信息来消除相邻模型边界、公用顶点之间的数据冗余和不一致的问题。索引表的建立虽是添加了额外的数据,但相比之下,整型数据的索引信息要比存储大量重复的浮点型的顶点属性信息数据存储开销要小得多。这是实现达到模型轻量化的关键环节,具体方法是在对3D顶点属性、外观对象数据存储的基础上,构建模型·外观、外观·三角形、三角形·顶点、三角形·三角形关系等索引表。
表5 外观·材质表
注:此处的光照模型采用Phong模型,tf,ka,kd,ks,ke为4个float值,其余都为单个float。
表6 外观·纹理表
2.3.1 模型·外观索引表
一个实体模型可能由不同的外观,如材质/纹理构成的。外观可由一个以上的多个平面组成,是最基本的绘制单位。模型-外观索引表表达了模型由哪些外观组成的,具体如表7。在进行模型绘制的时候,可以外观进行绘制。
表7 模型·外观表
2.3.2 外观·三角形索引
一个外观包含了诸多顶点,构成了数目众多的三角形。外观-三角形索引表保存了构成外观的三角形顶点的索引,数目众多,在绘制的时候就可以根据索引获得三角形顶点属性信息。索引表的结构见表8。
表8 外观·三角形表
2.3.3 三角形·顶点索引
三角形利用构成其三顶点在顶点数组中的索引值来表达,三角形的一个顶点需要保存两个索引值,分别对应几何坐标、纹理坐标或法向量列表中的索引号(当三角形上有纹理时,仅保存几何坐标和纹理坐标;当无纹理时,仅保存几何坐标和法向量值)。索引表的结构见表9。
2.3.4 三角形·三角形关系表索引
三角形关系表反映了三角形之间的邻接关系,能够呈现三角形之间的拓扑关系,在需要对三角形进行边界分析和处理的时候,这种三角形拓扑关系具有莫大的帮助,有助于空间查询、空间分析处理等实现[15,16]。例图(图3)和相应的索引表的结构见表10。
表9 三角形·顶点索引表
图3 三角形关系
ID邻接关系AB,EBA,CCB,DDC,EEA,D
本文利用矢量模型,采用数据库技术对三维模型数据进行组织和重构,通过降低数据量和减少渲染计算量从而改善个人移动平台上三维模型的绘制效率。为测试本文所提方法的实用性,此处选择了5个不同规模的3D模型(花盆、座椅、楼梯、屏风、办公室)作为样本进行测试分析(图4)。选用的测试个人平台为三星GALAXY Note 10.1,处理器为Exynos 5420,屏幕为10.1英寸,分辨率为2 560*1 600,操作系统为安卓(Android)4.3。
测试方法是比较建模软件所构建的三维模型数据与本文方案所重构数据之间的数据量差异,这将直接降低系统的存储空间以及减少系统IO访问的时间开销。表11是几何模型重构前后的数据压缩率对比表,从表中可以看出,不同规模的3D模型数据量都出现了减少,压缩率最高可以达到36.5%,有效提升了模型数据从外存储器(SDCARD)调入显存的读取效率。而且由于模型顶点和三角面法向量信息的预先存储、以空间换时间的策略有效降低了个人移动平台的计算开销,能够明显改善模型渲染效率。需要说明的是,由于纹理贴图的图片是以外部文件的方式存储在SDCARD中的,具体应用时才调入。因此,表中所计算的数据量不包含纹理图片,且由于在纹理贴图的时候,法向量信息不再需要,因此,对于利用大量贴图图片的模型来说,数据量可以实现进一步的压缩。
表11 样本数据外观几何模型数据压缩对比
图4 测试样本
为了测试所提方案应用的综合性能,本文利用某单位办公室作为综合性能测试样本。考虑到个人移动平台的渲染性能,对几何模型造型进行了一定的概括和简化,并未完全仿照实景构建,但由于模型较多,数据量的规模达到了15 MB,压缩后数据规模也达到了约10 MB左右(表11)。在未采用可见面裁剪、多细节层次等实时渲染技术的前提下,客户端平台的屏幕刷新率达到了15 fps,而在采取相关实时绘制技术之后,屏幕刷新率可以到18~20 fps(图5),完全可以满足个人移动平台三维模型流畅渲染交互漫游的实时要求。
图5 综合性能测试(办公室内部)
随着移动互联网时代的到来以及个人移动平台技术的发展,基于智能终端平台开发室内三维导航产品,具有内在发展的实际需要。在目前移动平台存储容量、网络传输带宽以及计算能力依然有限的前提下,对室内三维场景进行轻量化建模,减小三维模型的资源量,缩短渲染时间,提高渲染的流畅性,便于移动平台客户端的三维数据传输和人机交互,成为室内三维导航应用的关键技术之一。本文针对移动平台三维模型渲染的特点,给出了SLMATV数据重构的思路,对三维模型数据进行重新组织和优化,消除数据冗余,去除与渲染无关的信息。实例测试表明,该方案对于三维模型数据的轻量化,提升三维模型的合理调度、快速构建和高速渲染大有裨益,可以在保证渲染效率和质量的基础,支持室内场景的三维模型展现,为移动平台室内三维导航、GIS应用提供可视化的数据源。在此基础上进一步分析和整合,构建能够统一描述室内空间多种特征的室内拓扑模型构建以及辅助提高室内定位系统定位精度的三维地图匹配技术等方面是进一步深入研究和进行突破的关注点。
[1] 王思宁.从室外到室内的微时代[J].软件工程师,2012(10):9-10.
[2] NOSSUM A S.Indoor Tubes a Novel Design for Indoor Maps[J].Cartography and Geographical Information Science,2011,33(2):192-200.
[3] 张朝.基于Web 的房屋虚拟展示关键技术的研究[J].科技传播,2010(11):258-260.
[4] 张兰,王光霞,袁田,等.室内地图研究初探[J].测绘与空间地理信息,2013,36(9):43-47.
[5] HUANG B.Web-based Dynamic and Interactive Environmental Visualization[J].Computers,Environment and Urban Systems,2003,27(6):62-636
[6] 龚俊,柯胜男,鲍曙明.顾及高效可视化的CAD模型数据组织方法[J].计算机应用研究,2008,25(10):3056-3059.
[7] 关云,刘幸.3dsmax5 室内设计经典作品解析[M].北京:中国电力出版社,2003.
[8] DUMN F,PARBERRY L.3D数学基础:图形与游戏开发[M].史银雪,陈洪,王荣静,译.北京:清华大学出版社,2005.
[9] 张海荣.地理信息系统原理与应用[M].徐州:中国矿业大学出版社,2008.
[10] 李晓明.顾及语义拓扑的大规模三维空间数据高效管理方法[D].武汉:武汉大学,2011.
[11] 陈静,吴思,谢秉雄.面向GPU绘制的复杂三维模型可视化方法[J].武汉大学学报:信息科学版,2014,39(1):106-111.
[12] 刘刚,吴冲龙,何珍文,等.地上下一体化的三维空间数据库模型设计与应用[J].中国地质大学学报,2011,36(2):367-374.
[13] 朱庆,李晓明,张叶廷,等.一种高效的三维GIS 数据库引擎设计与实现[J].武汉大学学报:信息科学版,2011,36(2):127-132+139.
[14] 张剑清,贺少军,苏国中.三维模型重建中影像纹理重组织方法研究[J].武汉大学学报:信息科学版,2005,30(2):115-117+185.
[15] 朱庆.3维GIS 技术进展[J].地理信息世界,2011(2):25-27+33.
[16] 朱庆.三维GIS及其在智慧城市中的应用[J].地球信息科学,2014,16(2):151-157.