1. 程式人生 > >Cesium入門7 - Adding Terrain - 新增地形

Cesium入門7 - Adding Terrain - 新增地形

Cesium入門7 - Adding Terrain - 新增地形

Cesium中文網:http://cesiumcn.org/ | 國內快速訪問:http://cesium.coinidea.com/

Cesium支援流式的、視覺化的全球高程投影地形地勢、水形資料,包括海洋、湖泊、河流、山峰、峽谷和其他能夠被三維展示出來的且效果比二維好的地形資料。像圖層資料一樣,Cesium引擎會從一個伺服器上請求流式地形資料,僅請求那些基於當前相機能看到的需要繪製的圖層上的資料。

Cesium官方提供了一些地形資料集的例子,以及如何配置這些引數。

支援的地形資料格式

  • Quantized-mesh, Cesium團隊自己開源的一種格式
  • Heightmap
  • Google Earth Enterprise

為了新增地形資料,我們需要建立一個CesiumTerrainProvider,提供一個url和一些配置想,然後將這個provider賦值給viewer.terrainProvider

此處,我們使用Cesium WorldTerrian圖層,該圖層由Cesium ion提供,在“My Assets”中是預設提供的。我們可以用createWorldTerrainhelper函式建立一個由Cesium ion提供服務的Cesium WorldTerrian

// Load Cesium World Terrain
viewer.terrainProvider = Cesium.createWorldTerrain({
    requestWaterMask : true, // required for water effects
    requestVertexNormals : true // required for terrain lighting
});

requestWaterMaskrequestVertexNormals是可選的配置項,告訴Cesium是否需要請求額外的水、光資料。這兩個選項預設是設為false的。

最終,既然我們有了地形資料,我們需要更多的線條來使得地形資料背後的objects能夠正確地顯示,只有最前面、最上面的objects才能是可見的。

// Enable depth testing so things behind the terrain disappear.
viewer.scene.globe.depthTestAgainstTerrain = true;

我們現在有地形資料和運動的水。紐約非常平坦,所以可以在上面的地形資料上自由的探索。舉一個顯而易見的例子,你可以跳轉到更加崎嶇的區域比如 Grand Canyon 或者 San Francisco。

image

關於地形資料的更多資訊,請訪問Terrain Tutorial

Cesium中文網交流QQ群:807482793

Cesium中文網:http://cesiumcn.org/ | 國內快速訪問:http://cesium.coinidea.com/