Cesium實現(xiàn)背景透明的方法

Cesium實現(xiàn)背景透明的方法

前言

今天有人在Cesium實驗室QQ群里問如何把地球背景做成透明的,當時我以為Cesium比較復(fù)雜的渲染機制可能即使context設(shè)置了alpha屬性也未必能透明,所以和同學說可能得改Cesium代碼,可以使用ViewportQuad來實現(xiàn)。

后來自己實驗一下,發(fā)現(xiàn)實際上context設(shè)置為alpha還是起作用的。。。慚愧誤導了某位同學。。

最終效果

最終效果如下所示,其中背景圖片時通過設(shè)置css樣式background-image來實現(xiàn)的。

輸入圖片說明

源碼

把以下代碼拷貝到Cesium的Sandcastle中就能看到效果。

注意點:

1 OIT的問題
其中orderIndependentTranslucency需要設(shè)置為true,才能去掉地球表面的大氣效果的黑圈問題,這個主要是因為Cesium的OIT機制會把FrameBuffer中的的透明度都改成1所致。如果不想禁用OIT的話,可以試試調(diào)整一下skyAtmosphere的幾個屬性值來試試。。

2 backgroundColor
backgroundColor需要設(shè)置成(0, 0, 0, 0)樣式,其他顏色會影響最終效果。

js代碼

var viewer = new Cesium.Viewer('cesiumContainer', {
    orderIndependentTranslucency: false,
    contextOptions: {
        webgl: {
            alpha: true,
        }
    },
});

viewer.scene.skyBox.show = false;
viewer.scene.backgroundColor = new Cesium.Color(0.0, 0.0, 0.0, 0.0);

//viewer.scene.skyAtmosphere.show = false;
//viewer.scene.skyAtmosphere.brightnessShift = -0.0;

html代碼

<div id="cesiumContainer" class="fullSize" style="background-image: url(https://www.bjxbsj.cn/images/dem.jpg);"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容