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()— 平面裁剪