ClippingPlaneCollection

new Cesium.ClippingPlaneCollection ( options )

指定一组剪裁平面。对于单个 gltf 模型、3D Tileset 或地球,剪切平面选择性地禁用在指定 ClippingPlane 对象列表之外的区域中的渲染。

一般来说,剪切平面的坐标是相对于它们所附着的对象的,因此距离设置为 0 的平面将剪切通过对象的中心。

对于 3D 切片,根切片的变换用于定位剪切平面。如果未定义转换,则使用根 tile 的 Cesium3DTile#boundingSphere 代替。

Name Type Description
options Object 具有以下属性的 可选 对象:
姓名 类型 默认 描述
planes Array.< ClippingPlane > [] 可选 一组 ClippingPlane 对象,用于选择性地禁用每个平面外部的渲染。
enabled 布尔值 true 可选 确定剪裁平面是否处于活动状态。
modelMatrix 矩阵4 Matrix4.IDENTITY 可选 4x4 变换矩阵,指定相对于剪切平面原始坐标系的附加变换。
unionClippingRegions 布尔值 false 可选 如果为 true,则如果区域位于集合中任何平面的外部,则将对其进行裁剪。否则,只有在每个平面之外的区域才会被剪裁。
edgeColor 颜色 Color.WHITE 可选 用于突出显示对象被剪裁的边缘的颜色。
edgeWidth 数字 0.0 可选 应用于裁剪对象边缘的高光的宽度(以像素为单位)。
Example:
// This clipping plane's distance is positive, which means its normal
// is facing the origin. This will clip everything that is behind
// the plane, which is anything with y coordinate < -5.
const clippingPlanes = new Cesium.ClippingPlaneCollection({
    planes : [
        new Cesium.ClippingPlane(new Cesium.Cartesian3(0.0, 1.0, 0.0), 5.0)
    ],
});
// Create an entity and attach the ClippingPlaneCollection to the model.
const entity = viewer.entities.add({
    position : Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706, 10000),
    model : {
        uri : 'model.gltf',
        minimumPixelSize : 128,
        maximumScale : 20000,
        clippingPlanes : clippingPlanes
    }
});
viewer.zoomTo(entity);
Demo:

Members

用于突出显示对象被剪裁的边缘的颜色。
Default Value: Color.WHITE
应用于裁剪对象的边缘的高光的宽度(以像素为单位)。
Default Value: 0.0
如果为 true,将启用剪辑。
Default Value: true
返回此集合中的平面数。这通常与 ClippingPlaneCollection#get 一起使用以遍历集合中的所有平面。
4x4 变换矩阵,指定相对于剪切平面原始坐标系的附加变换。
Default Value: Matrix4.IDENTITY
将新剪裁平面添加到集合时触发的事件。事件处理程序被传递新平面和添加它的索引。
Default Value: Event()
从集合中删除新的剪裁平面时触发的事件。事件处理程序将传递新平面和从中删除它的索引。
Default Value: Event()

unionClippingRegions : Boolean

如果为 true,则如果某个区域位于集合中任何平面的外部,则该区域将被剪裁。否则,只有在每个平面之外的区域才会被剪裁。
Default Value: false

Methods

将指定的 ClippingPlane 添加到集合中,用于选择性地禁用每个平面外部的渲染。使用 ClippingPlaneCollection#unionClippingRegions 修改如何修改多个平面的剪裁行为。
Name Type Description
plane ClippingPlane 要添加到集合中的 ClippingPlane。
See:

contains ( clippingPlane ) Boolean

检查此集合是否包含等于给定 ClippingPlane 的 ClippingPlane。
Name Type Description
clippingPlane ClippingPlane 可选 要检查的 ClippingPlane。
Returns:
如果此集合包含 ClippingPlane,则为 true,否则为 false。
See:
销毁此对象持有的 WebGL 资源。销毁一个对象允许确定性地释放 WebGL 资源,而不是依赖垃圾收集器来销毁这个对象。

一旦一个对象被销毁,它就不应该被使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。因此,如示例中所做的那样,将返回值 ( undefined ) 分配给对象。
Throws:
Example:
clippingPlanes = clippingPlanes && clippingPlanes.destroy();
See:
返回集合中指定索引处的平面。索引从零开始,并随着平面的添加而增加。移除一个平面会将其后的所有平面向左移动,从而改变它们的索引。此函数通常与 ClippingPlaneCollection#length 一起使用以遍历集合中的所有平面。
Name Type Description
index Number 平面的从零开始的索引。
Returns:
指定索引处的 ClippingPlane。
See:

isDestroyed () Boolean

如果此对象被销毁,则返回 true;否则为假。

如果这个对象被破坏了,它就不应该被使用;调用 isDestroyed 以外的任何函数都将导致 DeveloperError 异常。
Returns:
如果此对象被销毁,则为 true ;否则, false
See:

remove (clippingPlane) Boolean

从集合中删除给定 ClippingPlane 的第一个匹配项。
Name Type Description
clippingPlane ClippingPlane
Returns:
如果飞机被移除,则为 true ;如果在集合中没有找到飞机,则 false
See:
从集合中移除所有平面。
See:
Viewer CesiumWidget 渲染场景以构建裁剪平面的资源时调用。

不要直接调用这个函数。