前言

之前介绍Cesium1.50版本的新功能时,很多人把1.50写成1.5。这两个版本可不一样,之间差了45个小版本号,1.5版本大概是Cesium三年前的版本了。

Cesium每月月初的第一个工作日出版本,这个节奏已经维持四年多了。。一直没有变化。所以小版本号一直很多,也不知道Cesium什么时候能出2.x的版本,希望届时能换个打包编译工具,也能支持一下tree-shaking。。Cesium目前编译压缩以后的版本快接近3M了,这个需求很迫切啊。。

这个月的Cesium 1.51版本,没有太多新功能,不过对上一个版本继续做了很多改进。下面再详细说明一下。

功能评测

Imagery Cutout(影像图层上挖洞)

ImageryLayer类增加了cutoutRectangle属性

 
输入图片说明
 
输入图片说明

WMS-T(time)

WebMapServiceImageryProvider新增根据时间进行动态调整影像的功能,实际上这个功能一年前已经在WMTS上支持了,Sandcastle中也有一个相关的示例。

 
输入图片说明

不过此次对WMS的完善,貌似还没有示例,或许以后会增加上吧。。

Atmosphere改进

Cesium在1.50版本上增加了Ground Atmosphere,这样就出现Ground Atmosphere和Sky Atmosphere两个渲染效果。1.51版本更正了Sandcastle中的示例名称,把Atmosphere改称Ground Atmosphere,Atmosphere Color改成Sky Atmosphere,这样更利于读者理解。如下图所示。

 
输入图片说明

Globe类上新增以下属性:atmosphereHueShift, atmosphereSaturationShift, and atmosphereBrightnessShift。这样Sky Atmosphere上的调整,也可以通过这几个变量,来同步修改Ground Atmosphere。

 
输入图片说明

削减release版js文件大小

Cesium的第三方库中有一个叫google-earth-dbroot-parser.js的文件,是为了加载谷歌地球服务需要用到的一个js文件。这个js文件居然有惊人的400个多k,而且Cesium还直接打包到最终的release版js文件当中。

 
输入图片说明

然而如果不使用谷歌地球服务的话,根本不需要用到这个文件。所以此次Cesium调整了一下策略,relese时不合并这个文件,而是在需要时再自动加载。

经过此番操作,最终gzip之后的Cesium.js文件会减少27 KB (~3.7%)。削减量貌似也不是很大。。如果Cesium以后能改成按需加载,别打包成一个整的js文件,或许会好很多。

imageBasedLightingFactor

Cesium3DTileset, Model, and ModelGraphics类型增加了imageBasedLightingFactor属性,这个变量是Cartesian2类型,分别表示环境因素(大气、星空等)导致的散射光和镜面光系数。需要注意的是数值必须在0-1之间。它的作用可以看下对比图。

正常情况下的车辆是这样的:

 
输入图片说明

imageBasedLightingFactor设置成(0, 0)时,相当于去掉环境光的影响,效果是这样的:

 
输入图片说明

另外还增加了lightColor属性(Cartesian3类型),用来调整太阳光的颜色和强度。因为可以调整强度,所以数值可以超过1。我把lightColor改成(10, 10, 0)以后的效果如下:

 
输入图片说明

注意点:imageBasedLightingFactor和lightColor属性,都只能在PBR材质上使用,如果某个模型并非PBR材质,这两个属性即使设置了也不起作用。

BIM示例改进

Cesium自带的BIM示例之前有一些面片闪烁的问题,目前已修复。还增加了一个Per-feature slection的选项,用来对BIM部件进行拾取。Cesium在这里提供了一种不使用style进行拾取样式设置的方法。

 
输入图片说明

该方法主要是通过监听tileLoad和tileUnload事件,来动态管理feature和部件的关系。通过拾取到的feature,来找到对应的部件,然后再找到该部件关联的所有feature进行变色。

tileset.tileLoad.addEventListener(function(tile) {
processTileFeatures(tile, loadFeature);
}); tileset.tileUnload.addEventListener(function(tile) {
processTileFeatures(tile, unloadFeature);
});

矩阵中提取欧拉角

Cesium新增Transforms.fixedFrameToHeadingPitchRoll方法,可以用来提取矩阵中的欧拉角。示例代码如下:

        var expected = new HeadingPitchRoll(0.5, 0.6, 0.7);
