CQ9电子有限公司属于中国正规、信誉平台,以客户为中心

咨询热线:

020-88888888

cq9电子游戏在线官网:地形建模及渲染实践

发布时间:2024-01-01 14:58人气:

  地形是地图引擎中非常重要的一项能力,不仅可以提高用户对场景的空间感知,还能给无高程数据的要素根据地形海拔赋予高度值。

  目前市面上能见到的拥有地形渲染能力的地图引擎中,最知名的有三个,渲染效果对比如下:

cq9电子游戏在线官网:地形建模及渲染实践

  本文主要分析对比cesium和mapbox的地形渲染能力,结合高精这边的渲染诉求,打造Eagle.gl的地形渲染能力。

  SRTM C 波段数据,可能是最有名的高程数据了。美国航空航天局 NASA 在 2000 时利用奋进号航天飞机上的雷达测观测所得,是以前用得最多的高程数据,覆盖了全球南北纬 60 度以内的区域。

  SRTM3: 3角秒精度,对应精度为90 米。谷歌地球所使用高程数据即为 SRTM3,全球覆盖,保真度不好,几乎没有漏洞、空洞。

  ASTER GDEM数据, 该数据是根据 NASA 的新一代对地观测卫星 Terra 的观测结果制作完成的。其数据覆盖范围为北纬 83°到南纬 83°之间的所有陆地区域,陆地表面99%覆盖。这是目前覆盖最广的高精度全球高程数据。垂直精度20米,水平精度30米,噪点较高。

  如果项目需要更高精度,目前最高到5米,可以付费购买,目前笔者了解到的购买渠道有图新云,感兴趣的可以自己搜索,这里不再介绍。

  从上述渠道获取的高程数据均为TIFF(Tagged Image File Format)格式,是一种主要用来存储包括照片和艺术图在内的图像的文件格式。它最初由 Aldus公司与微软公司一起为PostScript打印开发。

  tif可以有8位,24位等深度,一般线位,而地形数据只有一个高度值,采用8位。

  原始的TIF每个像素点的位置对应经纬度信息,像素点取值对应高程信息,由于经纬度与米的转化是非线性的,所以在建模之前要对数据进行投影转换。

  WGS84 是目前最流行的地理坐标系统。在国际上,每个坐标系统都会被分配一个EPSG代码,EPSG:4326 就是 WGS84 的代码。GPS是基于WGS84的,所以通常我们得到的坐标数据都是WGS84的。一般我们在存储数据时,仍然按WGS84存储。

  伪墨卡托投影,也被称为球体墨卡托,Web Mercator。它是基于墨卡托投影的,把 WGS84坐标系投影到正方形。我们前面已经知道 WGS84 是基于椭球体的,但是伪墨卡托投影把坐标投影到球体上,这导致两极的失真变大,但是却更容易计算。这也许是为什么被称为”伪“墨卡托吧。另外,伪墨卡托投影还切掉了南北85.051129°纬度以上的地区,以保证整个投影是正方形的。因为墨卡托投影等正形性的特点,在不同层级的图层上物体的形状保持不变,一个正方形可以不断被划分为更多更小的正方形以显示更清晰的细节。很明显,伪墨卡托坐标系是非常显示数据,但是不适合存储数据的,通常我们使用WGS84 存储数据,使用伪墨卡托显示数据。

  Web Mercator 最早是由 Google 提出的,当前已经成为 Web Map 的事实标准。但是也许是由于上面”伪“的原因,最初 Web Mercator 被拒绝分配EPSG 代码。于是大家普遍使用 EPSG:900913(Google的数字变形) 的非官方代码来代表它。直到2008年,才被分配了EPSG:3785的代码,但在同一年没多久,又被弃用,重新分配了 EPSG:3857 的正式代码,使用至今。

  由于下载的TIF数据多是根据图幅或者经纬度切分的,而渲染的时候是以瓦片的形式组织数据,由于瓦片边界和经纬度以及图幅的边界不贴合,导致建模后部分瓦片内的地形模型不完整,效果如下:

  建模时需要将零散的TIF数据拼合为全国TIF数据后才能进行建模。这里我们使用gdalbuildvrt对多个TIF数据进行关联合并。

  另外,可以通过指定输出的分辨率和插值模式来切分出更高精度的瓦片高程数据。

  heightMap是目前mapbox采用的模型方案。下图是地形+楼块的渲染效果。

  使用heightMap渲染地形无需提前建模,生成好每个瓦片的高程图片即可。

  上图是第15级12310行26994列的瓦片高程图,图片大小为256*256。

  渲染时每个瓦片使用一个256*256的PlaneGeometry,将此图作为高程数据源。在片元着色器中:

  使用上面的公式根据每个像素点的rgb色值算出每个顶点的海拔高度值,即可将PlaneGeometry拔起一个高度。

  Quantized-Mesh-1.0是Cesium现在及未来使用的地形切片格式,目前已经比较成熟,配套工具也很齐全,对比heightMap,具有顶点数小、三角形数量少、地形文件小的特点。

  3、扫描全量三角形p0,p2,p3和p0,p1,p2中的点,获取与端点高程差最大的点p4作为插入点。

  5.3、做p0p4p2的内接圆,发现p1在内接圆内,则当前三角形p0p4p2和三角形p0p1p2不是最优解

  高精作业场景在19级以上地型模型,最高可至25级,如果对全国所有的瓦片都进行地形建模,成本可大致估算:

  由于高程数据的精度为30米,其对应层级为12,所以理论上上地形建模支持到12级即可,12级及以上精度由浏览器实时插值得出模型。

  受浏览器端性能限制,只能使用线性插值,效果较差,所以Eagle.gl引擎使用三次内插法插值生成17级地形模型,在浏览器端使用线级地形模型。

  根据地形高程差生成18级的裁剪盒,取17级地形模型和裁剪盒的交集,得到18级地形模型,更高级别同理。


020-88888888