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

7.9 KiB
Raw Blame History

outline
2
3

CSGOperator

  • 源文件:packages/sdk/src/tool/CSGOperator.ts
  • 文档位置:packages/docs/api/tool/CSGOperator.md

类型:CSGOperationType

  • 作用CSGOperationType 的类型定义。

定义

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