Cesium 1.53评测

前言

上个月是西方人的圣诞节,老外们可能都出去happy了,Cesium 1.53版的改动很少。。不过Bagnell大神笔耕不辍,几乎包揽1.53版的所有修改,而且给PBR材质带来了令人惊艳的IBL特性。

image

IBL接口

PBR指的是基于物理特性的渲染效果,让Cesium渲染的物体更加接近真实世界。而IBL则是一种伪装全局光照的方法.使用该方法可以获得较好的视觉效果并且可以达到实时渲染的目的。

其实Cesium早在1.51版就已经增加了PBR和IBL的支持,只是并未开放出IBL的定制接口出来,而Cesium自带的环境贴图效果又太差,导致渲染的效果实在没法和Three.js或者ClayGL一较高下。

直到今天增加了IBL的定制接口(specularEnvironmentMaps、sphericalHarmonicCoefficients)以后,才让渲染效果可调节,赋予了无限可能。笔者在上一个版也曾尝试修改源码自行定制IBL效果,而且渲染效果感觉也还挺不错。没想到这么快,Cesium自己就搞好了。想来我真是浪费时间,早知如此,等等就好,哈哈。

然而Cesium官方给出的IBL示例还是差强人意。我在原有示例的基础稍稍调整了一下,得到了这样的效果。如果不考虑反走样等因素的话,这个效果应该很接近Three.js和ClayGL了。

image
image

自从做Cesium以来,就一直被领导和客户反复强调Cesium的渲染效果太差,我想至少这可以证明Cesium还是很有潜力的。接下来再花时间把3dtiles数据好好调校一番,效果自然也不会差。

其他改进

  1. Model类和Cesium3DTileset类上增加了luminanceAtZenith,用来调节程序纹理的亮度。这里的程序纹理指的是不使用上述IBL接口自定义会自动生成的环境纹理,言下之意是不能和上述IBL接口同时使用。

  2. 增加了双击取消对Entity的跟踪状态。Cesium的鼠标双击操作可以跟踪一个Entity对象,让Entity对象始终在屏幕中心且可以环绕视角查看。以前一旦双击跟踪了以后,再想取消,往往不好找到方法。

  3. 修复了Cesium1.52版独有的背景颜色不能透明的问题,我在之前的文章中曾经说过Cesium可以做到背景透明且给出了示例,不过那个示例也没法再Cesium1.52版本中使用,除非关闭HDR特效。

  4. 修复影响图层对比度不起作用的问题,也是上个版本新增的HDR来了的问题。

  5. 修复了3dtiles内部的可见性检查缺陷,可能会影响pickFromRay等操作。

附录IBL修改后的示例

本地运行

官方运行

以上示例引用了github上的资源,需要能够跨域访问,可以通过类似下面的命令行来运行chrome解决跨域问题:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security --user-data-dir=C:/vtxf/Temp/ChromeUserData

欢迎关注 Cesium实验室 ,QQ群号:595512567

image.png

转载自:https://www.jianshu.com/p/979d874a7422

You may also like...