Cesium介绍
1、背景
在許多虛擬地理空間應用的實現中,Cesium是一個很有用的WebGL圖形庫。學習如何解釋CSS文件保證它準確呈現3D場景是一個重要的知識,因此本文提供了Cesium源代碼的指導和說明。
2、Cesium文件和組件
Cesium是一個開源的跨平臺的3D地圖庫,允許您以不同的方式顯示可視化內容。它有一些文件和組件,用來幫助構建和顯示數據和地理信息。
????????Cesium支持各種文件格式,常見格式有KML、COLLADA、TMS和GeoJSON,它也支持跨平臺服務如ArcGIS MapServer、OGC WMS、Geoserver等。
????????Cesium有一系列可擴展的組件,如 3D 地形和圖像圖,3D 城市模型,時間控制,導航功能,3D 覆蓋物,三維海洋環境等。它也支持用戶附加任何 Javascript 代碼作為組件,以組合多個組件形成一個完整的 Cesium 應用。
3、初始化Cesium中的WebGL
讓我們看看如何在Cesium中初始化 WebGL:
為了使用Cesium,首先需要引入Cesium.js文件:
<script src="Cesium.js"></script>然后,必須提供一個網頁上用于渲染3D內容的 HTML 標簽:
<div id="cesiumContainer"></div>最后,可以在?cesiumContainer?中創建 Cesium 實例來創建 WebGL:
var viewer = new Cesium.Viewer('cesiumContainer');這就完成了 WebGL 的初始化。?
4、流水線渲染
Cesium中的流水線渲染是一種在 3D 場景中構建具有逼真效果的低延遲圖形數據處理系統。它使用從輸入到輸出的各種處理環節 (stages),從而可以根據硬件條件提供最佳的可用性和呈現。
Cesium 的流水線渲染使用了大量的頂點和片元處理 (vertex and fragment shaders)、幾何形狀和裁剪的語義,模板測試 (stencil test)、不同的材料屬性 (material attributes)、光學和動畫效果 (optical and animation effects) 等處理步驟。
它使用一些常用的途徑來極大地提高性能,如著色緩沖 (color-buffer)、深度緩沖 (depth-buffer)、模板緩沖 (stencil-buffer)、紋理緩沖 (texture-buffer) 和顯卡緩沖 (GPU-buffer)。
此外,Cesium 還包括一個實時著色器,可以快速地渲染出包含復雜可見物體的實時場景
5、資源優化?
清理3D模型:減少不必要的復雜度,比如降低貼圖采樣次數,刪除冗余面片等。
調低Cesium插件幀率:將動畫、天氣場景改為快速模式或者關閉它們,避免多余的CPU消耗。
多靈活使用dem:dem在計算tiles對低高度區域產生generateTerrainHighness這種影響之前,可以先將更加高的dem解析并且存入geojson中。
縮小載入范圍:可以在載入cesium地圖時,采用LOD(Level of Detail)方法只載入當前顯示級別的tile。
6、最佳實踐?
優先使用向量地圖進行操作,而不是使用柵格數據:如果操作包括繪制、編輯和查詢,那么向量地圖就會比柵格地圖更好。向量地圖更便于編輯和繪制,并且可以送至表達式,以處理查詢操作。
避免使用 geographic 和 Cartesian 這兩個坐標系:使用 WGS84 的坐標系進行繪制,然后將其轉換為模型的局部坐標系,這將幫助減少數據映射和操作時精度損失。
優先使用靜態原生數據格式:GLTF 格式尤其有益于構建高性能地圖,因為它不需要額外的編碼/解碼步驟。
使用 AO-優化的材質:將 ambiet Occlusion 高級功能啟用在 Obj 或 FBX 對象上將提升地圖對象的細節水平。
使用 CVT-Triangulations :CVT分割技術可以在保留細節的情況下細分圖塊,從而提升地圖的性能。
使用 Shader 著色器:HLSL Shader 著色器可以實現一系列的功能,并大大提升 Cesium 集成功能的性能。
總結