首页 / 浏览问题 / 三维GIS / 问题详情
Cesium.Cesium3DTileStyle 不支持透明度吗?
1EXP 2021年05月25日

使用产品:SuperMap_iClient3D_10i_SP1_for_WebGL_CN

3dtiles数据的版本是1.0

根据官网:

tileset.style = new Cesium.Cesium3DTileStyle({
   color : {
       conditions : [
           ['${Height} >= 100', 'color("purple", 0.5)'],
           ['${Height} >= 50', 'color("red")'],
           ['true', 'color("blue")']
       ]
   },
   show : '${Height} > 0',
   meta : {
       description : '"Building id ${id} has height ${Height}."'
   }
});

官网给出的这个例子,是支持带透明度的颜色的。

然后实际运行时,若我设置的style带有透明度,那部分数据就不能显示渲染出来。

如下图:这样是可以正常渲染

 layer.style = new Cesium.Cesium3DTileStyle({
        color: {
          conditions: [
            [
              "${用地代} === 'A1'",
              'rgb(255, 0, 63)',
              'A1'
            ],
            [
              'true',
              'color("blue")',
              '其它'
            ]
          ]
        }
      })

渲染结果:

加上透明度后

 layer.style = new Cesium.Cesium3DTileStyle({
        color: {
          conditions: [
            [
              "${用地代} === 'A1'",
              'rgb(255, 0, 63)',
              'A1'
            ],
            [
              'true',
              'color("blue", 0.5)',
              '其它'
            ]
          ]
        }
      })

运行后,发现只有"${用地代} === 'A1'"这部分数据渲染出来了。

2 个回答

您好,您那边的数据是3dtiles吗,官网示例上面的数据是s3m的我这边测试是可以这样设置的,如果是3dtiles的话建议去看下原生Cesium是否能支持,或者您也可以把3dtiles转换为s3m/s3mb,我们提供有工具

6,087EXP 2021年05月25日

您好,Cesium3DTileset这个接口是Cesium原生接口,对于3DTiles这种格式超图不是特别清楚。这个官网您说的是iClient3D for WebGL官网吗,我没有找这个例子。根据一般经验,您排查下是不是他们接口有缺陷,或者是这个用法对数据有要求。

如果您想转换成超图格式,我们有工具可以转为S3M/S3MB;或者您直接用模型数据集生成缓存,生成缓存的时候设置特征值,参照这个例子,查询数据服务、改变对应建筑颜色:
http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#S3MTiles_BIM

jjz
4,720EXP 2021年05月25日
...