var transform = Transforms.eastNorthUpToFixedFrame(Cartesian3.fromDegrees(0, 0));
var transform2 = Matrix4.fromTranslationQuaternionRotationScale(new Cartesian3(), Quaternion.fromHeadingPitchRoll(expected), new Cartesian3(1, 1, 1));
transform = Matrix4.multiply(transform, transform2, transform2);
var actual = Transforms.fixedFrameToHeadingPitchRoll(transform);
expect(actual).toEqualEpsilon(expected, CesiumMath.EPSILON10);

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

 
输入图片说明

Cesium 1.51新功能评测的更多相关文章

  1. Cesium 1.50重量级新功能测评

    概要 既Cesium 1.49中3dtile加载性能大幅提升以后,Cesium 1.50再次迎来几个重量级新功能: 1 地球裁切,这下相当于可以截取一部分地形影像数据,当作一个平面场景来用了! 2 射 ...

  2. CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系

    CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...

  3. 初识 MySQL 5.6 新功能、参数

    摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...

  4. 浅谈测试rhel7新功能时的感受及遇到的问题【转载】

    半夜起来看世界杯,没啥激情,但是又怕错误意大利和英格兰的比赛,就看了rhel7 相关新功能的介绍. rhel7的下载地址: https://access.redhat.com/site/downloa ...

  5. Entity Framework 6新功能Logging/Store Procedure

    摘要 在Entity Framework6中有两个新的功能,DB Loggin和Stored Procedure的映射 Entity Framework 6已经从Beta版本来到了RC1版本,我们可以 ...

  6. [译] OpenStack Ocata 版本中的 53 个新功能盘点

    原文链接:https://www.mirantis.com/blog/53-new-things-to-look-for-in-openstack-ocata/ 原文作者:Nick Chase, Ra ...

  7. MySQL 8.0有什么新功能

    https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...

  8. Xcode7.3 beta 新功能 https://developer.apple.com/go/?id=xcode-7.3-rn

    Xcode7.3 beta 新功能html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin ...

  9. Java 18 新功能介绍

    文章持续更新,可以关注公众号程序猿阿朗或访问未读代码博客. 本文 Github.com/niumoo/JavaNotes 已经收录,欢迎Star. Java 18 在2022 年 3 月 22 日正式 ...

随机推荐

  1. python相关小技巧整理[持续更新]

    1. pdb的非常方便的debug,抛弃print吧~ 参考https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/ impor ...

  2. day 53 Django基础二之URL路由系统

    Django基础二之URL路由系统   本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11 ...

  3. 万恶之源-python介绍

    PATH OF PYTHON (生命短暂,我要学pythonヾ(◍°∇°◍)ノ゙) 一.Python介绍: 简史:Python诞生于1989年的圣诞节, 创始人为Guido van Rossum, 又 ...

  4. 王者归来,Java 程序设计葵花宝典!

    致谢  感谢所有关注本号的小伙伴们,这一年来本号的茁壮成长离不开大家的支持. 2018年,继续坚持分享以及为大家谋求福利!!! Java技术栈往期赠书 赠书一:新春第一次送书,价值78元 X 3本 赠 ...

  5. 18-6-calsslist

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. PCA降维2

    前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码.全文主要分六个部分展开: 1)简单示例.通过简单的例子 ...

  7. VS2010版的Speex音频处理模块(附源码+测试demo)

    开源的Speex代码内部包含了VS2003,05,08工程,但是直接编译总有一些要设置的地方,虽说也不是很复杂,但是对于不是很了解VS的同学来说还是要折腾一阵,所以我弄了一个可以直接使用的版本,当然是 ...

  8. 0903NOIP模拟测试赛后总结

    分-rank33.这次考试心态挂了. 拿到题目通读三道题,发现都十分恶心. 然后把时间押到了T1上.将近两个小时,打了个dfs,一直调调调. 最后没调出来,手模了个数据就把自己两个小时的思路hack了 ...

  9. python 版本配置问题

    环境变量里有anaconda 但是命令行输入python却并不是anaconda里的python 这个现象的产生是由于anaconda在环境变量里的顺序靠后,python2.7已经在其他环境变量里被找 ...

  10. memcache课程---3、php使用memcache缓存实例

    memcache课程---3.php使用memcache缓存实例 一.总结 一句话总结: 前置:windows下安装好memcache.exe,安装好memcache的php扩展,开启memcache ...