Cesium挖地形


注意:绘制的多边形时必须是逆时针方向,而且不能有重复点

注意:绘制的凸多边形时必须是逆时针方向,而且不能有重复点(是凸多边形!!!!!!!)

效果:在这里插入图片描述

代码

        var points = [ 
          new Cesium.Cartesian3(-1715292.6999753984, 4993153.157628936, 3566663.752912529), 
          new Cesium.Cartesian3(-1715285.8150713604, 4993167.072601330,3566647.6921528564), 
          new Cesium.Cartesian3(-1715286.5985765400, 4993181.309761941, 3566627.519787549), 
          new Cesium.Cartesian3(-1715299.0249209427, 4993191.177501195, 3566607.861264360), 
          new Cesium.Cartesian3(-1715349.5762367432, 4993176.675656664, 3566603.878289345), 
          new Cesium.Cartesian3(-1715375.5538853381, 4993159.990032478, 3566614.671147202), 
          new Cesium.Cartesian3(-1715370.1945772346, 4993141.041835706, 3566643.580587877), 
          new Cesium.Cartesian3(-1715359.7019716015, 4993131.063945592, 3566662.468046927), 
          new Cesium.Cartesian3(-1715321.9141253997, 4993137.762602262, 3566671.205164391) 
        ];
        var pointsLength = points.length;
        var clippingPlanes = []; // 存储ClippingPlane集合
        for (var i = 0; i < pointsLength; ++i) {
        var nextIndex = (i + 1) % pointsLength;
        var midpoint = Cesium.Cartesian3.add(points[i], points[nextIndex], new Cesium.Cartesian3());
        midpoint = Cesium.Cartesian3.multiplyByScalar(midpoint, 0.5, midpoint);
        
        var up = Cesium.Cartesian3.normalize(midpoint, new Cesium.Cartesian3());
        var right = Cesium.Cartesian3.subtract(points[nextIndex], midpoint, new Cesium.Cartesian3());
        right = Cesium.Cartesian3.normalize(right, right);
        
        var normal = Cesium.Cartesian3.cross(right, up, new Cesium.Cartesian3());
        normal = Cesium.Cartesian3.normalize(normal, normal);
        
        var originCenteredPlane = new Cesium.Plane(normal, 0.0);
        var distance = Cesium.Plane.getPointDistance(originCenteredPlane, midpoint);
          clippingPlanes.push(new Cesium.ClippingPlane(normal, distance));
        }
        viewer.scene.globe.clippingPlanes = new Cesium.ClippingPlaneCollection({
          planes:clippingPlanes,
          edgeWidth: 1.0,
          edgeColor: Cesium.Color.WHITE.withAlpha(0.7),
        });
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Cesium 地形空是指在 Cesium.js 的三维模式下,通过一系列操作实现对地形进行空的效果。通过空,可以在地形中创建洞穴或者其他空间结构。引用中的博文介绍了如何在 Cesium 中实现洞的效果,引用中的博文则提到了在前面的博文中介绍了如何进行地形的坡面切割,这与地形空有些类似。引用中的 Demo 也提到了用户想要实现拖动洞穴实时查看的效果。 在实现 Cesium 地形空的过程中,可以通过以下步骤来进行操作: 1. 首先,需要加载地形数据和模型数据,可以使用 Cesium 提供的 API 来加载地形和模型。 2. 接下来,需要确定空的区域和形状,可以通过指定坐标或者绘制多边形来定义空区域。 3. 然后,可以使用 Cesium 提供的几何操作功能来对地形进行剖面分割或切割,以实现空效果。 4. 如果需要实现实时查看的效果,可以添加交互性的控件来拖动、调整空区域,同时更新地形显示。 5. 最后,可以根据需求进行参数调整和美化,以达到更好的视觉效果。 需要注意的是,Cesium 地形空的具体实现方式可能因应用场景和需求的不同而有所区别,可以根据具体情况进行调整和扩展。同时,掌握 Cesium.js 的相关知识和技术也是实现地形空的前提。 总结来说,Cesium 地形空是通过在 Cesium.js 的三维模式下实现一系列操作来对地形进行空的效果。具体实现方式可以参考相关的博文和示例代码,并根据需求进行调整和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [cesium 实现地形洞的拖动效果](https://blog.csdn.net/GISuuser/article/details/126405711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Cesium.js 地形洞](https://blog.csdn.net/GISuuser/article/details/126147462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值