自然景观是虚拟三维地理场景的重要组成部分, 景观要素的相关渲染技术被广泛应用于地理信息系统、游戏、虚拟现实、动画等领域[1-3]. 作为自然景观中的常见要素, 树木的表达一直是研究的热点和难点[4]. 由于树木形态自身的复杂性, 树木的真实感表达与场景的渲染效率之间存在着矛盾[5, 6]: 由大量三角面片构成的模型虽然可以有效表达树木形态, 但渲染效率较低, 而使用较少几何面片构成的模型则真实感不足, 二者都会影响用户体验. 目前三维场景中树木的表达方法大致分为两类[6], 一类是基于几何模型的绘制方法, 另一类是基于纹理图像的绘制方法.
基于几何模型的方法通过算法简化树木模型, 从而解决树木结构过于复杂导致的渲染耗时问题. 例如: Remolar等提出了树叶合并简化算法[7], 将相似的树叶进行合并; 郭星辰等提出了一种参数化的方式对植物形态特征予以集成和组织, 满足了树木的共性特征[8]; Lluch等提出了多层次模型表示法[9], 实现模型的简化; Zhang等提出了基于植物器官的层次合并算法[10], 引入了叶序、花序等概念来进行层次合并. 以上方法虽能在单株树木上达到简化效果, 但在渲染大规模森林场景时总体的渲染负担依旧繁重. 在大规模植被的可视化表达方面, Li等提出了一种基于图的中性景观模型, 能快速生成具有真实感的森林景观格局, 但在渲染性能方面还需要深入研究[11].
基于纹理图像的绘制方法将树木的几何模型用简单面片表示, 其绘制工作量基本与树木的形态复杂度无关. 布告板是这类方法的一种简单而典型的实现, 其基本思想是将几何模型替换为始终朝向观察者的平面布告板, 通过将物体某个角度观察的快照作为纹理贴到布告板上, 从而减少动态渲染时的计算量[12]. 但是传统布告板的缺点也很明显, 当视点变化时布告板上的纹理贴图不会发生变化, 真实感比较缺乏. 在布告板方法的基础上, 相关学者提出了布告板云方法[13,14], 该方法将树木拆解为多个布告板进行表达, 在每个布告板贴上相应的纹理图片. 这在一定程度上解决了单布告板缺少三维立体感的问题, 但在表达精细的树木模型时需要大量的布告板面片, 使得渲染时的计算量大为增加. Maciel等提出了Impostor方法[15], 在预计算阶段将树木模型渲染到一个面, 减少了几何复杂度. 在此基础上孙雪波等又提出了基于动态Impostor技术的树木快速绘制方法[16], 可以实现树木的多角度表达, 但视角变化时纹理仍需实时生成, 实时计算量仍然很大. She等提出了球面布告板的概念, 使用不规则球面模拟树冠, 与传统布告板相比, 其几何复杂度和纹理复杂度略有提高, 但对于特定树木可以取得较好的表达效果[17].
本文提出了一种新的布告板方法, 使用单个平面布告板作为树木模型的几何替代物, 根据视点位置动态切换与观察方向及距离最相适应的纹理贴图, 所取得的树木三维表达效果与观察方位具有更好的一致关系.
2 模型数据生成自适应布告板方法首先需要获取多个观察方向以及视距上的树木纹理图片集合, 可用于后期场景渲染时的动态选取. 对于比较重要的树木(如古树名木), 如需要还原树木的原貌, 可以采用人工或无人机实地拍摄的方法, 获得树木在不同距离或方位上的高清照片; 对于数量庞大的普通树木, 可以采用计算机模拟的方法分类获得多方位观察效果图. 无论采用哪种方法, 对于每一张图片, 都要记录下该树木图片所对应的观察方位以及视距. 以计算机模拟方法为例, 有关过程如下:
2.1 纹理图片生成在具有树木高精细模型的前提下, 通过设置相机位置、光照、分辨率等渲染参数, 利用三维软件获得同一树木在不同观察方位和视距下的渲染图像. 具体步骤如下(图1):
1) 将树木模型(高为h)置于原点, 将模型高度的1/2处设为树木的中心;
2) 设定相机位置到树木中心距离 r, 保证渲染的树木完整, 并设置水平及垂直方向的采样间隔角度;
3) 根据水平和垂直方向间隔角, 以及相机到树木的距离, 确定相机的位置, 渲染对应位置的纹理图片. 垂直角θ、水平角σ与相机位置(X, Y, Z)间的公式如式(1)~式(3), 渲染效果如图2所示.
$ X{\rm{ = }}r \times \cos \sigma \times \cos \theta $ | (1) |
$ Y{\rm{ = }}r \times \cos \sigma \times \sin \theta $ | (2) |
$ Z{\rm{ = }}r \times \sin \sigma + \frac{h}{2} $ | (3) |
在此过程中, 应对生成的图片标注方位和视距等信息, 以便于在漫游过程中, 根据视点与树木的相对空间关系方便地选取最合适的图片作为纹理.
2.2 纹理图片预处理
与传统布告板相比, 自适应布告板可以解决特定视角下的渲染缺陷, 但也存在一些新的困难. 传统布告板只需要将树木纹理图片的树根部位与地面相接就可将树木固定在场景中. 使用自适应布告板时, 树木根部会随着纹理图片的观察角度变化而发生渲染位置的变化. 如图3所示, 3棵树木垂直观察角度分别为: 0度、50度、90度. 当观察的垂直角由0逐渐增加时, 树根位置将由图像底部上移至图像中部. 在场景中若根部定位不恰当就会出现图4所示错误.
为确保树木表达的准确性, 需要在每次切换纹理图片时动态调整布告板的位置, 使得树木根部定位点与地形高度一致, 形成树木“长”在地上的效果. 这需要对每张图片额外标注根部定位信息. 本文采用的方法为固定树木中心点的位置, 使树根在不同视角上都与地面相接.
具体步骤为: 先测量一张水平角度生成的纹理贴图中树木根部距离图片底部的距离d1及纹理图片的高度d2; 然后, 将布告板置于场景中, 令其中心位置距离地形该点高度d2–d1处. 在调整后的场景中, 无论从什么位置观察树木图片都可以保证树木根部与地形固定点相接.
3 树木实时渲染 3.1 自适应布告板
传统布告板使用一张纹理图片表示物体, 减少几何复杂度, 提高渲染性能. 当视点发生变化时, 旋转布告板, 使其始终面向相机位置. 但观察角度发生变化时, 纹理图片并不会发生改变, 影响真实感.
自适应布告板的主要思想是, 生成目标物体的多视角纹理图片集, 根据布告板与视点的相对方位关系, 从多视点纹理图片集中选择与观察角度最契合的纹理图片在布告板上显示.
当视点位置发生变化时, 则自动切换布告板上的纹理图片, 使之与视角同步变化, 实现观察效果与观察角度的一致. 这样, 可以使布告板展现出近似真实模型的效果.
自适应布告板方法具体包括以下几个步骤:
1) 预先生成(或拍摄)树木在各个相对方位与距离上的树木纹理图片;
2) 根据视点和布告板的相对位置关系得到观察方向和距离;
3) 根据观察方向计算旋转矩阵, 调整布告板位置, 使其朝向相机位置;
4) 寻找与观察方向和视距最匹配的图片, 并将图片用作为纹理更新到布告板上;
5) 当视点移动时, 从第2步开始新的纹理选择过程.
根据视点P1(x1, y1, z1)布告板中心P0(x0, y0, z0)计算水平角θ与垂直角σ的公式为:
$ \theta = {\arctan}\frac{{{x_1} - {x_0}}}{{{y_1} - {y_0}}} $ | (4) |
$ \sigma = \arctan\frac{{{{\textit{z}}_1} - {{\textit{z}}_0}}}{{\sqrt {{{\left( {{x_1} - {x_0}} \right)}^2} + {{\left( {{y_1} - {y_0}} \right)}^2}} }} $ | (5) |
根据计算得到的水平角和垂直角, 查询距离该点位置最近的纹理图片. 依据由水平角θ与垂直角σ推算出的旋转矩阵来调整布告板的方向, 使其始终朝向相机.
3.2 纹理查询纹理查询的直接方法是遍历已有图片对应的拍摄控制点, 分别计算控制点到观察点的相对方位和距离, 并选择最接近的控制点所对应的纹理图片. 但是当纹理图片集合较大时, 遍历全部拍摄控制点代价过大. 改进办法是: 基于观察点位置查询其周围特定范围内的拍摄控制点, 以减少比较次数.
根据纹理图片的获取方式及其方位信息, 可将纹理图片查询分为规则和不规则两种方式. 三维软件渲染生成的纹理图片相机位置精确可控, 相邻控制点间水平角或垂直角间隔一致, 根据观察点位置以及水平与垂直间隔角可以快速确定周围的4个拍摄点, 从中选择最近拍摄点的纹理图片. 但真实拍摄的影像纹理图片难以精确控制其拍摄方位, 拍摄位置分布也具有不规则性等特点, 在这样的拍摄图片集中寻找合适的纹理面临较大的困难, 需要利用已有的拍摄控制点生成空间 Delaunay三角网, 再确定观察方位点所在三角形, 最后寻找与视点最近的点所对应的纹理图片(图5).
3.3 纹理加载基于自适应布告板的树木表达方法有效减少了场景交互过程中的树木渲染计算负荷, 能够在计算能力较弱的平台上更流畅地渲染三维树木. 但在图片较多的情况下, 纹理读取和加载的压力也会变大, 需要一种合适的纹理加载方法以提高效率. 本文采用异步加载以及缓存相结合的方法, 算法过程如图6所示.
一般来说, 从硬盘或网络中加载纹理图片耗时长, 如果减少纹理图片的加载次数将会有效减少系统的IO压力. 利用纹理图片缓存技术, 可以减少加载重复纹理的时间消耗[15,18]. 但纹理图片缓存也有弊端: 缓存过多纹理图片会占用大量的内存, 这会导致计算机性能的严重下降. 可设置一个定长的图片缓存队列, 当缓存图片数量超过队列长度时, 主动释放哪些早先加载但使用频率较低的纹理图片.
本方法总体的流程如图7所示.
4 实验流程及结果 4.1 实验环境及数据基于浏览器的三维场景渲染是三维应用的一个热点, 和桌面应用软件相比, Web应用最大的优势是客户端免安装, 但浏览器又是一个典型的渲染计算能力比较弱的环境, 能否在浏览器环境提供可接受的渲染性能是本文方法是否可用的一个重要验证. 本文基于WebGL技术检测浏览器端的树木渲染效果. 软件环境为Chrome 63, WebGL 1.0. 硬件环境为: CPU Intel Core i7 2.6 GHz, 内存8 GB, GPU为NVIDIA GeForce GTX1060, 显存3 GB.
实验中使用3DS格式树木模型, 来源于archibase.net网站, 选用了6种树木模型, 顶点数84441至1516168不等, 模型数据量大小为2.25~38.5 MB不等. 使用Blender 软件将树木模型渲染生成纹理图像集合, 采用的水平角间隔和垂直角间隔均为2度, 对每种树木各渲染了8280张图片, 构成了树木的纹理图片集.
4.2 实验结果
相较于传统布告板方法, 自适应布告板树木表达方法有效改进了非水平方向观察时存在的真实感不足问题(图8). 在表达大规模树木时, 为了避免树木在观感上过于整齐一致, 为树木增加一个随机的水平扰动角度, 使得从同一方向观察的不同个体树木的效果有所差异, 增加了场景的总体真实感(图9).
在表达树林场景时, 如果使用常规的几何模型方法, 每增加一棵树木都会增加大量的几何面片, 消耗大量的计算资源. 使用纹理贴图替代几何模型表达树木后, 增加一棵树木只会增加渲染纹理图片的存储空间, 不会显著增加更大的计算压力. 此外, 由于同类树木可以共享纹理图片库, 对于这种情况, 纹理图片的存储和管理事实上不会增加过多的额外负担.
试验表明, 在包含100棵树木的三维场景中动态漫游时, 浏览器渲染帧率可达到60 fps; 在由500棵树木构成的场景中, 纹理图片加载完成后, 仍能以50 fps以上的帧率运行.
若直接使用高精度的树木三维模型, 受浏览器性能的限制, 仅包含100棵树木的三维场景就已经卡顿严重, 甚至难以运行, 十分影响用户体验; 若使用传统的布告板方法, 虽然渲染帧数得到了保障, 但有明显的“纸片感”, 这种问题在俯视的情况下尤甚.
自适应布告板树木表达方法使得渲染效率显著提高, 场景交互更为流畅, 在真实感表达方面也显著优于传统的布告板技术.
5 总结与展望本文提出自适应布告板的树木表达方法, 在预先生成的树木的多方位图像中, 根据视点变化动态检取最匹配的图像作为纹理, 在布告板上实时动态切换纹理, 在有效减少场景中树木的几何复杂度的同时, 提高了树木的真实感效果, 取得了渲染效率与渲染效果的较好平衡, 对于渲染计算能力较弱的环境(如Web浏览器)也具有很好的适用性.
进一步研究可考虑继续优化树木的纹理图片获取方法和纹理加载算法, 进一步降低纹理图片加载的负担; 同时考虑为树木添加阴影效果, 增强三维场景的真实感. 在此基础上, 还可以考虑为常见树木种类建立纹理图片库, 以满足更为广泛的应用需求.
[1] |
王祖新. 虚拟环境下自然场景的渲染研究[硕士学位论文]. 北京: 北京邮电大学, 2014.
|
[2] |
朱庆. 三维GIS及其在智慧城市中的应用. 地球信息科学学报, 2014, 16(2): 151-157. |
[3] |
An augmented reality application for mobile visualization of GIS-referenced landscape planning projects. International Journal of Emerging Technologies in Learning, 2019, 14(6): 53–62.
|
[4] |
杨垠晖, 王锐. 树木的真实感建模与绘制综述. 计算机辅助设计与图形学学报, 2018, 30(2): 191-216. |
[5] |
刘倩. 树木三维可视化技术的应用研究[硕士学位论文]. 郑州: 河南农业大学, 2008.1–7.
|
[6] |
刘海. 大规模森林景观可视化模拟技术研究[博士学位论文]. 北京: 中国林业科学研究院, 2015.
|
[7] |
Remolar I, Chover M, Ribelles J, et al. View-dependent multiresolution model for foliage. Journal of WSCG, 2003, 11(1–3): 370-378. |
[8] |
郭星辰, 佘江峰. 多细节层次的三维植被符号设计. 测绘科学, 2016, 41(6): 48-52. |
[9] |
Lluch J, Camahort E, Vivó R. Procedural multiresolution for plant and tree rendering. Proceedings of the 2nd International Conference on Computer Graphics, Virtual Reality, Visualisation and Interaction in Africa. Cape Town, South Africa. 2003. 31–38.
|
[10] |
Zhang XP, Blaise F, Jaeger M. Multiresolution plant models with complex organs. Proceedings of 2006 ACM International Conference on Virtual Reality Continuum and its Applications. Hong Kong, China. 2006. 331–334.
|
[11] |
Li JQ, Gu XY, Li XC, et al. Procedural generation of large-scale forests using a graph-based neutral landscape model. ISPRS International Journal of Geo-Information, 2018, 7(3): 127. DOI:10.3390/ijgi7030127 |
[12] |
魏迎梅, 宋汉辰, 吴玲达. 布告板对象在三维场景中的真实感表现. 第七届全国虚拟现实与可视化学术会议论文集. 北京, 中国. 2007. 125–126, 137.
|
[13] |
Lacewell JD, Edwards D, Shirley P, et al. Stochastic billboard clouds for interactive foliage rendering. Journal of Graphics Tools, 2006, 11(1): 1-12. DOI:10.1080/2151237X.2006.10129213 |
[14] |
Garcia I, Sbert M, Szirmay-Kalos L. Tree rendering with billboard clouds. Proceedings of the 3rd Hungarian Conference on Computer Graphics and Geometry. Budapest, Hungary. 2005.
|
[15] |
Maciel PWC, Shirley P. Visual navigation of large environments using textured clusters. Proceedings of 1995 Symposium on Interactive 3D Graphics. Monterey, CA, USA. 1995. 95–102.
|
[16] |
孙学波, 张小苏. 基于动态Impostor技术的树木快速绘制方法. 计算机工程与设计, 2008, 29(12): 3126-3129. |
[17] |
She JF, Guo XC, Tan X, et al. 3D visualization of trees based on a sphere-board model. ISPRS International Journal of Geo-Information, 2018, 7(2): 45. DOI:10.3390/ijgi7020045 |
[18] |
Shade J, Lischinski D, Salesin DH, et al. Hierarchical image caching for accelerated walkthroughs of complex environments. Proceedings of the 23rd Annual Conference on Computer Graphics and Interactive Techniques. New Orleans, LA, USA. 1996. 75–82.
|