首页 / 浏览问题 / 三维GIS / 问题详情
地表透明模式(地下数据可视化)
256EXP 2023年01月16日

超图技术人员,你们好,我这边现在有一个需求,wegbl三维场景中有地下设施(管网bim),想设置地表透明模式,即不开挖也能看见地下的管网。

但是超图的效果不太好,不如原生cesium的。

超图效果

      viewer.scene.undergroundMode = true;

      viewer.scene.globe.globeAlpha = 0.5;

原生Cesium效果

viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;

viewer.scene.globe.translucency.frontFaceAlpha = 0.5;

1个回答

您好,您在两边使用的影像、地形、模型数据和测试查看视口的位置是否相同。

您等位同数据的情况我们这边才能定位准确差异,希望可以理解。
于丁
1
9,343EXP 2023年01月16日

兄弟,你在你们管网示例试一下哦,你看这效果得行不?

      viewer.scene.undergroundMode = true;

      viewer.scene.globe.globeAlpha = 0.5;

超图示例

http://support.supermap.com.cn:8090/webgl/examples/webgl/editor.html#digTerrain

我这边看了,您具体说的是什么效果不行呢?

如果您说的是透明度的话,我这边测试和Cesium的透明度效果是一样的。

接口的话,看您问题中,

原生Cesium代码:

viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;

viewer.scene.globe.translucency.frontFaceAlpha = 0.5;

iClient代码:

      viewer.scene.undergroundMode = true;

      viewer.scene.globe.globeAlpha = 0.5;

首先viewer.scene.screenSpaceCameraController.enableCollisionDetection = false;,在Cesium中的效果是关闭碰撞检测,

而viewer.scene.undergroundMode = true;,在iClient中的效果是开启地下模式,基色透明。

这两个接口的效果功能完全不一样,你如果使用同一份数据在两边同时来测试,需要代码一致哦。

(iClient中也有接口关闭碰撞检测,Cesium也有接口开启地下模式)

因此对于您问题描述的情况,首先是接口使用没有对标。

对于直接显示效果问题,我这边使用同一套地形和影像数据,在Cesium和iClient上测试同时使用关闭碰撞检测、开启地下、50%透明,显示效果是一样的。
当然,我看您的截图和刚刚提供的示例,您是不是对这份示例中开启地下半透明后,为什么会有块分布的垂直“分界”边感到疑惑?

如果是的话,这个是因为iClient中这份示例数据地形的问题,三维地形缓存是由栅格DEM生成的,DEM本身因为生产问题,

大多数据普遍会有一种“地形裙边”的现象,这种现象在切地形缓存前就会存在,切地形缓存后依然会存在。

对于有裙边的地形缓存,同一份在iClient或原生Cesium中加载,都会有您第一个截图中那种极其明显的裙边现象,这种是数据问题。

在iClient使用这种数据时,可以开启地形裙边补偿不显示,viewer.scene.terrainProvider.isCreateSkirt = false;

(在原生Cesium中使用这种数据时,同样要开启地形裙边补偿不显示,否则透明后一样会有这种分块垂直格网)

因此如果您说的是这个现象的话,那是数据差异问题而不是显示效果差异问题,因此我建议您使用同一份数据试一下哦,您看下效果是不是一样,也可以在iClient示例中:

        viewer.scene.undergroundMode = true;
        viewer.scene.terrainProvider.isCreateSkirt = false;
        viewer.scene.globe.globeAlpha = 0.5;

看一下是不是您需要的效果。
谢谢,我指的是地形裙边的问题。

    viewer.scene.terrainProvider.isCreateSkirt = false; 这个设置对你们webgl产品最低版本要求是多少啊?
现在主流使用的10i和11i都是可以的
...