3.2 KiB
3.2 KiB
| outline | ||
|---|---|---|
|
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的公开方法调用。