前言

之前介绍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. mysql 新特性之geometry

    1.获取矩形两个点的数据(左上角和右下角) SELECT  *    FROM    t_location    WHERE   MBRContains                    (    ...

  2. scrapy - 给scrapy 的spider 传值

    scrapy - 给scrapy 的spider 传值 方法一: 在命令行用crawl控制spider爬取的时候,加上-a选项,例如: scrapy crawl myspider -a categor ...

  3. shell $* 和$@ 的区别以及运算操作

    #! /bin/bash test() { echo "未加引号,二者相同" echo $* echo $@ # 脚本名 echo $ # 参数个数 echo $# # 返回值 e ...

  4. POJ 2954 /// 皮克定理+叉积求三角形面积

    题目大意: 给定三角形的三点坐标 判断在其内部包含多少个整点 题解及讲解 皮克定理 多边形面积s = 其内部整点in + 其边上整点li / 2 - 1 那么求内部整点就是 in = s + 1 - ...

  5. vue qs插件的使用

    参考:https://blog.csdn.net/weixin_43851769/article/details/86505164 qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库. 步 ...

  6. LINUX交换分区

    交换分区最大容量为64G,最多只能建32个,          创建交换分区 #fdisk /dev/hdaànà+容量àpàt(修改系统ID)à分区号à82àpàw #mkswap /dev/hda ...

  7. 关于Synthesis

    1,当追求面积最小时 会以牺牲Fmax为代价,可以使用一下setting: fit_pack_for_density=on fit_report_lab_usage_stats=on 可在 .qsf ...

  8. 代码内存泄露检测工具(linux gcc + valrind)

    参考博客: https://www.cnblogs.com/wangkangluo1/archive/2011/07/20/2111248.html linux命令如下:valgrind --tool ...

  9. Python-基本运算符与流程控制

    目录 基本运算符 算术运算符 比较运算符 赋值运算符 逻辑运算符 身份运算符 位运算符 成员运算符 运算符优先级 流程控制 if 判断 单分支结构 双分支结构 多分支结构 while 循环 while ...

  10. .git文件夹太大问题及解决方法

    最近我们做了自动化构建, 发现文件.git文件夹越来越大, 求后端小伙伴帮忙, 小伙伴指点了一下说周末弄了一下, 忘记命令的.大致的意思就是找到git 提交了哪些大文件. 然后重构git, 先分享给小 ...