cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection

原理就是3dtiles里面的属性clippingPlanes

采用ClippingPlaneCollection,构成多边形来挖洞。

其次就是xyz法向量挖洞

clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({
  unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的切割区域
  planes: [
    new this.ffCesium.Cesium.ClippingPlane(
      new this.ffCesium.Cesium.Cartesian3(0.0, 0.0, -1.0), // 法向量
      23.0 // 切割平面到原点的距离(高度)
    )
  ]
})

以下是多边形裁剪

import * as Cesium from 'cesium'
class tileSetClipByPolygon {
  constructor(options) {
    this.tileSet = options.tileSet || null  //3dtiles 
    this.originPositions = options.originPositions || []  //点
    this.unionClippingRegions = !options.unionClippingRegions ? options.unionClippingRegions : true
    this.enabled = !options.enabled ? options.enabled : true
    this.edgeColor = options.edgeColor || Cesium.Color.WHITE
    this.edgeWidth = options.edgeWidth || 0.0
  }
  isClockwise(polygon) {
    var area = 0
    var length = polygon.length
    for (var i = 0; i < length; i++) {
      var j = (i + 1) % length
      area += polygon[i][0] * polygon[j][1] - polygon[j][0] * polygon[i][1]
    }
    return area < 0
  }
  getInverseTransform() {
    let transform
    let tmp = this.tileSet.root.transform
    if ((tmp && tmp.equals(Cesium.Matrix4.IDENTITY)) || !tmp) {
      // 如果root.transform不存在,则3DTiles的原点变成了boundingSphere.center
      transform = Cesium.Transforms.eastNorthUpToFixedFrame(this.tileSet.boundingSphere.center)
    } else {
      transform = Cesium.Matrix4.fromArray
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值