144 lines
3.2 KiB
Markdown
144 lines
3.2 KiB
Markdown
---
|
||
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` 的公开方法调用。
|