代码之家  ›  专栏  ›  技术社区  ›  visibleman

如何将实体或几何图形剪裁到地形的底面

  •  3
  • visibleman  · 技术社区  · 6 年前

    Shallow View

    我想隐藏这一点的一种方法是将“土壤”渲染为地形下的一个长方体或墙,但我需要长方体或墙的顶部来确认地形几何(红线)。 我想我可以通过使用 WallGeometry 在剔除的地形周围而不是一个长方体,并根据 sampleTerrain 打电话来。

    Cut out box

    Cesium Sandcastle link

    var viewer = new Cesium.Viewer('cesiumContainer', {
            skyAtmosphere: false,
            shouldAnimate : true,
            terrainProvider: Cesium.createWorldTerrain()
        });
    var globe = viewer.scene.globe;
    
    var position = Cesium.Cartographic.toCartesian(new Cesium.Cartographic.fromDegrees(-113.2665534, 36.0939345, 100));
    var distance = 3000.0;
    
    globe.clippingPlanes = new Cesium.ClippingPlaneCollection({
        modelMatrix : Cesium.Transforms.eastNorthUpToFixedFrame(position),
        planes : [
            new Cesium.ClippingPlane(new Cesium.Cartesian3( 1.0,  0.0, 0.0), distance),
            new Cesium.ClippingPlane(new Cesium.Cartesian3(-1.0,  0.0, 0.0), distance),
            new Cesium.ClippingPlane(new Cesium.Cartesian3( 0.0,  1.0, 0.0), distance),
            new Cesium.ClippingPlane(new Cesium.Cartesian3( 0.0, -1.0, 0.0), distance)
        ],
        unionClippingRegions : true,
                edgeWidth:3,
        edgeColor: Cesium.Color.RED,
        enabled : true
    });
    var rockBox = viewer.entities.add({
        name : 'RockBox',
        position: Cesium.Cartesian3.fromDegrees(-113.2665534, 36.0939345, 900),
        box : {
            dimensions : new Cesium.Cartesian3(distance*2, distance*2,800.0),
            material : Cesium.Color.GRAY.withAlpha(0.4),
            outline : true,
            outlineColor : Cesium.Color.GRAY
        }
    });
    var waterTable = viewer.entities.add({
        name : 'WaterTable',
        position: Cesium.Cartesian3.fromDegrees(-113.2665534, 36.0939345, 440),
        box : {
            dimensions : new Cesium.Cartesian3(distance*2, distance*2, 160.0),
            material : Cesium.Color.BLUE.withAlpha(0.9),
            outline : true,
            outlineColor : Cesium.Color.BLUE
        }
    });
    
    viewer.zoomTo(viewer.entities);
    
    0 回复  |  直到 6 年前