在cesium 的配置中 有一些参数 可以配置地图的显示
显示出 水的动态显示 山的效果
相当于一些动画显示的效果
var viewer = new Cesium.Viewer("cesiumContainer", {
infoBox: false,
terrainProvider: await Cesium.createWorldTerrainAsync({
requestWaterMask: true,
requestVertexNormals: true
}),
});
在 CesiumJS 中,Cesium.createWorldTerrainAsync
方法用于异步加载全球地形数据,它返回一个 Cesium.TerrainProvider
的实例,该实例可以被用于 Cesium.Viewer
或其他需要地形数据的 Cesium 组件中。这个方法接受一个配置对象作为参数,其中 requestWaterMask
和 requestVertexNormals
是这个配置对象中可以设置的两个选项,它们各自有不同的用途:
requestWaterMask
:- 这个选项用于指示 Cesium 在加载地形数据时是否也应该请求水掩码(water mask)信息。水掩码信息用于区分哪些区域是水域(如海洋、湖泊等),这对于渲染水体、计算水面反射等效果非常重要。
- 当
requestWaterMask
设置为true
时,Cesium 会尝试获取并应用水掩码数据,以便更准确地表示水体区域。 - 需要注意的是,并非所有地形数据源都提供水掩码信息,这取决于具体的数据源。
requestVertexNormals
:- 这个选项用于指示 Cesium 是否应该在加载地形时请求顶点法线(vertex normals)信息。顶点法线对于光照计算、阴影生成以及许多视觉效果都至关重要,因为它们定义了表面的方向性。
- 当
requestVertexNormals
设置为true
时,Cesium 会尝试获取并应用地形表面的顶点法线数据,以改善视觉效果和物理计算的准确性。 - 同样,并非所有地形数据源都直接提供顶点法线信息。如果数据源不包含这些信息,Cesium 可能会通过算法来近似计算这些法线。
在你的代码中,await Cesium.createWorldTerrainAsync({...})
这一行使用了 await
关键字,这意味着该代码片段应该位于一个异步函数内部。然而,直接在 new Cesium.Viewer
的构造函数中这样使用 await
是不合适的,因为构造函数的参数需要是同步确定的。为了解决这个问题,你可以将地形提供者的创建放在一个单独的异步函数中,并在该函数内部使用 await
,然后将返回的地形提供者传递给 Cesium.Viewer
的构造函数。
如果不加这两个参数 是这样的显示 效果 就没有真么立体了 还是有很大的区别的