麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

Cesium API - ClippingPlaneCollection 中文文档

本文介绍下Cesium中 ClippingPlaneCollection API的详细使用说明。

ClippingPlaneCollection API 调用方法

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

一般来说,剪切平面的坐标是相对于它们所附着的物体的,所以距离设为0的平面将穿过物体的中心剪切。

对于3D Tiles,根节点瓦片的transform用于定位剪切平面。如果没有定义transform,则使用根节点的Cesium3DTile#boundingSphere代替。

Name Type Description
options Object optional 具有下列属性的对象:
Name Type Default Description
planes Array.<ClippingPlane> [] optional 一个ClippingPlane对象数组,用于有选择地禁用每个平面外部的渲染。
enabled Boolean true optional 确定剪切平面是否处于活动状态(是否开启裁剪平面)。
modelMatrix Matrix4 Matrix4.IDENTITY optional 4x4变换矩阵,指定了相对于剪切平面原始坐标系统的附加变换。
unionClippingRegions Boolean false optional 如果为true,则如果区域位于集合中任何平面的外部,则该区域将被裁剪。否则,一个区域只有在每个平面的外侧才会被裁剪。
edgeColor Color Color.WHITE optional 用于突出显示裁剪对象的边缘的颜色。
edgeWidth Number 0.0 optional 应用于裁剪对象的边缘的突出显示的宽度(以像素为单位)。
示例:
// 这个裁剪平面的距离是正的,这意味着它的法线是面对原点的,这个会裁剪掉平面后面的所有东西,也就是y坐标< -5的所有东西。
var clippingPlanes = new Cesium.ClippingPlaneCollection({
    planes : [
        new Cesium.ClippingPlane(new Cesium.Cartesian3(0.0, 1.0, 0.0), 5.0)
    ],
});
//创建一个实体并将ClippingPlaneCollection附加到模型上。
var 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:

成员变量

用于突出显示裁剪对象的边缘的颜色。
Default Value: Color.WHITE
应用于裁剪对象的边缘的突出显示的宽度(以像素为单位)。
Default Value: 0.0
如果为true,将开启裁剪。
Default Value: true
readonlylength : Number
返回集合的长度,这通常与ClippingPlaneCollection#get一起使用,以迭代集合中的所有平面。
4x4变换矩阵,指定了相对于剪切平面原始坐标系统的附加变换。
Default Value: Matrix4.IDENTITY
将新的裁剪平面添加到集合时触发的事件,事件处理程序将被传递到新平面及其所在的索引。
Default Value: Event()
从集合中删除新的裁剪平面时触发的事件, 事件处理程序将传递新平面和从中删除该平面的索引。
Default Value: Event()
unionClippingRegions : Boolean
如果为true,则如果区域位于集合中任何平面的外部,则该区域将被裁剪。否则,一个区域只有在每个平面的外侧才会被裁剪。
Default Value: false

内置方法

将指定的ClippingPlane添加到集合中。 通过ClippingPlaneCollection#unionClippingRegions 设置裁剪方式。
Name Type Description
plane ClippingPlane 要添加到集合中的裁剪平面。
参考:
contains(clippingPlane)Boolean
检查此集合是否包含一个与给定的裁剪平面相等的裁剪平面。
Name Type Description
clippingPlane ClippingPlane optional 要检查的裁剪平面。
返回值:
如果此集合包含裁剪平面,则为true。
参考:
销毁此对象持有的WebGL资源。

一旦对象被销毁,它将不能在使用; 调用除isDestroyed之外的任何函数都会导致DeveloperError异常。 因此,将返回值(undefined)赋给对象,如示例所示。
异常情况:
示例:
clippingPlanes = clippingPlanes && clippingPlanes .destroy();
参考:
获取指定索引处的裁剪平面,索引是从零开始的,并随着平面的增加而增加。 此函数通常与ClippingPlaneCollection#length一起用于迭代集合中的所有平面。
Name Type Description
index Number 索引。
返回值:
索引处的裁剪平面。
参考:
isDestroyed()Boolean
如果该对象没被销毁,返回false。

如果该对象已经被销毁, 使用isDestroyed 会触发 DeveloperError 异常.
返回值:
false
参考:
remove(clippingPlane)Boolean
从集合中移除给定剪切平面的第一个匹配项。
Name Type Description
clippingPlane ClippingPlane
返回值:
如果移除成功,返回true。
参考:
移除集合中所有的裁剪平面。
参考:
在 Viewer 或 CesiumWidget 渲染场景时调用至获取渲染该图元所需的绘制命令。

不要直接调用此函数。

其他API

Cesium中文API文档手册(v1.63.1版本)参考:《Cesium中文API文档手册(v1.63.1版本)

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)