重要功能评测
地形和影像渲染的重大改进
地形和影像的加载速度大约提升了1.4-2.1倍,并且减少了约三分之一的数据请求量。
Cesium此次更新增加的两个新示例都和地形性能测试有关。
其中的Terrain Performance示例可以用来检测地形加载的性能。示例中,左上角的若干个按钮用来做不同场景下的测试。点击按钮以后会加载相应位置的地形数据,并且再加载完成以后弹出测试结果,如下图所示。
image.png我在github上看了一下此次地形改进的日志,发现对五十多个文件进行更改。有一位大神,名叫Kevin Ring,几乎包揽了Cesium的地形改进工作。实际上Cesium地形此次大改之前,一直没有太大的变化,而最初的地形功能实现,则是在2013年3月,已经是整整六年前的事。而Cesium最初的地形功能实现,也是Kevin Ring包揽的。
image继续翻阅后发现,原来Kevin Ring早在2011年就和后来Cesium的创始人Patrick Cozzi合作写了3D Engin Desgin fro Virtual Globes大作。大神这么多年来,一直在研究地形。。
image现如今,Kevin大神和其他Cesium成员不同,并不在Cesium的美国总部,而是在澳洲一家叫做Data61的公司。这么多年却仍然在完善着Cesium,还将Cesium应用到自家公司的TerraJS项目中。
image地形材质属性的变化
地形材质,即globe.material,其中的坡度属性 czm_materialInput.slope,原先表示斜率,现在更改为角度。另外,增加了坡向属性 czm_materialInput.aspect,用来表示地形的朝向。
这两个属性,ArcGIS的文档中都有解释,可以看这里:ArcGIS 坡度的工作原理、ArcGIS 坡向工具的工作原理。但是Cesium中的这两个属性,和ArcGIS的略有不同。坡度在Cesium中现在使用角度来表示,而ArcGIS中是斜率。坡向在Cesium中的初始方向(数值为0时表示的方向)朝东,而在ArcGIS中朝北。
Cesium的Sandcastle中有一个关于地形材质设置的示例,在这里:
Globe%20Materials的示例本地地址如下:http://localhost:8080/Apps/Sandcastle/gallery/Globe%20Materials.html
该示例中有四个选项,分别表示正常模式(no shading)、高度图、坡度、坡向的地形材质设置。
正常模式下的地形影像如下所示:
正常模式下的地形影像另外三种模式的使用,都需要事先准备好一个颜色梯度。此示例自身通过canvas创建了一个颜色梯度,如下所示:
颜色梯度用在高度图上是一片红,主要是我选择的区域的高度主要集中在红色区域。。如果地形深度差别较大时,是可以看到其他颜色的,可以自行尝试下。
高度图czm_materialInput.slope 表示坡度,用角度来表示,单位弧度,范围是从0到0.5*pi,相当于表示从水平到竖直的程度。纹理坐标0对应水平坡度,纹理坐标1对应垂直坡度。
坡度颜色梯度最后生成的坡度图如下所示,其中颜色越深,或者蓝色的地方,说明坡度较小,而红色的地方坡度较大。
坡度图czm_materialInput.aspect 表示坡向,用角度来表示,单位弧度,按照东北西南的顺序表示方向。即正东向为起始0弧度,再向左转圈,正北向为pi/2弧度(90度), 正西向为 pi弧度(180度),正南向为 1.5*pi弧度(270度)。
坡向颜色梯度最终的坡向图如下所示,蓝色的地方坡向朝北,黑色和白色的地方都是朝东,红色的地方朝西。图中可以看到黑色和白色有的时候在一起,对比度强烈,我想坡向图的颜色梯度,还是保证首尾颜色一致比较好。Cesium给出的毕竟只是示例,我们自己用的时候还是得注意一下。
坡向图其他更新
- CZML中的polyline和polygon两种几何图形支持arcType属性。
- 修复模型中部分使用draco压缩时导致的崩溃问题
欢迎关注 Cesium实验室 ,QQ群号:595512567。
image.png
网友评论