面向Web的城市级表面三维模型数据优化方法

2020-12-08 02:08赫春晓吕志慧
江苏科技信息 2020年31期
关键词:数据量纹理人工

赫春晓,吕志慧,邱 天,陈 超

(1. 江苏省测绘研究所,江苏南京210013;2. 江苏省基础地理信息中心,江苏南京210013)

0 引言

近年来,随着Web技术的发展,尤其是Web3D技术的发展,促使Web 技术逐渐往三维方向发展。伴随着HTML5、WebGL 等规范的建立和完善,及以谷歌、火狐等为代表的主流浏览器对WebGL 规范的全面支持[1-2],在Web3D 方面涌现了一批优秀的基于WebGL 的三维JavaScript 开源库,从而使得传统的依赖于桌面端或是浏览器插件式的三维应用逐渐转向Web端无插件三维应用。但是,受限于浏览器本身性能和三维数据体量,当三维应用的数据量达到或超过城市级时,三维模型的渲染效率易受到影响,从而造成用户的浏览体验较差。因此,本文旨在对应用较广泛的以倾斜摄影三维模型和人工精细三维模型为代表的表面三维模型为对象,研究城市级表面三维模型的数据优化方法,以期用于提升Web 端城市级表面三维模型的渲染效率,增强Web 端大规模表面三维模型的展示能力。

1 方法的设计与实现

1.1 方法基础

细节层次(Level of detail,LOD)技术[3-5]利用几何体包围盒计算观察者与物体的距离,使用户可以根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。该技术是最常用作提升三维模型渲染效率的技术方法。本文的优化方法也是依据LOD技术思路构建并优化表面三维模型的层次细节,从而达到提升城市级表面三维模型渲染效率的目的。

1.2 模型特点

本文研究对象为应用较广泛的倾斜摄影三维模型和人工精细三维模型。倾斜摄影三维模型多是通过专业的三维软件生产得到的,数据普遍由算法对航拍倾斜摄影数据自动计算生成,数据体量大,表面结构复杂,数据本身内置了LOD。模型纹理经过了软件的压缩和优化。

人工精细三维模型广泛来源于传统C/S 三维地理信息系统数据,由人工利用3dsmax 等建模软件创建的三维模型。该类模型表面几何细节相对有限,模型三角面数量普遍较少,总体的数据体量相对较小。为在表面几何细节有限的情况下尽可能提高视觉效果,数据可能大量使用高分辨率纹理,甚至可以占数据总容量的90%以上,会极大制约渲染效率。

由于两种模型在模型特点上不同,因此尽管两种模型结构相似,但是处理方法不同,倾斜模型LOD的优化重点在于模型几何压缩,而人工精细三维模型LOD的优化除几何压缩之外,更重要的优化体现在模型的纹理压缩方面。

1.3 三维模型优化方法

1.3.1 倾斜摄影三维模型优化方法

倾斜摄影三维模型通常是由软件按照LOD 的要求创建的,模型本身是按照LOD进行组织的,但是这种内置的细节层次模型主要面向桌面环境,对于Web应用存在粗细节层次模型层级不足的问题,远景浏览时加载速度慢,对城市级数据影响尤为严重。因此,针对现有层次细节不足的问题,本文拟通过在原有细节层次的基础上,通过添加更粗粒度的层次细节,从而提升远景浏览显示效率。

本文采用了顶层节点合并压缩的方式构建粗粒度的层次细节。方法根据倾斜模型分块生产的特性,将模型按照行列索引进行重排列构建以0行0列为原点的行列索引模型矩阵,将N*N的子矩阵从原点开始间隔N进行移动,与模型矩阵套合,将子矩阵内涉及的模型进行合并,从而扩展得到上一级的细节层次,循环执行该过程直到顶层的数据量小于设置的阈值为止。

合并后的模型压缩方法通常可通过常规的模型简化方法进行。倾斜模型原始最粗一级实际上细节已经较少,再往上简化,模型的细节完全可以忽略,只需保留外轮廓及纹理即可满足视觉上的可视化效果,因此,可通过构建模型三维凸包[6]的方式替代模型简化,一方面可以减少模型简化迭代计算的工作量,另一方面,可以极大地减少模型的数据量。

