Cesium 地形教程

地形 · Terrain · ▶ 在线运行案例

你将学到什么

  • Scene / Camera / Renderer 标准渲染管线搭建
  • 案例完整源码结构与可复用初始化模板

效果说明

本案例演示 地形 效果:基于 WebGL 实现「地形」可视化效果,附完整可运行源码。建议先打开文首在线案例查看动态画面,再对照下方源码逐步理解。

核心概念

  • Viewer 封装地球、相机、图层与 clock;可关闭 animation/timeline 精简 UI。
  • SkyBox 六面图换天空;Water 用法线贴图 + time;地形需 depthTestAgainstTerrain。

实现步骤

  • 创建 Viewer,配置地形/影像(若案例需要)并设置初始相机
  • requestAnimationFrame 循环中更新状态并 render(Cesium 为 viewer.render 或自动渲染)

代码要点

复制代码
  import * as Cesium from 'cesium'


  // 如果出现地图没加载出地球 可能是多人访问公用token导致的问题,换成你自己的token 就好
  Cesium.Ion.defaultAccessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjOTVhZGI5Zi0wMTYzLTQ2MWEtYTBjYS02OTc5ZGNkNTY3ZDMiLCJpZCI6NTcwNzEsImlhdCI6MTc2MjQ3OTkyNH0.1bx7V2IFDE_Id5uqrQx-pJvRlzH34NDa2zc8vDY-Y0w"



  const box = document.getElementById('box')



  const viewer = new Cesium.Viewer(box, {



  animation: false,//是否创建动画小器件,左下角仪表



  baseLayerPicker: false,//是否显示图层选择器,右上角图层选择按钮



  fullscreenButton: false,//是否显示全屏按钮,右下角全屏选择按钮



  geocoder: false,//是否显示geocoder小器件,右上角查询按钮



  homeButton: false,//是否显示Home按钮,右上角home按钮



  sceneMode: Cesium.SceneMode.SCENE3D,//初始场景模式



  sceneModePicker: false,//是否显示3D/2D选择器,右上角按钮



  navigationHelpButton: false,//是否显示右上角的帮助按钮



  selectionIndicator: false,//是否显示选取指示器组件



  timeline: false,//是否显示时间轴



  infoBox: false,//是否显示信息框



  scene3DOnly: true,//如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源



  orderIndependentTranslucency: false, //是否启用无序透明



  contextOptions: { webgl: { alpha: true } },



  skyBox: new Cesium.SkyBox({ show: false })



  })



  viewer.scene.sun.show = false



  viewer.scene.moon.show = false



  viewer.scene.skyBox.show = false



  viewer.scene.backgroundColor = new Cesium.Color(0.0, 0.0, 0.0, 0.0)



  viewer._cesiumWidget._creditContainer.style.display = "none"



  // 加载地形
  // viewer.terrainProvider = await Cesium.CesiumTerrainProvider.fromIonAssetId(3957, {



  //     requestWaterMask: true,



  //     requestVertexNormals: true



  // })



  viewer.terrainProvider = await Cesium.createWorldTerrainAsync({



  requestWaterMask: true,



  requestVertexNormals: true


  `})
  `

完整源码:GitHub

小结