一、为什么要优化
倾斜摄影数据自身存在文件碎、体量大等特点。未经优化的倾斜摄影在目前市面上主流的三维平台上加载均会出现加载慢,浏览效率低等问题。特别是在浏览器端受文件请求量、网络带宽、硬件性能等方面的影响,倾斜摄影的显示效果往往不尽人意;SuperMap iDesktop软件针对倾斜摄影的数据特点,提供了多种数据优化方法,以便提高数据的加载效率,提升用户体验。
二、可优化方面
倾斜摄影最常用的数据格式是OSGB,以下均以OSGB格式进行分析。
2.1 LOD层级
倾斜摄影数据自身带有LOD,受无人机拍摄照片的清晰度、建模人员个人喜好等各个方面的影响,有些数据的LOD层级不理想,数据根节点特别模糊
2.2 纹理
● 倾斜摄影数据以无人机拍摄照片作为纹理,在数据生成过程中没有做限制导致数据纹理过大
● 倾斜摄影被Smart 3D(CC)修饰后,纹理利用率不高
2.3 瓦片边长
倾斜摄影数据由多个Tile文件夹组成,每一个Tile文件夹代表一块数据,如果每一块数据边长过小,那么拼成整份数据就需要特别多的块,这就导致了浏览数据时请求多,显示慢
2.4 索引
倾斜摄影所有根节点通过配置文件(*.scp)进行索引,每下一层文件通过上一层文件进行索引,这也就表明了倾斜摄影数据必须是由最粗糙层逐步加载到最精细层,这种原始的索引方式会加载不必要的LOD层级,在多个LOD层级切换过程中导致显示慢
三、如何优化
针对可优化方面,如何进行优化。下面我来一一介绍:
3.1 重新指定根节点
3.1.1 根节点原理
查看原始数据,可以看到文件夹中第一个文件为根节点,索引着下面所有文件,它代表12层(L13表示13层,它比L13还往上一层,可以理解为12层,层级越低越粗糙),在对原始数据生成配置文件时,默认读取根节点,也就是12层开始索引;通常我们认为15层以下的数据比较模糊,建议从16-18层中选择一层作为根节点
3.1.2 重新指定根节点步骤
● 通过【三维数据】-【生成配置文件】,指定根节点
● 删除默认根节点,并点击加号,重新指定
● 记录下根节点数量以便倾斜入库时计算重建LOD指数;点击确定,并输入坐标系、插入点参数生成配置文件
3.2 纹理重映设
纹理重映设功能适用于以下两种情况
● 倾斜摄影数据纹理分辨率过大,超过1024*1024
● 倾斜摄影被Smart 3D(CC)或其它软件修饰后,纹理利用率不高
3.2.1 如何检查
1)将倾斜摄影中间层级随便一个OSGB文件导入数据源作为模型数据集
2)将模型数据集添加进场景,打开“三维地理设计”-“材质”功能,查看模型纹理
我们需要查看两个方面,一个是有用纹理占整张图片的百分比大小(利用率),另一个是整张图片的分辨率大小;图片利用率小于70%,图片分辨率大小超过1024*1024,这两种情况都需要做纹理重映设
3.2.2 优化方法
倾斜入库时勾选纹理重映设
3.3 倾斜入库
倾斜入库是倾斜摄影处理的功能集合,以下对其中各个参数进行讲解:
3.3.1 参数介绍
S3M版本:
分为s3m1.0、s3m2.0、s3m3.0
SuperMap iDesktop 9.1.2版本s3m格式全面升级为s3m格式
9.1.2~10.1.2版本生成的数据格式为s3mb,版本号为1.0
10.2.1版本全面升级为2.0,并且兼容1.0格式的数据
11i 版本全面升级为3.0,支持椭球场景,并且兼容1.0/2.0格式的数据
线程数:
默认为8,根据计算机物理内核计算,线程数 = 物理内核*1.5
存储类型:
分为原始和紧凑,原始类型,生成的数据格式为 *.s3mb,紧凑类型,生成的数据格式为 *.db;原始类型方便查看各个缓存文件大小,方便排查数据是否符合规范以及再次优化,紧凑类型只会生成一个db大文件和一个json文件,方便文件传输与拷贝
原始类型
紧凑类型
几何压缩格式:
分为不压缩、DRACO压缩、meshOpt压缩,三种压缩格式与s3m版本对应,压缩性能依次递增,压缩时间也相应变长,如果选择s3m3.0版本,建议使用meshOpt压缩
纹理压缩格式:
分为webp、KTX2.0、DXT(PC设备)、CRN_DXT5(PC设备)、标准CRN
webp 和 KTX2.0 均为通用纹理,可在移动端和PC端共同使用,10.2.1版本开始支持webp,11i 版本支持开始支持KTX2.0
DXT是的PC端压缩格式,标准CRN与CRN_DXT5(PC设备)相比DXT有更进一步压缩,如果数据精度高,推荐使用CRN_DXT5(PC设备),同时倾斜入库压缩时间也会变长
纹理压缩格式:纹理压缩格式介绍
中心点坐标单位:
分为米和度,根据倾斜摄影OSGB原始数据坐标系单位设置,如果是投影坐标系,设置为米,如果是地理坐标系,或者ENU坐标系,设置为度
纹理重映设:
倾斜摄影数据纹理大小超过1024*1024或者纹理利用率不高,需要勾选纹理重映设,参考上一小点
重构LOD:
倾斜摄影模型数据通常采用分块(Tile)方式存储,即一定空间范围的模型划为一个块并存储在一个文件夹中,每个文件夹下包含了一个根节点文件及若干子节点文件。SuperMap通过索引文件(*.scp)记录的根节点相对路径来加载模型,如下示意图(蓝色方框表示模型根节点)。
“重建LOD”功能则是将相邻一定空间范围的根节点合并为一个根节点,即向上抽稀生成了一层更为粗糙的LOD层级。 当金字塔层级为1时,代表每4个根节点合并为1个,每合并一次,模型根节点数量减少约为原始数量的1/4。系统会控制模型最终的根节点数量,保证根节点在10个左右,极大提升了数据调度效率
融合边界:
勾选“融合边界”后,可以减弱倾斜摄影数据瓦片之间的交界效果,主要是针对瓦片边界存在少量相交的倾斜摄影数据
用来解决倾斜摄影半透明后,边界重叠区域
法线:
要对倾斜摄影数据做阴影分析、日照分析,需要勾选法线,否则不勾选
合并图层:
当多个配置文件的中心点一致时,支持将多个图层的倾斜摄影模型经过倾斜入库后合并成一个图层;当多个配置文件的中心点不一致时,需勾选修改中心点功能,以其中一个配置文件的中心点为准,修改模型中心点,然后进行倾斜入库,将多个图层的倾斜摄影数据合并成一个图层
3.3.2 倾斜入库参数推荐
10.2.1版本:s3m2.0、几何压缩DRACO、纹理压缩CRN_DXT5(或者DXTpc设备)
11i 版本:s3m3.0、几何压缩meshOpt、纹理压缩CRN_DXT5
3.4 构建空间索引
3.4.1 构建空间索引的意义
传统索引方式是通过配置文件一层一层地索引到下一层,这种方式使得要加载数据精细层,必须经过粗糙层,中间层,最终再加载精细层,在层级切换过程中非常耗时
空间索引采用另一种调度方式,以文件的空间结构为基础,规定每一定数量的s3mb生产一个索引文件(json),在前端调用时,根据当前相机位置,获取到对应json,从而调用当前视角下的s3mb文件;这种方式可直接调用精细层
3.4.2 如何构建空间索引
通过【图层管理器】- 右键 - 【构建空间索引】
勾选嵌套结构,叶子节点数默认为256,如果数据量特别大,可适当调大
注意,通过SuperMap iDesktop 11i 版本倾斜入库,自动构建空间索引,不需要再次构建,判断一份数据是否已构建空间索引,可查看倾斜入库后的缓存文件夹,若文件夹内有大量的json文件,可以判断该数据有空间索引
3.4.3 如何使用空间索引
空间索引是一种加载调度方式,需要结合SuperMap iClient for Cesium使用,提供接口:
使用代码:
//查找倾斜摄影图层
var QXlayer = viewer.scene.layers.find('Config');
//对倾斜摄影图层设置空间索引加载模式
QXlayer.LoadingPriority=Cesium.LoadingPriorityMode.UsePagedLodInfo