请选择 进入手机版 | 继续访问电脑版
查看: 6189|回复: 0

Cesium入门教程 7 - Adding Terrain - 添加地形

[复制链接]

该用户从未签到

9

主题

9

帖子

129

积分

超级版主

Rank: 8Rank: 8

积分
129
发表于 2019-9-26 14:58:59 | 显示全部楼层 |阅读模式
本帖最后由 论坛超级版主 于 2019-9-26 15:29 编辑

Cesium支持流式的、可视化的全球高程投影地形地势、水形数据,包括海洋、湖泊、河流、山峰、峡谷和其他能够被三维展示出来的且效果比二维好的地形数据。像图层数据一样,Cesium引擎会从一个服务器上请求流式地形数据,仅请求那些基于当前相机能看到的需要绘制的图层上的数据。

Cesium官方提供了一些地形数据集的例子,以及如何配置这些参数。

支持的地形数据格式

  • Quantized-mesh(Cesium团队自己开源的一种格式)
  • Heightmap
  • Google Earth Enterprise

为了添加地形数据,我们需要创建一个CesiumTerrainProvider,提供一个url和一些配置项,然后将这个provider赋值给viewer.terrainProvider

此处,我们使用Cesium WorldTerrian图层,该图层由Cesium ion提供,在“My Assets”中是默认提供的。我们可以用create WorldTerrain helper函数创建一个由Cesium ion提供服务的Cesium WorldTerrian

  1. <font face="微软雅黑">// Load Cesium World Terrain
  2. viewer.terrainProvider = Cesium.createWorldTerrain({
  3.     requestWaterMask : true, // required for water effects
  4.     requestVertexNormals : true // required for terrain lighting
  5. });</font>
复制代码

request WaterMaskrequest VertexNormals是可选的配置项,告诉Cesium是否需要请求额外的水、光数据。这两个选项默认是设为false的。

最终,既然我们有了地形数据,我们需要更多的线条来使得地形数据背后的objects能够正确地显示,只有最前面、最上面的objects才能是可见的。

  1. <font face="微软雅黑">// Enable depth testing so things behind the terrain disappear.
  2. viewer.scene.globe.depthTestAgainstTerrain = true;</font>
复制代码

我们现在有地形数据和运动的水。纽约非常平坦,所以可以在上面的地形数据上自由的探索。举一个显而易见的例子,你可以跳转到更加崎岖的区域比如 Grand Canyon 或者 San Francisco。

5b728a65d7e08.jpg


关于地形数据的更多信息,请访问Terrain Tutorial

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

cesium中国官方网站

网站简介:cesiumChina是国内cesium相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的图形工作从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00 - 18:00
  • 反馈邮箱:1315785073@qq.com

QQ|Archiver|手机版|小黑屋|cesiumchina ( 陕ICP备14000835号-5 )

快速回复 返回顶部 返回列表