Cesium官方教程5--地形圖層
原文地址:https://cesiumjs.org/tutorials/Terrain-Tutorial/
Cesium支援漸進流式載入和渲染全球高精度地形,並且包含海、湖、河等水面效果。相對2D地圖,山峰、山谷等其他地形特徵的更適宜在這種3D地球中展示。
地形資料集是巨大的,通常都是GB或者TB級別。在普通3D引擎中,使用底層圖形API去高效實現地形資料的視覺化需要做很多事情。幸好,Cesium已經完成了這個體力活,而我們只需要寫幾行程式碼。
快速開始
從一個示例開始吧。開啟Sandcastle中的 Hello World 示例。預設,全球是 WGS84 標準球。 新增下面程式碼 (在這一行之後 var viewer = ...
),即可把Cesium ion上釋出的全球地形資料加入到場景中:
viewer.terrainProvider = Cesium.createWorldTerrain();
修改後,按F8執行。先感受下地形效果,縮放到任意山區,按住中鍵,拖拽讓水平檢視傾斜。 下面是珠峰的效果:
當我們拉近一些,Cesium依據當前相機距離以及當前可視範圍來請求高精度地形資料。
地形和影像是區別對待的。預設影像是覆蓋在地形上的。任意影像provider可以覆蓋在任意地形provider上。
開啟地形光照和水面效果
Cesium全球地形也包含了地形光照資料,以及水面效果需要的海岸線資料。預設地形伺服器不會傳遞包含這兩個額外資料的切片。我們可以在 CesiumTerrainProvider
的建構函式配置一下。
開啟地形光照,需要VertexNormals擴充套件。
var terrainProvider = Cesium.createWorldTerrain({
requestVertexNormals: true
});
viewer.terrainProvider = terrainProvider;
viewer.scene.globe.enableLighting = true;
這和上面的珠峰位置相同,但是現在有了基於太陽實際位置的光暈效果。
水面效果也是同樣的方法。我們請求WaterMask擴充套件。
var terrainProvider = Cesium.createWorldTerrain({
requestWaterMask: true
});
viewer.terrainProvider = terrainProvider;
縮放到一片水域。比如舊金山灣:
有一個海浪的動畫,以及反射太陽和月亮的光。
可以再去Sandcastle的 地形示例檢視一些區域的地形和水面 .
可以使用的地形
Cesium 全球地形,基於Cesium開發的專案只需要幾行程式碼就可以載入。
CesiumLab工具,非常方便的工具,可以對地形資料切片、下載地形、釋出地形服務。
地形資料 providers
Cesium使用terrain providers支援幾種地形資料請求方法。大部分地形provider通過基於HTTP的REST 介面 去請求地形切片。依據地形資料的組織方式和請求方式不同,Cesium支援下列地形provider:
- Cesium 標準地形 -高經度全球地形,地形支援光照和水面效果。地形切片使用quantized-mesh v1.0格式。 Cesium中使用 CesiumTerrainProvider.
- Google Earth Enterprise -通過高度圖(height map)方式生成地形。 Cesium中使用 GoogleEarthEnterpriseTerrainProvider.
- VT MAK VR-TheWorld Server - 從 VR-TheWorld Server請求地形切片。 這個服務資料是90米取樣精度的全球資料,並且包含水深資料。Cesium中使用 VRTheWorldTerrainProvider.
- Ellipsoid - 光滑橢球體。這個地形不請求任何服務資料,也沒有任何地形起伏效果。一般用作一些太空類展示專案。 Cesium中使用 EllipsoidTerrainProvider.
可以通過實現 TerrainProvider 介面來訪問其他地形服務。如果這麼做了,請 貢獻 給Cesium。
綜上所述,使用地形provider,只需要設定 Viewer.terrainProvider。地形provider和影像provider很像,通常地形服務的url地址,以及一個代理伺服器配置(當服務不支援CORS跨域訪問的時候)。
一些地形provider,比如CesiumTerrainProvider包含海岸線資料能展示動態水面效果。通過修改 CentralBody.oceanNormalMapUrl屬性去替換海量的法線貼圖,去自定義海浪效果。因為水面顏色和影像顏色是混合的,所以修改影像也會影響水面效果 。
資源
檢視Sandcastle中的 地形示例 。幫助手冊 所有的地形provider.
相關文章
- vue地圖視覺化 Cesium篇Vue地圖視覺化
- 在cesium中實現熱力圖
- unreal engine 4 如何建立地形、地表貼圖。Unreal
- EventBus官方教程
- UE4 地形編輯-建立地形Landscape/terrainAI
- Cesium載入各種網際網路地圖地圖
- Cesium for Unreal 支援的離線地圖的瓦片格式Unreal地圖
- ZooKeeper 官方教程[翻譯]
- [翻譯]CMAKE官方教程
- Cesium JulianDate(十八)
- ROS筆記5--動作通訊ROS筆記
- 【cesium】修改底圖顏色為藍色科技範兒
- Python 官方文件:入門教程Python
- Matlab 2018a 官方教程[二]Matlab
- Cesium之Web WorkersWeb
- Cesium廣告牌
- 分層圖
- OPENVINO官方開發進階教程
- Google Guava官方教程(中文版)GoGuava
- 官方教程:Go fuzzing模糊測試Go
- C# 操作PDF 圖層(Layer)—新增、刪除圖層、設定圖層可見性C#
- 安裝win10系統安裝官方原版映象的方法【圖文教程】Win10
- 使用Covermap實現地形細節
- 入學管理系統的頂層圖和一層圖
- pytest用法(直接截圖官方文件)
- mysql 官方架構相關圖MySql架構
- Vue Cli 4 引入 Cesium 配置Vue
- Cesium渲染模組之Shader
- Cesium渲染模組之Command
- Cesium渲染模組之VAO
- Cesium-03:洪水淹沒
- Cesium學習筆記(一)筆記
- 畫出入學管理系統的頂層圖和1層圖
- HexMap學習筆記(九)——地形特徵筆記特徵
- Minecraft類遊戲地形生成機制Raft遊戲
- Pandas 2.2 中文官方教程和指南(六)
- Pandas 2.2 中文官方教程和指南(三)
- RoadRunner圖層轉換