合并后模型的纹理压缩方法通过纹理烘焙进行,利用纹理烘焙对合并后的模型纹理进行压缩,将新生成的纹理作为模型三维凸包的纹理,进行纹理映射得到最终的简化模型。处理的逻辑及成果如图1所示。

1.3.2 人工精细三维模型优化方法

人工精细模型由于本身不具备层次细节,因此优化方法主要是构建人工精细模型的层次细节。最精细级为原始模型,为加快渲染效率,本文对原始模型进行拆分处理,在保留原始细节的基础上,得到多个小块模型,从而解决单个模型数据量大加载慢的问题。本文采用基于纹理的模型拆分方法进行:首先读取模型的原始纹理目录,然后以纹理为单元划分不同的纹理单元,对模型按照划分出的纹理单元处理,将共用同一纹理单元的部分拆分出来,进而得到不同纹理单元的多个子块,实现大尺寸模型的拆分,如图2所示。

图1 倾斜摄影三维模型优化处理示意

图2 基于纹理的模型拆分示意

中景的多级粗细节层次模型处理,一方面按照固定压缩比对粗细节层次模型的三角面几何进行压缩;一方面使用烘焙技术将模型纹理替换为低分辨率单一纹理。

远景的多级粗细节层次模型,对于城市级数据而言,需顾及大范围的模型合并压缩。本文主要以模型文件为单元,将一个模型文件内的全部模型进行合并,对合并后的模型构建三维凸包,区块纹理合并后进行纹理烘焙压缩区块纹理,生成远景的多级细节层次模型。处理流程示意图如图3所示。

2 实验验证

选取约50 km2的某市倾斜摄影三维模型和约110 km2的某市人工精细三维模型为对象,利用提出的模型优化方法构建面向Web 端城市级LOD 模型,验证方法的可行性。

图4 为倾斜摄影三维模型,其中图4a 为远景全貌,通过模型顶层向上合并,并经过纹理烘焙减小远景节点的数据量,从而提升加载速度。图4b 和图4c为中景和近景模型原LOD的显示效果。

图5 为人工精细三维模型,其中图5a 和图5b 为远景全貌和中景,通过区块模型合并压缩和纹理合并压缩生成粗细节模型。图5c中离视角近的为原始模型经过拆分后的模型,通过模型拆分方式达到不影响显示效果的情况下,减少单个模型的数据量从而提升加载速度;离视角远的为单个模型经过模型简化和纹理烘焙生成的较低分辨率模型。

从实验结果可以看出,本文提出的方法可以较好地适应城市级大范围表面三维模型的渲染,构建的模型LOD能够提升Web环境下城市级表面三维模型的加载渲染效率,提升用户体验。

3 结语

本文在倾斜摄影三维模型优化方面,依据三维模型数据特点,基于LOD技术,通过对现有最粗节点的合并构建三维凸包,并利用纹理烘焙方法压缩模型纹理的方法,构建了面向Web 端城市级大范围数据的多级层次细节,解决模型的原始LOD 在网络环境下层级不足,加载过慢影响渲染效率的问题。在人工精细模型优化方面,通过对原始模型基于共用纹理单元进行拆分,在不影响原始模型精细程度的基础上,解决了模型过大加载缓慢的问题。通过模型几何压缩,以模型文件为单元的区块模型合并构建三维凸包的方式构建中景至远景的层次细节,并结合纹理烘焙方法对原纹理进行压缩,大大减少了模型纹理的数据量,构建了面向Web 端城市级人工精细模型的多级层次细节。此外,以城市级别的两类三维模型为对象,验证了方法的可行性,为Web端城市级的表面三维模型高效渲染提供方法参照,具有较强实用性。

图3 人工精细模型LOD构建示意

图4 城市级倾斜摄影三维模型效果

图5 城市级人工精细三维模型效果

猜你喜欢
数据量纹理人工
人工3D脊髓能帮助瘫痪者重新行走?
基于大数据量的初至层析成像算法优化
人工,天然,合成
人工“美颜”
高刷新率不容易显示器需求与接口标准带宽
基于BM3D的复杂纹理区域图像去噪
宽带信号采集与大数据量传输系统设计与研究
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
新型多孔钽人工种植牙