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