cesium地形裁剪与模型裁剪的使用


首先需要建立裁剪面,裁剪面可以是面也可以是面构成的体。可以根据你要裁剪的形状,自己组合ClippingPlaneCollection。
其次将裁剪面作用到地形或者模型或者地球上,可以达到裁切模型,裁切地形,给地球挖洞,或者给地面的山体挖洞等。

let clippingPlanes = new Cesium.ClippingPlaneCollection({
     modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(position),
     planes: [
         new Cesium.ClippingPlane(new Cesium.Cartesian3(0.5, 0.0, 0.5), distance),
         new Cesium.ClippingPlane(new Cesium.Cartesian3(-0.5, 0.0, 0.5), distance),
         new Cesium.ClippingPlane(new Cesium.Cartesian3(0.0, 0.0, -1.0), distance)
     ],
     unionClippingRegions: false
 });

modelMatrix为该次裁剪选择一个中心点,设置其矩阵

planes为ClippingPlane的集合,

ClippingPlane的第一个参数为裁切面的法线方向,distance为法线方向上到原点的距离

unionClippingRegions 为true则裁剪planes区域外侧的,为false则裁剪区域内部的数据,如果是挖洞的话,则需要为false

如果想给地表挖个洞,需要先选一个点,然后在该点的前后左后四个方向上设置法线与距离,

然后把 unionClippingRegions: false 就可以把地表挖一个洞,挖洞是往外挖 原点在法线相反的方向所以 distance为负值

如果 distance为正值,unionClippingRegions: true 则地表就只剩这个洞了,外面的都被裁剪掉了。

 

第一种 地形的裁剪: 给某山体挖一个三角形洞
 let thisBLH = {B:103,L:90,H:227};
 let position = cesiumCommon.lonlat2Cartesian([thisBLH.L, thisBLH.B], thisBLH.H);
 let distance = -1000;
 let clippingPlanes = new Cesium.ClippingPlaneCollection({
     modelMatrix: Cesium.Transforms.eastNorthUpToFixedFrame(position),
     planes: [
         new Cesium.ClippingPlane(new Cesium.Cartesian3(0.5, 0.0, 0.5), distance),
         new Cesium.ClippingPlane(new Cesium.Cartesian3(-0.5, 0.0, 0.5), distance),
         new Cesium.ClippingPlane(new Cesium.Cartesian3(0.0, 0.0, -1.0), distance)
     ],
     unionClippingRegions: false
 });
 this.viewer.scene.globe.clippingPlanes = clippingPlanes;

 

第二种 模型的裁剪:

var entity = viewer.entities.add({
    position : position,
    model : {
        uri : '../../../../Apps/SampleData/models/CesiumAir/Cesium_Air.glb',
        scale : 8,
        minimumPixelSize : 100.0,
        clippingPlanes : clippingPlanes     // 设置模型的裁切平面
    }
});

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值