LCCObject::setClipPrism
设置多边形棱柱裁剪区域。
通过在一组共面多边形顶点所定义的参考平面上,沿面法线方向以 offsetMin / offsetMax 拉伸出一个棱柱体,对场景进行裁剪。支持凸多边形和凹多边形;不支持自相交多边形。
传入 undefined 或不传参数可清除裁剪。
版本要求
SDK v0.6.4+
引擎支持
Three.js
API
LCCObject::setClipPrism(param?: LccClipPrismParams): void
参数
LccClipPrismParams
| 参数 | 类型 | 必选 | 默认值 | 描述 |
|---|---|---|---|---|
vertices | IPoint3[] | 是 | - | 参考平面多边形顶点(世界坐标,共面,任意绕序),最少 3 个,最多 200 个。 |
offsetMax | number | 是 | - | 沿面法线方向的上界偏移量(可为负数,必须大于 offsetMin)。 |
offsetMin | number | 是 | - | 沿面法线方向的下界偏移量(可为负数,必须小于 offsetMax)。 |
normal | IPoint3 | 是 | - | 法线方向 |
clipSide | number | 否 | 1 | 裁剪模式:1 = 保留棱柱内部(裁掉外部),-1 = 保留棱柱外部(裁掉内部)。 |
IPoint3
interface IPoint3 {
x: number;
y: number;
z: number;
}
返回值
void
使用示例
// Set a rectangular prism clipping region (4 coplanar vertices)
lccObject.setClipPrism({
vertices: [
{ x: 0, y: 0, z: 0 },
{ x: 10, y: 0, z: 0 },
{ x: 10, y: 10, z: 0 },
{ x: 0, y: 10, z: 0 }
],
offsetMin: -5,
offsetMax: 5,
normal: { x: 0, y: 0, z: 1 },
clipSide: 1
});
// Inverse clipping: keep the exterior of the prism
lccObject.setClipPrism({
vertices: [
{ x: 0, y: 0, z: 0 },
{ x: 10, y: 0, z: 0 },
{ x: 10, y: 10, z: 0 },
{ x: 0, y: 10, z: 0 }
],
offsetMin: -5,
offsetMax: 5,
normal: { x: 0, y: 0, z: 1 },
clipSide: -1
});
// Clear clipping
lccObject.setClipPrism();
注意事项
- 顶点必须共面(容差 0.01 世界坐标单位),不共面会导致调用失败并输出错误日志。
- 顶点数范围为 3 ~ 200,超出范围会导致调用失败。
offsetMax必须严格大于offsetMin,否则调用失败。- 调整
offsetMin/offsetMax/clipSide是轻量操作,可高频调用。 - 修改多边形顶点会触发内部纹理更新,因此不建议频繁更新顶点。
- 不支持自相交多边形,使用自相交多边形会导致裁剪结果不可预期。
相关 API
LCCObject::setClipBox()— 轴对齐包围盒裁剪LCCObject::setClipPlane()— 平面裁剪