Cesium 1.54评测 【转】
重要功能评测
3dtiles数据上画线和贴纹理

把线条贴到3dtiles上需要用到两个属性:clampToGround和classificationType。
clampToGround属性用来表示该线段要贴地。1.54版以后贴地
中的地
字同时指代地形和3dtiles数据。
还有一个属性classificationType,则用来描述是否只贴地形(ClassificationType.TERRAIN),或者只贴3dtiles数据(ClassificationType.CESIUM_3D_TILE),或者二者都贴(ClassificationType.BOTH)。默认情况下是二者都贴。
Entity API源码如下:
var polyline2 = viewer.entities.add({
polyline : {
positions : positions2,
clampToGround : true,
width : 5,
material : new Cesium.PolylineOutlineMaterialProperty({
color : Cesium.Color.ORANGE,
outlineWidth : 2,
outlineColor : Cesium.Color.BLACK
})
}
});
Primitive API源码如下:
// Polyline Glow
scene.groundPrimitives.add(new Cesium.GroundPolylinePrimitive({
geometryInstances : new Cesium.GeometryInstance({
geometry : new Cesium.GroundPolylineGeometry({
positions : positions,
width : 10.0
})
}),
appearance : new Cesium.PolylineMaterialAppearance({
material : Cesium.Material.fromType(Cesium.Material.PolylineGlowType)
})
}));
Cesium 1.54版本以前,虽然可以做到几何体贴地,但是只能纯色贴入,并不能贴纹理。1.54版本以后,官方终于可以给3dtile数据贴上纹理了。效果如下:

源码如下:
var entity = viewer.entities.add({
polygon : {
hierarchy : new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromRadiansArray([-1.3194369277314022, 0.6988062530900625, -1.3193955980204217, 0.6988091578771254, -1.3193931220959367, 0.698743632490865, -1.3194358224045408, 0.6987471965556998])),
material : '../images/Cesium_Logo_Color.jpg'
}
});
增加对webp图片格式的支持

Cesium增加了新的示例模型,路径如下:
/Specs/Data/Models/Box-Textured-Webp/CesiumBoxWebp.gltf
相关测试源码如下:
var viewer = new Cesium.Viewer('cesiumContainer');
var position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 5000.0);
var entity = viewer.entities.add({
position : position,
model : {
uri : '../../../Specs/Data/Models/Box-Textured-Webp/CesiumBoxWebp.gltf',
minimumPixelSize : 128,
maximumScale : 20000
}
});
viewer.trackedEntity = entity;
新增恒向线(rhumb line)绘制多边形和线段
下图中绿色线条即恒向线。

可以观察红色线条和绿色线条的差别:给定的起点和终点相同,但是绘制出来的线条却不一样。其中红色线条描述的是地表最近距离的曲线,而绿色线条则描述的是恒向线,任意位置的延伸方向都是恒定的。图中起点和终点的纬度都是35,所以绿色线条是和35度纬度线是重合的。
源码如下:
var redLine = viewer.entities.add({
name : 'Red line on terrain',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([-75, 35,
-125, 35]),
width : 5,
material : Cesium.Color.RED,
clampToGround : true
}
});
var greenRhumbLine = viewer.entities.add({
name : 'Green rhumb line',
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([-75, 35,
-125, 35]),
width : 5,
arcType : Cesium.ArcType.RHUMB,
material : Cesium.Color.GREEN
}
新增了两个示例

Polylines on 3D Tiles示例
Polylines on 3D Tiles示例用来描述将线段贴到3dtiles上,其中3dtiles数据有有两类。一类是倾斜摄影的,另外一类是BIM的。在电厂BIM模型的示例中可以看出,线条是贴在BIM模型的管线上的。


从上面的截图可以看出,贴地模式下线条是贴到3dtiles数据上了,不过会从上往下贯穿所有地方,毕竟没有高度上的限制,这样的话,对于BIM数据其实还是有问题的。有些地方并没有管线,但是照样会画上线条。


贴地模式使用起来也很简单,只需要用到clampToGround和classificationType属性,另外注意一下,height不要赋值。源码截取如下:
var powerplant = scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(8564),
show: false
})
);
var pipes = viewer.entities.add({
polyline : {
positions : Cesium.Cartesian3.fromDegreesArray([
-76.36053390920833, 34.949935893493596,
-76.36055481641581, 34.94993589886988,
-76.36055477047704, 34.94992280693651
]),
width : 6,
material : new Cesium.PolylineDashMaterialProperty({
color : Cesium.Color.YELLOW,
dashLength: 20.0
}),
show: false,
clampToGround : true,
classificationType: Cesium.ClassificationType.CESIUM_3D_TILE
}
});
Time Dynamic Wheels示例
这个示例用来展示轮胎转速随车辆运动速度快慢自动调整。该示例代码则描述如何将position转化为速度,再转化为轮胎转动角度,最后通过nodeTransformations属性作用于Model,从而实现车辆轮胎的转动。


