C1——调整3Dtiles的透明度

需求:加载3Dtiles下面有管线,管线被遮到了所以要3Dtiles半透明。

思路:1.调整地表透明度:imageryLayers的layer的透明度;

2.给3Dtiles的color设置值(为什么判断0:因为透明度为0的时候相当于不透明。而且透明度为0的时候隐藏模型这样下面的管线才能相应点击事件)

// 地表透明度改变
changeLayersAlpha(param) {
    let layers = this.viewer.imageryLayers._layers;
    for (let i = 0, len = layers.length; i < len; i++) {
        layers[i].alpha = param;
    }
}
// 场景透明度改变 param是透明度参数范围[0,1]
// 场景透明度改变
changeTilesetsAlpha(param) {
    this.tilesets.forEach(function(tileset) {
        if( param ==0 ) {
            tileset.style = new Cesium.Cesium3DTileStyle({
                show: false,
            });
        }else{
            tileset.style = new Cesium.Cesium3DTileStyle({
                // //写法一
                // color: "color('rgba(255,255,255,"+param+")')",
                //写法2
                color: {
                    evaluateColor: function (feature, result) {
                        let color = new Cesium.Color(1, 1, 1, param);
                        return color;                            
                    }
                },
                show: true,
            });
        }
    })
}

我有多个3Dtiles所以数组加了循环,对于单个3Dtiles:

let tiles= viewer.scene.primitives.add( new Cesium.Cesium3DTileset({
    url: "./tileset.json",
    skipLevelOfDetail: true, //开启跳级加载
    maximumMemoryUsage: 1024, //最大内存占用  推荐显存的一般
    preferLeaves: true,
    maximumScreenSpaceError: 16,
    maximumNumberOfLoadedTiles: 2000
}));

tiles.style = new Cesium.Cesium3DTileStyle({
    color: "color('rgba(255,255,255,"+param+")')",
})

在此特别感谢我瓜哥的指点。瓜哥是谁就不说了,约他吃饭都没时间可能是我太菜了

思路三:场景半透明 

//球体半透明
globe.translucency.enabled = true;
globe.translucency.frontFaceAlphaByDistance.nearValue = 0.6;
globe.translucency.frontFaceAlphaByDistance.farValue = 0.5

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值