--- outline: [2, 3] --- # CollisionDetector - 源文件:`packages/sdk/src/tool/CollisionDetector.ts` - 文档位置:`packages/docs/api/tool/CollisionDetector.md` ## 类:`CollisionDetector` - 作用:碰撞检测器 使用 three-mesh-bvh 进行高效的碰撞检测 ### 属性 | 属性名 | 可见性 | 类型 | 作用 | | --- | --- | --- | --- | | `meshBVHMap` | `public` | `WeakMap` | 用于保存 `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` 的公开方法调用。