前一篇篇博客我们学习了地形开挖工具groundpush,但是在新版本的cesium中无法使用,查看新版cesium,发现提供了类似的功能:GroundClipping。
与groundpush工具不同的是直接挖走区域内影像,形成一个黑洞。
调用代码十分简单:
var terrainProvider = new Cesium.CesiumTerrainProvider({
url: './sampledata/terrain/ctb-merger/'
});
//一: WebMapTileServiceImageryProvider--天地图
var mtdt = new Cesium.WebMapTileServiceImageryProvider({
url: 'http://t0.tianditu.com/img_w/wmts?',
layer: 'img',
style: 'default',
format: 'tiles',
tileMatrixSetID: 'w',
credit: new Cesium.Credit('天地图全球影像服务'),
maximumLevel: 18
});
var viewer = new Cesium.Viewer('cesiumContainer', {
imageryProvider: mtdt,
contextOptions: {
webgl: {
alpha: true
}
},
terrainProvider: terrainProvider,
creditContainer: "creditContainer",
selectionIndicator: false,
animation: false,
baseLayerPicker: false,
geocoder: false,
timeline: false,
sceneModePicker: true,
navigationHelpButton: false,
infoBox: false,
fullscreenButton: true
});
viewer.scene.globe.depthTestAgainstTerrain = true;
//设置初始位置
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(128.055, 42.006, 1500)
});
var position = Cesium.Cartesian3.fromDegrees(128.055, 42.006, 500.0);
var entity = viewer.entities.add({
position: position,
box: {
dimensions: new Cesium.Cartesian3(1400.0, 1400.0, 2800.0),
material: Cesium.Color.WHITE.withAlpha(0.3),
outline: true,
outlineColor: Cesium.Color.WHITE
}
});
var globe = viewer.scene.globe;
globe.depthTestAgainstTerrain = true;
globe.clippingPlanes = new Cesium.ClippingPlaneCollection({
modelMatrix: entity.computeModelMatrix(Cesium.JulianDate.now()),
planes: [
new Cesium.Plane(new Cesium.Cartesian3(1.0, 0.0, 0.0), -700.0),
new Cesium.Plane(new Cesium.Cartesian3(-1.0, 0.0, 0.0), -700.0),
new Cesium.Plane(new Cesium.Cartesian3(0.0, 1.0, 0.0), -700.0),
new Cesium.Plane(new Cesium.Cartesian3(0.0, -1.0, 0.0), -700.0)
],
edgeWidth: 1.0,
edgeColor: Cesium.Color.WHITE
});
示例源码:github源码