deep-engine-demo/packages/docs/api/tool/CSGOperator.md
2026-04-19 18:46:28 +08:00

280 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
outline: [2, 3]
---
# CSGOperator
- 源文件:`packages/sdk/src/tool/CSGOperator.ts`
- 文档位置:`packages/docs/api/tool/CSGOperator.md`
## 类型:`CSGOperationType`
- 作用CSGOperationType 的类型定义。
### 定义
```ts
export type CSGOperationType = typeof CSGOperationType[keyof typeof CSGOperationType];
```
## 类:`CSGOperator`
- 作用CSG 操作器 使用 three-bvh-csg 进行布尔运算
### 构造函数
#### `new CSGOperator()`
- 作用:创建 CSGOperator 实例。
- 入参:无
- 出参:`CSGOperator`
- 返回说明:返回当前类实例。
### 属性
| 属性名 | 可见性 | 类型 | 作用 |
| --- | --- | --- | --- |
| `evaluator` | `public` | `Evaluator` | 用于保存 `evaluator` 对应的数据。 |
### 访问器
#### `get debugMode(): boolean`
- 作用:获取 debug Mode。
- 入参:无
- 出参:`boolean`
- 返回说明:返回布尔结果。
#### `set debugMode(value: boolean)`
- 作用:设置 debug Mode。
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `value` | `boolean` | 是 | 要写入的新值。 |
- 出参:`void`
- 返回说明:无返回值。
### 方法
#### `clearBrushCache(mesh?: THREE.Mesh): void`
- 作用:清除 Brush 缓存
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `mesh` | `THREE.Mesh` | 否 | - 可选,指定要清除的网格,不指定则清除所有 |
- 出参:`void`
- 返回说明:无返回值。
#### `union(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行并集操作
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `subtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行差集操作 (A - B)
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 被减去的网格 |
| `meshB` | `THREE.Mesh` | 是 | - 减去的网格 |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `reverseSubtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行反向差集操作 (B - A)
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `intersection(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行交集操作
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `difference(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行对称差集操作
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `hollowSubtract(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行空心差集操作 从 meshA 中减去 meshB但只删除相交的面
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `hollowIntersection(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:执行空心交集操作 只保留相交部分的表面
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `operate(meshA: THREE.Mesh, meshB: THREE.Mesh, operation: CSGOperationType): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:通用 CSG 操作方法
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
| `operation` | `CSGOperationType` | 是 | - CSG 操作类型 |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `subtractMultiple(meshA: THREE.Mesh, meshes: THREE.Mesh[]): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:批量执行差集操作 从 meshA 中减去多个网格
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 被减去的网格 |
| `meshes` | `THREE.Mesh[]` | 是 | - 要减去的网格数组 |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
#### `setAttributes(attributes: string[]): void`
- 作用:设置属性插值
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `attributes` | `string[]` | 是 | - 要插值的属性名称数组 |
- 出参:`void`
- 返回说明:无返回值。
#### `setUseGroups(useGroups: boolean): void`
- 作用:设置是否使用材质组
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `useGroups` | `boolean` | 是 | - 是否使用组 |
- 出参:`void`
- 返回说明:无返回值。
#### `meshToBrush(mesh: THREE.Mesh): Brush`
- 作用:将 Mesh 转换为 Brush使用缓存机制复用 Brush 对象
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `mesh` | `THREE.Mesh` | 是 | - 需要转换的网格 |
- 出参:`Brush`
- 返回说明Brush 对象
#### `evaluate(meshA: THREE.Mesh, meshB: THREE.Mesh, operation: CSGOperationType): THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 作用:统一的 CSG 操作执行方法
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
| `operation` | `CSGOperationType` | 是 | - CSG 操作类型 |
- 出参:`THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>`
- 返回说明:结果几何体
## 构造示例
- 当前 Demo 中没有直接展示 `CSGOperator` 的构造调用。
## 函数示例
- 当前 Demo 中没有直接展示 `CSGOperator` 的公开方法调用。
## Demo 参考
### `CSGOperationType`
以下示例文件中可以看到该 API 的实际调用方式:
- `packages/demo/src/panels/GoldMineScene/DevelopmentMiningPanel.vue`
- `packages/demo/src/panels/GoldMineScene/DrillingPanel.vue`
- `packages/demo/src/panels/TunnelScene/RobotExcavationPanel.vue`
- `packages/demo/src/views/TunnelScene.vue`