2. 浙江大学 计算机学院, 浙江 杭州 310027
2. College of Computer Science, Zhejiang University, Hangzhou 310027, China
为了尽可能详尽地记录模型的信息,三维采集得到的模型通常非常精细,数据量很大,三角面片数动辄百万级别以上,同时带有高清的纹理贴图. 为了解决在计算机上快速地高精度渲染展示大数据量的复杂模型这个技术难点,国内外学者提出模型简化技术[1]、细节层次(levels of detail, LOD)技术[2-4]、基于GPU的硬件加速技术[5-6]、基于图像的远程渲染技术[7]等方法. 虽然上述方法可以有效优化复杂三维模型的渲染效率,但是存在算法复杂度高、对硬件依赖性高等问题. 如果使用模型简化技术[8-10]在硬件条件一般的设备上得到比较流畅的展示效果,需要对模型进行大幅度简化,这将大大影响模型细节的清晰度[11]. 针对这个问题,LOD技术做了一定的优化,能够根据视线距离以及曲率上的显著度差异在不同分辨率下的区域展示模型,降低了部分需要处理的数据量. 但是由于LOD技术针对模型整体进行渲染,因此在动态计算展示图像分辨率级别及模型渲染花费的时间比较长,并且可能由于分辨率的降低导致缺失重要信息. 如果采用基于GPU的硬件加速技术[12-13]或者基于图像的远程渲染技术,需要设备的硬件能力比较高,成本高,推广难. 虽然相关建模软件可以流畅展示复杂模型,但是需要提前加载全部数据模型[14],并且在展示具有高清贴图的复杂模型时会出现不同程度的卡顿,需要较好的硬件条件.
本研究在模型渲染过程中引入模型分块局部载入的思想,对LOD技术进行改进,提出从模型分块存储到模型自适应展示的方法. 提出以关系数据库存储替代传统的文件存储方式,实现三维模型数据分块存储,同时在渲染时实现模型数据的动态分块加载,有效降低模型渲染的复杂度,提升模型数据加载与渲染的速度. 在借鉴LOD技术的基础上,本研究提出在视点依赖情况下的模型分块局部展示算法,完成分块展示优先级的有效排序,改善在展示视角和硬件条件约束下的局部展示效果,在不同硬件条件下流畅展示具有高清纹理贴图的复杂文物模型,实现复杂模型在计算机上实时展示效果的优化.
1 关系数据库的模型数据分块存储三维模型通常以文件的方式进行存储,在渲染时渲染引擎必须将整个模型读入内存空间,耗费大量的内存空间与时间,导致渲染效率相对低下. 但是渲染展示与用户视点密切相关,往往只需要模型的部分数据分块,所以如果能够有效解构三维模型的一致完整性,实现分块存储,将有效提升模型的渲染效率. 针对常用的OBJ格式三维模型,提出基于关系型数据库的模型分块存储方式,能够支持模型分块的动态载入,提高模型渲染效率.
1.1 OBJ文件概述OBJ文件是Alias公司开发的一种标准的三维模型文件格式,适用于3D软件之间模型的互导,也可以通过Maya软件进行读写. OBJ文件是一种文本文件,因此可以直接用文本工具打开进行查看和编辑修改,操作方便.
OBJ 3.0文件格式支持直线、多边形、表面和自由形态曲线,根据每行开头声明的关键字来识别. 因为OBJ文件只定义几何信息,不包含面的颜色定义信息,所以在文件中引用材质库才能使模型包含颜色方面的信息. 材质库信息存储在一个后缀为“.mtl”的独立文件中,包含材质的漫射、环境、光泽的rgb定义值,以及反射、折射、透明度等其他特征,同时可以指定贴图路径.
1.2 OBJ格式模型的分块为了实现模型的分块存储,将OBJ文件中的几何信息进行分组,每组为1个单独的模型分块,再存入关系型数据库. 数据库技术的发展已经非常成熟,能够对程序中剥离出来的数据进行高效的管理,同时提供了多种完整性约束,有效保证数据一致性和安全性问题.
在对模型进行分块时,控制每个分块的粒度保持在单个分块加载时间可容忍的情况下所取得的最大值,粒度过大导致单个分块的加载速度过慢,粒度过小增加了分块的数目,不利于维护调度数据库. 在实验机Inter Core i5-4590的3.3 GHz的CPU条件下,经过多次试验,分块粒度为10 000点云数时加载单个分块的时间为1 s左右,同时单块的渲染时间为5 ms左右,以此粒度数目作为标准.
OBJ文件中使用“g”关键字来描述分组信息,例如使用“g”指名一个分组,后面所有的几何信息包括点和面片都在分组下,直到遇见下一个关键字“g” 结束分组. 根据关键字将三维模型分成不同的分块,如果每个分块的粒度数目都在5 000~10 000的范围内符合实际需求,分块结束;如果分块粒度过高需要进一步切割;如果分块粒度过低需要选取另一个较小的分块进行组合.
1.3 数据库结构设计OBJ模型的信息主要有以下几种:顶点信息,包括位置坐标、纹理坐标、法向;面信息,包括构成面片的顶点索引;材质信息,包括贴图路径以及渲染属性如环境光、漫射、反射的设定值等;模型的概况信息,包括模型名称、顶点数、面片数等.
根据以上模型信息分类,数据库的结构设计可以归纳为3层,分别为模型层、分块层、细节层. 模型层记录模型的基本信息,由模型信息表构成. 分块层记录各个分块的基本信息,由分块信息表构成. 细节层记录模型的细节信息,包含顶点、面片、材质信息,由3张表构成.
数据库分层后结构鲜明,查询简单高效,可以根据实际的查询需要深入到不同的层级.
1.4 分块加载实验结果为了验证基于关系数据库的模型分块存储技术对于模型基本信息的读取以及数据载入的优化效果,进行实验对比. 实验分别在3台不同配置的计算机上进行,如表1所示. 为了表明本文所用策略能够在普通计算机上流畅地展示三维模型,实验结果均来自配置最低的PC1. 实验对象均为OBJ格式的三维模型,具体的模型大小信息如表2所示.
![]() |
表 1 实验机的配置 Table 1 Configuration of experimental machines |
![]() |
表 2 三维模型实验对象的信息 Table 2 Information of subjects in three-dimensional model |
实验以10 000点云数粒度作为模型分块的标准. 以模型2为例,该模型被分为203个分块. 将所有的分块信息存储到数据库,对比2种不同的载入策略在获取不同的模型信息时所耗费的时间. 实验结果如表3所示,其中t1、t2、t3分别为获取整体模型的时间、获取分块模型耗费的时间、获取模型整体及分块信息的时间. 表3显示,在读取所有数据时,从数据库载入的方式慢于从文件载入的方式,因为数据库的多次查询增加了磁盘的IO时间. 但是在读取局部数据时,从数据库载入的方式不需要读取模型的全部数据而是从数据库加载相应的分块,加快获取模型整体信息的读取速度和提高分块详细数据的载入效率,为后续的模型实时展示提供有力支持.
2 局部渲染的模型实时展示目前的三维模型展示技术主要针对模型整体的展示. 模型整体展示的内容丰富,观看者能够完整地欣赏模型的全貌;展示临场感强,可以实现虚拟现实的效果,观察者能够根据自己的喜好从不同角度观看模型. 但是在三维模型的展示过程中不一定需要完全展示整个模型. 例如,用户在观看模型时,在某个时间段内视野只聚焦在一个区域,忽略剩余的部分,随着观看的需要拖动模型,视野才转移到其他区域. 尤其在近距离观看模型时,用户只在意局部的信息,如果花费较长的时间去渲染其他的部分,会影响用户的观看体验. 因此,使用局部展示技术在硬件条件不佳的设备上实现高精度模型的渲染具有重大的意义.
![]() |
表 3 模型数据载入耗时实验结果 Table 3 Consumed time of loading model data |
通过对模型的分块存储的研究,依据模型本身参照OBJ文件的分组关键字进行分块,同时将分块信息保存到关系数据库. 这样通过数据库就可以快捷地获取模型信息以及快速加载某一个分块. 如果需要的局部信息比较多,可以连续读取并同时展示多个满足条件的分块信息,高于载入全部模型数据的效率.
读取完所需要的所有分块数据后,将每个分块当作一个独立的模型,拥有自独立的顶点信息、面片信息以及材质信息;将多个分块模型组合成一个模型,构成局部模型. 当所需要的局部信息改变时,只需要加载不在当前局部模型中的分块,重新组合后再渲染达到实时的效果.
表4以模型2为例,实验测试了载入不同数量的分块模型时的实时每秒传输帧数(frames per second,FPS). FPS越高,所显示的动作就会越流畅. 由表4可以看到,当载入少量分块时,计算机能够流畅展示,既节约了时间又节省了内存. 因此,三维模型的局部展示在技术上不但可行,而且复杂度不高.
![]() |
表 4 不同分块数量下的渲染效果 Table 4 Rendering results of loading different amounts of mesh |
利用分块存储技术,能够根据需要加载相应的分块进行渲染. 在实际应用中,分块的选择与用户的视角相关. 借鉴视点依赖技术提出用户视角与分块的匹配衡量算法,对匹配出的分块进行优先级排序,根据硬件条件选择合适的分块数量确保用户流畅观看. 结合LOD技术的优点,提出基于视点依赖的自动局部展示技术的算法框架.
3.1 用户视角的模型自动局部展示为了实现基于用户视角的模型自动局部展示技术,对用户可能的操作行为进行定义. 假设三维模型位于虚拟球体空间的中心位置,相机位于球体的表面. 用户可以从任意的视角通过旋转或者缩放的方式观察三维模型的细节,分别定义用户的操作行为旋转和缩放. 旋转操作可以改变相机在球体表面的位置,缩放操作将引起虚拟球体大小的变换,也就是改变相机与三维模型之间的距离.
空间展示模型如图1所示,定义虚拟球体空间的球心为O,三维模型几何中心为P,P与O重合,V为相机当前位置,也是展示屏幕的中心,并且屏幕平面与球体相切,R为相机位置V与球心P之间的距离.
![]() |
图 1 用户视角的展示空间模型示意图 Fig. 1 Spatial model illustration from users’ perspective |
给定用户观看模型时的视角,从数据库中选取适当的分块数目组合成一个分块模型进行局部渲染展示. 分块模型通常由三维模型整体中连续的一个局部面或者连续的多个局部面构成,多个局部面相互靠近,分块模型的整体法向量朝向比较统一. 分块模型的朝向是衡量用户视角的匹配程度的重要因素. 根据经验,当分块模型的主体朝向跟视角方向相对时,能够更清楚地观察分块. 选择一种策略,根据给定的用户视角,计算出每个分块模型与视角的匹配程度,根据匹配程度进行排列,选取前n个分块进行展示. n与计算机的硬件条件有关,配置越高则n越大.
基于视点依赖的渲染技术以单个分块所包含的全部面片的平均法向作为朝向. 在OBJ文件中,每个面片使用3个顶点描述朝向,每个顶点除了有自己的位置坐标之外,还附带法向坐标来表明该顶点的朝向. 由建模时顶点附近的面片的法向求均值得到顶点的法向,将表示面片的3个顶点的法向求均值作为面片的法向. 求取构成分块模型的所有面片法向的均值作为分块模型的法向,得到单个分块模型的朝向,记为N1,计算公式为
${{ N}_1} = \frac{1}{n}\sum\limits_{i = 1}^n {\left( {\frac{1}{3}\sum\limits_{j = 1}^3 {{{ N}_{\left( {i,j} \right)}}} } \right)} .$ | (1) |
式中:n为分块包含的面片数目,N(i,j)为分块中第i个面片的第j个顶点的法向.
另外一种计算方法如下:分块模型有自身的几何中心,模型整体也有自身的几何中心,模型中心到分块中心构成的向量在一定程度上反映了分块模型的基本朝向,朝向记为N2,计算公式为
${{ N}_2} = {\bf{Cente}}{{\bf{r}}_{\rm{p}}}-{\bf{ Cente}}{{\bf{r}}_{\rm{h}}}.$ | (2) |
式中:Centerp为分块模型的包围盒中心的位置坐标,Centerh为整体模型的包围盒中心的位置坐标,计算的结果经过归一化后作为N2的值. 计算出2个朝向后,需要给N1和N2分配适当的权值w1和w2.
为了确定权值的分配,进行相应的实验. 实验初始时,w1=w2=0.5. 实验中,分别多次调整w1和w2以达到较好的匹配效果. 以模型1为例,给出其中3组权值的效果图,如图2所示. 结果发现,当
${ N} = {w_1}{{ N}_1} + {w_2}{{ N}_2}.$ | (3) |
计算出分块模型的朝向后,根据反方向与视线的夹角余弦值作为匹配程度,并且将结果由大到小进行排列,取前n块组合成模型进行局部渲染.
3.3 局部展示和LOD的自适应智能展示局部渲染展示的方案缓解了加载全部模型以及贴图而导致渲染耗时长的问题,并且保证展示时三维模型没有损失细节,但是用户只能欣赏到模型的局部区域的详细细节,无法了解三维模型的整体信息,影响观赏体验.
![]() |
图 2 分块模型朝向取不同权值时的渲染效果 Fig. 2 Rendering results using different weight of mesh direction |
借助离散LOD技术能够有效缓解展示整个模型加载全部数据耗时长的压力. 离散LOD技术通过预先不同程度地简化三维模型[15],生成不同分辨率级别的模型,根据实际需要选取相应的分辨率进行渲染. 在实际展示时,局部展示技术作为主要的展示策略,离散LOD技术作为辅助策略.
使用LOD中的模型简化技术,对三维模型只进行一次简化,只保留一个分辨率级别的简化后的模型信息. 由于原有的三维模型精度高,数据量大,简化的分辨率级别比较低,保证普通计算机能够较好地实时展示简化的整体三维模型. 简化的程度与具体的计算机配置相关,简化的最小程度以计算机能够流畅地渲染展示三维模型为界限.
触发简化模型展示的条件有2个:用户将模型缩小到某一阈值或用户手动选择查看模型整体,前者为系统自动触发,后者为用户手动触发. 当三维模型被缩放到一定程度时,用户观看到的是模型的整体效果,此时局部信息变为次要,人眼区分细节的能力降低,难以体现局部高精度展示效果. 使用LOD技术简化后的模型,取消局部展示,自动触发简化模型的整体展示,能够提升三维模型展示的体验;由于人眼无法分辨,同时能够降低计算成本,提高效率. 在三维模型未被缩放时,用户有察看整体信息的需求,手动取消局部展示,进行简化模型的整体展示,满足用户在比较近的视野下欣赏模型整体. 当然由于模型简化幅度较大,此时的展示画面质量不够精细.
当用户进行旋转操作时,需要重新计算匹配的分块,并且一次判断分块是否已经被加载到内存中,如果已经加载则忽略分块的处理,否则将读取新的分块到内存中进行展示.
结合局部展示和LOD的自适应展示方案,流程图如图3所示.
![]() |
图 3 三维模型的LOD自适应展示方案流程图 Fig. 3 LOD adaptive display flow chart of three dimensional model |
实验采取的简化程度为60%,简化算法为LOD技术中常用的边折叠法. 图4给出了模型1和模型2在不同展示策略下的渲染效果.
从图4可以看出,使用简化模型进行全局展示时,缩放到一定的程度,全局展示的清晰度和局部高精的清晰度肉眼很难区别. 但是如果将简化模型放大后观看与局部高精相比,清晰度有所损失. 虽然表5中使用简化模型时的FPS值略低于局部高精展示的FPS值,但是在2种情况下肉眼观看不会出现卡顿的现象.
![]() |
表 5 局部展示和全局展示策略下的FPS Table 5 Values of FPS on local and global rendering |
![]() |
图 4 三维模型在不同展示策略下的自适应渲染效果 Fig. 4 Three dimensional model adaptive rendering results of different display strategies |
以分块载入降低模型载入时间为突破口,提出基于关系数据库的模型分块存储策略,支持模型的分块载入,改善以往模型展示需要载入全部模型才能展示的弊端. 但是当模型的面片信息和顶点信息到达到千万级别后,数据库中的信息暴涨,影响查询效率,需要相应的分表操作保证查询的效率,因此下一步工作将针对精度更高的三维模型的局部展示进行优化.
[1] |
MARCO T, NICO P, PAOLO C, et al. Practical quad mesh simplification[J]. Computer Graphics Forum, 2010, 29(2): 407-418. |
[2] |
CHEN G, ZHAO Q, YUAN Y. Keep region for constructing LOD of terrain regular mesh [C] // International Multi-Media Modelling Conference. Beijing: IEEE, 2006: 4 http://doi.ieeecomputersociety.org/10.1109/MMMC.2006.1651332
|
[3] |
HIBERT K, BRUNNETT G. A hybrid LOD based rendering approach for dynamic scenes [C] // Proceedings of the Computer Graphics International. Greece: IEEE, 2004: 274-277 http://doi.ieeecomputersociety.org/10.1109/CGI.2004.1309221
|
[4] |
李钦, 戴树岭, 赵永嘉, 等. 分块 LOD大规模地形实时渲染算法[J]. 计算机辅助设计与图形学学报, 2013, 25(5): 708-713. LI Qin, DAI Shu-ling, ZHAO Yong-jia, et al. A block LOD real-time rendering algorithm for large scale terrain[J]. Journal of Computer-Aided Design and Computer Graphics, 2013, 25(5): 708-713. DOI:10.3969/j.issn.1003-9775.2013.05.015 |
[5] |
LOSASSO F, HOPPE H, SCHAEFER S, et al. Smooth geometry images [C] // Proceedings of the 2003 Eurographics/ACM SIGGRAPH Symposium on Geometry processing. Switzerland: Eurographics Association Aire-la-Ville, 2003 http://www.doc88.com/p-3847931022949.html
|
[6] |
HOPPE H, PRAUN E. Shape compression using spherical geometry images [M] // DODGSON N A, FLOATER M S, SABIN M A. Advances in Multiresolution for Geometric Modelling. Berlin: Springer, 2005: 27-46
|
[7] |
徐婵婵, 费广正, 韩红雷. 面向移动设备的远程渲染技术综述[J]. 计算机辅助设计与图形学学报, 2016, 28(6): 913-923. XU Chan-chan, FEI Guang-zheng, HAN Hong-lei. A review of remote rendering on mobile devices[J]. Journal of Computer-Aided Design and Computer Graphics, 2016, 28(6): 913-923. DOI:10.3969/j.issn.1003-9775.2016.06.006 |
[8] |
MATTHIAS E, DEROSE T, TOM D, et al. Multiresolution analysis of arbitrary meshes[J]. Proceedings of SIGGRAPH, 1995, 173-182. |
[9] |
CHU C H, CHENG H C, WANG E, et al. ANN-based 3D part search with different levels of detail (LOD) in negative feature decomposition[J]. Expert Systems with Applications, 2009, 36(8): 10905-10913. |
[10] |
ANTONIO C, JESUS M. A performance comparison of distance-based query algorithms using R-trees in spatial databases[J]. Information Sciences, 2007, 177(11): 2207-2237. |
[11] |
CHAJDAS M G, REITINGER M, WESTERMANN R. Scalable rendering for very large meshes [C/OL] // 22nd International Conference in Central Europe on Computer Graphics, Visualization and Computer Vision. Plzen: WSCG, 2014[2018-03-29]. https://pdfs. semanticscholar.org/901a/b91db8b4b066ebf3c0f467e0820f6bf7803a.pdf
|
[12] |
GAIN J, SOUTHERN R. Creation and control of real-time continuous level of detail on programmable graphics hardware[J]. Computer Graphics Forum, 2003, 22(1): 35-48. |
[13] |
LOSASSO F, HOPPE H, SCHAEFER S, et al. Geometry clipmaps: terrain rendering using nested regular grids[J]. Proceedings of SIGGRAPH, 2004, 23(3): 769-776. |
[14] |
SONG L, LI N S. Construct the virtual gram stain experiment platform based on 3D Max and VRP[J]. Applied Mechanics and Materials, 2014(596): 1052-1055. |
[15] |
FILIP B, HUGO L, JANTIEN S. An improved LOD specification for 3D building models[J]. Computers, Environment and Urban Systems, 2016(59): 25-37. |