类名 GlobeIndependentTranslucency

# new GlobeIndependentTranslucency(viewer)

单独控制地表透明度和影像图层的透明度,能够在开启地表透明后使部分影像图层不受地表透明的影响。

实例化该类的对象同时也能够使用原生的地表透明参数,能够直接在实例化对象上修改 GlobeTranslucency 的参数(原生的 viewer.scene.globe.translucency依然能够使用,但两者同时使用时会造成相互干扰,推荐仅使用GlobeIndependentTranslucency来实现地表透明), 使用原生的地表透明方式还是该类的地表透明方式由 GlobeIndependentTranslucency#imageryLayers 数组是否为空来区分。

1. 当 GlobeIndependentTranslucency#imageryLayers 不为空数组时,使用该类的地表透明方式,此时能够设置并生效的地表透明参数如下:

  • globeFaceAlpha:地表的透明度,若设置该参数则globeFaceAlphaByDistance不生效;
  • globeFaceAlphaByDistance:地表的透明度根据视点距离的变化范围,当globeFaceAlphaundefined时生效;

2. 当 GlobeIndependentTranslucency#imageryLayers 为空数组时,使用原生的地表透明方式,此时能够设置并生效的地表透明参数如下:

  • frontFaceAlpha:地表正面的透明度;
  • frontFaceAlphaByDistance :地表正面的透明度根据视点距离的变化范围;
  • backFaceAlpha:地表背面的透明度;
  • backFaceAlphaByDistance:地表背面的透明度根据视点距离的变化范围;
  • rectangle:将地表透明的区域限制在一个矩形范围内。

参数:

名称 类型 描述
viewer Viewer

显示三维地球场景的对象

示例

地表透明独立控制

// 参考示例:
http://webclient.smaryun.com/#/modules/cesium/sceneControl/scene/globe-independent-translucency

// ES5引入方式
const { GlobeIndependentTranslucency } = zondy.cesium
// ES6引入方式
import { GlobeIndependentTranslucency } from "@mapgis/webclient-cesium-plugin"

// 初始化视图对象,若不指定影像图层则会默认使用SingleTileImageryProvider加载一张地表影像图
let viewer = new Cesium.Viewer("cesiumContainer");

// 添加影像图层
let hubei_4326 = viewer.imageryLayers.addImageryProvider(
    new Cesium.SingleTileImageryProvider({
        url: 'http://webclient.smaryun.com:8089/igs/rest/services/Tile/湖北省_4326_custom_1-8/TileServer/tileImage/2/0/0?f=image',
        rectangle: Cesium.Rectangle.fromDegrees(108.34522, 25.48750, 116.13094, 33.27322)
    })
);

// 实例化地表透明对象
let independentTranslucency = new GlobeIndependentTranslucency(viewer);
// 以数组的形式添加需要单独控制透明度的影像图层
independentTranslucency.imageryLayers = [hubei_4326];
// 开启地表透明
independentTranslucency.enabled = true;

// 注意:以下内容非必需,在此仅用于在示例中展示开启地表透明后的影像图层地上地下效果
// 开启地形深度测试
viewer.scene.globe.depthTestAgainstTerrain = true;
// 隐藏地表大气层
viewer.scene.globe.showGroundAtmosphere = false;
// 隐藏天空盒
viewer.scene.skyBox.show = false;
// 隐藏天空大气层
viewer.scene.skyAtmosphere.show = false;
// 隐藏太阳
viewer.scene.sun.show = false;
// 隐藏月亮
viewer.scene.moon.show = false;

// 加载地下实体
viewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(114.0, 30.5, -40000),
    box: {
        dimensions: new Cesium.Cartesian3(4.0e5, 4.0e5, 3.0e4),
        material: Cesium.Color.RED,
        outline: true,
        outlineColor: Cesium.Color.BLACK
    }
});

// 加载地上实体
viewer.entities.add({
    position: Cesium.Cartesian3.fromDegrees(114.0, 30.5, 40000),,
    box: {
        dimensions: new Cesium.Cartesian3(2.0e5, 2.0e5, 3.0e4),
        material: Cesium.Color.GREEN.withAlpha(0.5),
        outline: true,
        outlineColor: Cesium.Color.BLACK
    }
});

// 关闭地表透明
independentTranslucency.enabled = false;

成员变量

Number

# backFaceAlpha

地表背面的透明度

Default Value:
  • 1.0
See:
  • GlobeTranslucency#backFaceAlpha
Cesium.NearFarScalar

# backFaceAlphaByDistance

地表背面的透明度根据视点距离的变化范围

Default Value:
  • undefined
See:
  • GlobeTranslucency#backFaceAlphaByDistance
Boolean

# enabled

是否开启地表透明

Default Value:
  • false
Number

# frontFaceAlpha

地表正面的透明度

Default Value:
  • 1.0
See:
  • GlobeTranslucency#frontFaceAlpha
Cesium.NearFarScalar

# frontFaceAlphaByDistance

地表正面的透明度根据视点距离的变化范围

Default Value:
  • undefined
See:
  • GlobeTranslucency#frontFaceAlphaByDistance
Number

# globeFaceAlpha

地表的透明度,若设置该参数则globeFaceAlphaByDistance不生效

Default Value:
  • undefined
示例
let independentTranslucency = new Cesium.GlobeIndependentTranslucency(viewer);

// 设置不受地表透明影响的影像图层
independentTranslucency.imageryLayers = [layer1, layer2];

// 设置地表透明度为0.5,layer1和layer2不受影响
independentTranslucency.globeFaceAlpha = 0.5;

// 当globeFaceAlpha不为undefined时,globeFaceAlphaByDistance将不再生效
independentTranslucency.globeFaceAlphaByDistance = new Cesium.NearFarScalar(3.0e5, 0.0, 5.0e6, 1.0);
Cesium.NearFarScalar

# globeFaceAlphaByDistance

地表的透明度根据视点距离的变化范围,在globeFaceAlphaundefined时生效

Default Value:
  • new Cesium.NearFarScalar(3.0e5, 0.0, 3.0e6, 1.0)
示例
let independentTranslucency = new Cesium.GlobeIndependentTranslucency(viewer);

// 使用globeFaceAlphaByDistance时要确保globeFaceAlpha的值为undefined
independentTranslucency.globeFaceAlpha = undefined;
independentTranslucency.globeFaceAlphaByDistance = new Cesium.NearFarScalar(3.0e5, 0.0, 5.0e6, 1.0);
Array.<Cesium.ImageryLayer>

# imageryLayers

需要单独控制透明度的影像图层,可以通过数组的形式传入一个或多个影像图层对象

Default Value:
  • []
示例
let independentTranslucency = new Cesium.GlobeIndependentTranslucency(viewer);

// 当imageryLayers数组不为空时,使用的是单独控制地表透明的方式,layer1和layer2将不受地表透明的影响
independentTranslucency.imageryLayers = [layer1, layer2];

// 当imageryLayers数组为空时,使用的是原生的控制地表透明的方式,所有的影像图层都会参与地表透明混合计算
independentTranslucency.imageryLayers = [];
Cesium.Rectangle

# rectangle

限制地表透明在一个矩形范围内

Default Value:
  • Cesium.Rectangle.MAX_VALUE
构造函数
成员变量
方法
事件