Cesium实现背景透明的方法

Stella981
• 阅读 895

前言

今天有人在Cesium实验室QQ群里问如何把地球背景做成透明的,当时我以为Cesium比较复杂的渲染机制可能即使context设置了alpha属性也未必能透明,所以和同学说可能得改Cesium代码,可以使用ViewportQuad来实现。

后来自己实验一下,发现实际上context设置为alpha还是起作用的。。。惭愧误导了某位同学。。

最终效果

最终效果如下所示,其中背景图片时通过设置css样式background-image来实现的。

输入图片说明

源码

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

注意点:

1 OIT的问题
其中orderIndependentTranslucency需要设置为true,才能去掉地球表面的大气效果的黑圈问题,这个主要是因为Cesium的OIT机制会把FrameBuffer中的的透明度都改成1所致。如果不想禁用OIT的话,可以试试调整一下skyAtmosphere的几个属性值来试试。。

2 backgroundColor
backgroundColor需要设置成(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> 

欢迎关注 Cesium实验室 ,QQ群号:595512567

image.png

点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
AVAYA作为旗帜,商业闭源产品要倒了,该如何办呢?用FreeSwitch吧
点击链接加入群【FreeSWITCHKamailioOpensips】:https://jq.qq.com/?\_wv1027&k41s4DBz(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3D41s4DBz)
Wesley13 Wesley13
2年前
I
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT
Wesley13 Wesley13
2年前
从带Per
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT
Easter79 Easter79
2年前
Sun JVM,JRocket,J9,Harmony, 四种主要的Java虚拟机实现
说在前面点击链接加入群【JavaEE(SSHIntelliJIDEMaven)】:http://jq.qq.com/?\_wv1027&kQr6905(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DQr6905)
Stella981 Stella981
2年前
CesiumJS新增官方TypeScript类型定义
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT
Stella981 Stella981
2年前
Cesium1.70
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT
Stella981 Stella981
2年前
Cesium官方英文论坛
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT
Stella981 Stella981
2年前
D3D中的Alpha颜色混合(3)
本篇是D3D中的Alpha颜色混合(2)(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.cppblog.com%2Flovedday%2Farchive%2F2007%2F05%2F15%2F24121.html)的后续篇。另一种实现实现背景透明显示的简便方法是直接应
Stella981 Stella981
2年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Stella981 Stella981
2年前
Cesium 赢得2020年PACT技术创业企业奖
Cesium中文网:http://cesiumcn.org/(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fcesiumcn.org%2F)|国内快速访问:http://cesium.coinidea.com/(https://www.oschina.net/action/GoT