前言
Cesium 在1.52版本中改进了多个渲染问题,并且增加了HDR和3dtiles数据的精确求交方法。以下详述。
增加了和3dtiles数据的精确求交方法
1.51版新增的sampleHeight和clampToHeight函数虽然能获取3ditles数据指定位置的求交点,但是有一个问题,它只是以当前视角相机能看到的视野进行计算,视野范围之外,要么模型过于粗糙,要么就没有调度,很可能求取不到数值。
此次版本更新,则增加同名函数的异步形式(sampleHeightMostDetailed等函数)。这个改进还是很重要的,Cesium为此特意增加了一个样例:
异步是为了能从服务器上调度来最精细的3dtiles数据来进行求交运算,毕竟调度数据是缓慢的过程,如果同步来取,必然会导致浏览器卡顿。优点是计算精度有了保证;不好的地方,则是反应速度有点儿慢,也可能增加一点内存开销。
增加了HDR,继续提升三维渲染效果
bagnell大神自今年五月份开始为Cesium增加HDR效果以来,历时数月给所有的图元增加了HDR特性,同时增加了若干tonemapping、bloom等后处理算法,终于在1.52版将分支合并至主干。
HDR可以保留更多的颜色细节,更好地还原世界本来的模样。但是恕我眼拙,1.52版的地球和图元,除了相比前版会更暗一点以外,好像并没有看出特别明显改进的效果。。
另外,因为HDR的增加,还好像引入了一些额外的问题。有可能Cesium后期还会继续改进吧。
但是无论怎么说,Cesium把很多目前主流的三维渲染效果如PBR等都加到引擎中去了,并且在持续改进中。未来三维渲染效果只会越来越好。
支持倾斜摄影创建出来的3dtiles数据的样式设置
这个长久以来的问题终于得到了官方的修复!之前做样式设置的时候,经常会遇到设置完了style,不起作用的情况。大部分情况都是因为碰到了倾斜摄影数据(没有batchTable)。老版本的Cesium在代码中通过featureLength是否为0,来硬生生将之从样式设置中过滤出去。
这个问题终于在1.52版获得修复。效果如下:
修复线段在不同视角下的显示问题
Cesium中的线段,是可以设置线宽的。然而WebGL并不支持线条绘制的宽度设置,Cesium为了绕过此问题,将线段当成三角面片来绘制,期间会计算direction来确定三角面的顶点位置。然而在近裁下的direction计算貌似有些问题,导致了显示上的bug。好在这个版本bagnell大神已修复。
修复了Entity中动态几何体的透明显示问题
貌似仅1.51版有此问题,之前的版本没问题,新版中也已改进。之所以出问题是PerInstanceColorApperance中的flat设置问题,flat表示物体颜色是否受光照影响。目前只有1.51版不带光照效果,看起来几何体会没有层次感。
其他改进
Cesium在地形加载上也做了一些改进,如果不用layer.json来获取可用性信息,而且通过逐级加载可用信息的方式来加载地形,会提升地形加载的速度,并减少一些内存占用。但是这一块笔者没仔细看。。有兴趣可以自行研究。。