乐趣区

Cesium中级教程5-Terrain-地形

CesiumJS 支持对与水流相关的海洋、湖泊和河流以及全球高分辨率地形进行流式处理和可视化。查看山峰、山谷和其他地形特征,并拥抱三维数字地球。使用 Cesium ion 流式化您自己的切片地形数据或高分辨率管理地形,如 Cesium World Terrain。

Quick Start 快速入门

打开 Sandcastle 的 Hello World 示例。默认情况下,地球球体是 WGS84 ellipsoid。通过将 terrainProvider 选项传递给Viewer,指定不同的地形提供器。让我们使用 Cesium 世界地形:

Cesium.Ion.defaultAccessToken = 'your_access_token';
var viewer = new Cesium.Viewer('cesiumContainer', {terrainProvider : Cesium.createWorldTerrain()
});

NOTE: 创建 Cesium 账号
NOTE: 本教程使用 Cesium ion 提供的地形。创建一个帐户以获取访问令牌(access token),以便在本教程中使用地形。在这里注册,上面的示例代码将自动更新为您的令牌。如果您已经有帐户,请登录。

修改示例后,按 F8 运行该示例。缩放到山区,按住鼠标中键并拖动以倾斜到地平线视图。下图珠穆朗玛峰的样子:

随着我们的缩放越来越近,CesiumJS 基于地球上哪些部分可见以及它们离得有多远来获得更高分辨率的地形。

地形和图像分别处理,任何图像提供者都可以与任何地形提供者一起使用。请参见 Imagery Layers Tutorial 以管理图像。

启用地形照明和水体效果

Cesium 世界地形还包括地形照明数据和水体效果所需的海岸线数据。默认情况下,此数据不会随地形图块一起发送。若要启用地形照明,请将 requestVertexNormals 设为 true 并开启全球光照。

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProvider : Cesium.createWorldTerrain({requestVertexNormals: true})
});
viewer.scene.globe.enableLighting = true;

下图是基于太阳位置开启地形照明的珠穆朗玛峰的同一个视图。

使用 requestWaterMask 以类似的方式启用水体效果:

var viewer = new Cesium.Viewer('cesiumContainer', {
    terrainProvider : Cesium.createWorldTerrain({requestWaterMask: true})
});

缩放到有水的区域以查看效果。这里是旧金山湾:

随着时间的推移,水波波动和明亮的镜面反射太阳和月亮的光。通过使用 Globe.oceanNormalMapUrl 用于创建波浪来自定义水效果。更改图像提供者也会影响水的外观,因为水的颜色与底层图像混合。改变图层提供器也会改变水体效果的呈现,因为水体的颜色会和底下的图层混合渲染。

请参阅 Sandcastle 的地形示例,探索一些有趣的地形和水体效果区域。

准备流式化地形

Cesium World Terrain: 高分辨世界地形,同时扩展支持地形照明和水体效果。Cesium Worl Terrain 支持通过 Cesium ion 在线访问,也支持付费下载,离线访问。将它加入到 Cesium 应用中,将快速提高地形可视化效果。Cesium World Terrain 也可以通过 on-premise 获得。

Terrain providers 地形提供器

Cesium 基于地形提供器支持请求地形的若干种方法。大多数地形提供器使用 HTTP 上的 REST 接口来请求地形切片。地形提供器根据请求的格式和地形数据的组织方式而有所不同。CesiumJS 支持以下地形提供器:

  • CesiumTerrainProvider: 支持量化网格地形切片,针对地形流进行了优化。兼容 Cesium ion 所服务的地形和来自 [3D tiling pipeline])(/3d-tiling-pipeline/terrain/) 的输出数据。
  • GoogleEarthEnterpriseTerrainProvider: 支持由您的 Google Earth Enterprise 服务器生成的高程地图地形。
  • VRTheWorldTerrainProvider: 支持从 VT MAK VR-TheWorld Server 服务器请求的高度地图地形图。
  • EllipsoidTerrainProvider: 按照程序创建椭球的表面。缺乏地形的真实外观,但不从服务器请求数据。

地形提供器的构造与图层提供器类似,如果服务器不支持跨域资源共享 CORS,则通常包括地形服务器的 URL 和可选的代理。

资源

查看 Sandcastle 中的地形示例和所有地形提供器的参考文档。

Cesium 中文网交流 QQ 群:807482793

本文由 admin 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。
可自由转载、引用,但需署名作者且注明文章出处。

退出移动版