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

144 lines
3.2 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]
---
# CollisionDetector
- 源文件:`packages/sdk/src/tool/CollisionDetector.ts`
- 文档位置:`packages/docs/api/tool/CollisionDetector.md`
## 类:`CollisionDetector`
- 作用:碰撞检测器 使用 three-mesh-bvh 进行高效的碰撞检测
### 属性
| 属性名 | 可见性 | 类型 | 作用 |
| --- | --- | --- | --- |
| `meshBVHMap` | `public` | `WeakMap<THREE.Mesh, any>` | 用于保存 `meshBVHMap` 的映射关系。 |
### 方法
#### `computeBoundsTree(geometry: THREE.BufferGeometry): void`
- 作用:为几何体计算 BVH
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
- 出参:`void`
- 返回说明:无返回值。
#### `disposeBoundsTree(geometry: THREE.BufferGeometry): void`
- 作用:释放几何体的 BVH
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
- 出参:`void`
- 返回说明:无返回值。
#### `hasBoundsTree(geometry: THREE.BufferGeometry): boolean`
- 作用:检查几何体是否有 BVH
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
- 出参:`boolean`
- 返回说明:是否有 BVH
#### `ensureBoundsTree(geometry: THREE.BufferGeometry): void`
- 作用:确保几何体有 BVH如果没有则计算
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `geometry` | `THREE.BufferGeometry` | 是 | 几何体 |
- 出参:`void`
- 返回说明:无返回值。
#### `buildBVH(mesh: THREE.Mesh): void`
- 作用:为网格构建 BVH
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `mesh` | `THREE.Mesh` | 是 | - 需要构建 BVH 的网格 |
- 出参:`void`
- 返回说明:无返回值。
#### `checkIntersection(meshA: THREE.Mesh, meshB: THREE.Mesh): boolean`
- 作用:检测两个网格是否相交
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`boolean`
- 返回说明:是否相交
#### `getIntersectionVolume(meshA: THREE.Mesh, meshB: THREE.Mesh): THREE.Box3 | null`
- 作用:获取两个网格的相交体积
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `meshA` | `THREE.Mesh` | 是 | - 网格 A |
| `meshB` | `THREE.Mesh` | 是 | - 网格 B |
- 出参:`THREE.Box3 \| null`
- 返回说明:相交的包围盒,如果不相交则返回 null
#### `disposeBVH(mesh: THREE.Mesh): void`
- 作用:清理网格的 BVH
- 入参:
| 参数名 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| `mesh` | `THREE.Mesh` | 是 | - 需要清理 BVH 的网格 |
- 出参:`void`
- 返回说明:无返回值。
#### `disposeAll(): void`
- 作用:释放资源并销毁当前实例。
- 入参:无
- 出参:`void`
- 返回说明:无返回值。
## 构造示例
- 当前 Demo 中没有直接展示 `CollisionDetector` 的构造调用。
## 函数示例
- 当前 Demo 中没有直接展示 `CollisionDetector` 的公开方法调用。