# GlobeIndependentTranslucency

#### new Cesium.GlobeIndependentTranslucency(viewer)
MapGIS/Scene/GlobeIndependentTranslucency.js 94

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

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

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

- `globeFaceAlpha`：地表的透明度，若设置该参数则`globeFaceAlphaByDistance`不生效；
- `globeFaceAlphaByDistance`：地表的透明度根据视点距离的变化范围，当`globeFaceAlpha`为`undefined`时生效；

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

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

Name | Type | Description
--- | --- | ---
`viewer` | Viewer | 显示三维地球场景的对象

##### Example:

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

    // 添加影像图层
    var hubei_4326 = viewer.imageryLayers.addImageryProvider(
        new Cesium.SingleTileImageryProvider({
            url: 'http://192.168.82.89: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)
        })
    );

    // 实例化地表透明对象
    var independentTranslucency = new Cesium.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;

### Members

#### backFaceAlpha : Number
MapGIS/Scene/GlobeIndependentTranslucency.js 297

地表背面的透明度

Default Value: `1.0`

##### See:

- GlobeTranslucency#backFaceAlpha

#### backFaceAlphaByDistance : NearFarScalar
MapGIS/Scene/GlobeIndependentTranslucency.js 316

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

Default Value: `undefined`

##### See:

- GlobeTranslucency#backFaceAlphaByDistance

#### enabled : Boolean
MapGIS/Scene/GlobeIndependentTranslucency.js 131

是否开启地表透明

Default Value: `false`

#### frontFaceAlpha : Number
MapGIS/Scene/GlobeIndependentTranslucency.js 253

地表正面的透明度

Default Value: `1.0`

##### See:

- GlobeTranslucency#frontFaceAlpha

#### frontFaceAlphaByDistance : NearFarScalar
MapGIS/Scene/GlobeIndependentTranslucency.js 272

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

Default Value: `undefined`

##### See:

- GlobeTranslucency#frontFaceAlphaByDistance

#### globeFaceAlpha : Number
MapGIS/Scene/GlobeIndependentTranslucency.js 198

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

Default Value: `undefined`

##### Example:

    var 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);

#### globeFaceAlphaByDistance : NearFarScalar
MapGIS/Scene/GlobeIndependentTranslucency.js 228

地表的透明度根据视点距离的变化范围，在`globeFaceAlpha`为`undefined`时生效

Default Value: `new Cesium.NearFarScalar(3.0e5, 0.0, 3.0e6, 1.0)`

##### Example:

    var independentTranslucency = new Cesium.GlobeIndependentTranslucency(viewer);

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

#### imageryLayers : Array.<ImageryLayer>
MapGIS/Scene/GlobeIndependentTranslucency.js 161

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

Default Value: `[]`

##### Example:

    var independentTranslucency = new Cesium.GlobeIndependentTranslucency(viewer);

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

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

#### rectangle : Rectangle
MapGIS/Scene/GlobeIndependentTranslucency.js 341

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

Default Value: ``Rectangle.MAX_VALUE``