源码截取如下,position是一个SamplePositionProperty,通过在不同的时间点上设置不同的运动位置,来创建一个加速运动的车辆。velocityVectorProperty则根据position计算出每个时间点的速度。再由速度计算出轮胎转动的角度。(注:貌似这个地方的角度计算只是近似值,只有numberOfSamples越大时越准确。)
var numberOfSamples = 100;
for (var i = 0; i <= numberOfSamples; ++i) {
var factor = (i / numberOfSamples);
var time = Cesium.JulianDate.addSeconds(start, factor * totalSeconds, new Cesium.JulianDate());
// Lerp using a non-linear factor so that the vehicle accelerates.
var locationFactor = Math.pow(factor, 2);
var location = Cesium.Cartesian3.lerp(startPosition, endPosition, locationFactor, new Cesium.Cartesian3());
position.addSample(time, location);
// Rotate the wheels based on how fast the vehicle is moving at each timestep.
velocityVectorProperty.getValue(time, velocityVector);
var metersPerSecond = Cesium.Cartesian3.magnitude(velocityVector);
var wheelRadius = 0.52;//in meters.
var circumference = Math.PI * wheelRadius * 2;
var rotationsPerSecond = metersPerSecond / circumference;
wheelAngle += ((Math.PI * 2 * totalSeconds) / numberOfSamples) * rotationsPerSecond;
wheelAngleProperty.addSample(time, wheelAngle);
}
其他方面
Entity API中的多个图形的classificationType属性的默认值修改成了ClassificationType.BOTH,也就是说,如果贴地,则会同时往地形和3dtiles数据上贴。
ModelAnimation.speedup已删除,需要使用ModelAnimation.multiplier来代替。
Scene.clampToHeight方法增加了width参数,需要留意。

PolylineGeometry和SimplePolylineGeometry的followSurface属性被替换成arcType,arcType的值可以是ArcType.NONE、ArcType.GEODESIC和ArcType.RHUMB。
3dtiles性能有所提升(IBL导致)
作者:vtxf
链接:https://www.jianshu.com/p/aab4a0bb0d0e
Cesium 1.54评测 【转】的更多相关文章
- Hibernate配置文档详解
Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ...
- Cesium 1.51新功能评测
前言 之前介绍Cesium1.50版本的新功能时,很多人把1.50写成1.5.这两个版本可不一样,之间差了45个小版本号,1.5版本大概是Cesium三年前的版本了. Cesium每月月初的第一个工作 ...
- 【阿里云产品公测】简单日志服务SLS使用评测 + 教程
[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...
- SLS评测报告
什么是SLS? 简单日志服务(Simple Log Service,简称SLS)是针对日志收集.存储.查询和分析的服务.用户只需简单地配置日志产生的位置和格式等信息,就能实时查询海量日志,并可通过S ...
- 【转】花开正当时,十四款120/128GB SSD横向评测
原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站 ...
- Cesium几个案例介绍
前言 本文为大家介绍几个Cesium的Demo,通过这几个Demo能够对如何使用Cesium有进一步的了解,并能充分理解Cesium的强大之处和新功能.其他的无需多言,如果还不太了解什么是Cesium ...
- Cesium学习2:如何从零开始在Eclipse IDE,Java语言搭建cesium开发环境
废话不多说,今天就先在Eclipse上搭建Cesium开发环境吧~ 零.Cesium简介 Cesiumjs 是一套javascript库,用来渲染3D地球,2D区域地图,和多种GIS要素.不需要安装任 ...
- Cesium学习1:如何在本机的Apache tomcat9.0.8服务器中打开cesium的index.html页面
Cesium的官方网站:https://cesiumjs.org/ 点击这个按钮来获取最新的Cesium:下载Cesium. 下载完成之后将zip文件解压到你选择的新目录,解压之后文件目录类似于下图. ...
- .NET 之 ORM 性能评测
.NET 之 ORM 性能评测 Why 你应该总能听到某ORM性能比Dapper高 你应该有如下疑问: 基准测试是否权威 基准测试的方式是否合理 基准测试的标准是否能够统一 统一基准测试标准/规范 如 ...
随机推荐
- 整合Spring+Hibernate+Struts2的时候发现json数据一直无法传到页面,提示no-Session
执行了ajax,页面没有任何反应 怀疑json没有值,想查看json中的内容,使用了ObjectMapper: ObjectMapper om=new ObjectMapper(); System.o ...
- vue-cli配置移动端自适应flexible.js
第一部分:项目中引入lib-flexible 一.项目中安装lib-flexible npm install lib-flexible --save-dev 二.在项目入口文件main.js中引入li ...
- Show which git tag you are on?
git查看当前代码是在那个tag? reference: https://stackoverflow.com/questions/3404936/show-which-git-tag-you-are- ...
- php长连接和短连接区别
短连接 连接->传输数据->关闭连接(推荐学习:PHP编程从入门到精通) 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接. 具体 ...
- python 应用开发之-用base64 对图片文件的编码和解码处理
用base64 对图片文件的编码和解码处理 import base64 def convert(image): f = open(image) img_raw_data = f.read() f.cl ...
- Gym - 247731E :room(最小费用流裸题)
题意:有N个宿舍(N<200),给出第一年每个宿舍有哪4个同学.现在给出N个4元组y[][4],表示这4个人想住一起,问最少多少人需要换宿舍. 思路:费用流,每个4元组y[]到每个宿舍连边,流量 ...
- linux系统时区问题
1. centos 7 转载自:https://www.cnblogs.com/zhangeamon/p/5500744.html 查看时区: timedatectl $timedatectl sta ...
- python预课05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)
结巴分词 import jieba """ pip install jieba 1.精确模式 2.全模式 3.搜索引擎模式 """ txt ...
- openstack环境下搭建的keepalived 两台服务器直接无法ping通VIP ALLOWED-ADDRESS-PAIRS
真的是搞了很久 结果一问人才知道真的是neutron的问题 当然前提是设置unicast 而不是默认设置 先贴出来后面再更新图片 [root@haproxy1 ~]# cat /etc/keepali ...
- applyMiddleware 沉思录
let newStore = applyMiddleware(mid1, mid2, mid3, ...)(createStore)(reducer, null); 给({ getState, dis ...