Class: CollisionShapeUtil 
CollisionShapeUtil 提供多种碰撞体构建功能
Constructors 
Methods 
- createStaticPlaneShape
- createBoxShape
- createSphereShape
- createCapsuleShape
- createCylinderShape
- createConeShape
- createCompoundShape
- createCompoundShapeFromObject
- createShapeFromObject
- createHeightfieldTerrainShape
- createConvexHullShape
- createConvexTriangleMeshShape
- createBvhTriangleMeshShape
- createGImpactMeshShape
- buildTriangleMesh
- getAllMeshVerticesAndIndices
Constructors 
constructor 
• new CollisionShapeUtil(): CollisionShapeUtil
Returns 
Methods 
createStaticPlaneShape 
▸ createStaticPlaneShape(planeNormal?, planeConstant?): btStaticPlaneShape
创建静态平面碰撞形状,适用于静态无限平面的碰撞,如地面或墙壁。
Parameters 
| Name | Type | Default value | Description | 
|---|---|---|---|
| planeNormal | Vector3 | Vector3.UP | 平面法向量,默认值为 Vector3.UP。 | 
| planeConstant | number | 0 | 平面常数,表示平面距离原点的距离,默认值为 0。 | 
Returns 
Ammo.btStaticPlaneShape - 静态平面碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:22
createBoxShape 
▸ createBoxShape(object3D, size?): btBoxShape
创建盒型碰撞形状,适用于具有明确尺寸的盒形物体。 如果未指定尺寸,则使用三维对象的包围盒大小。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| size? | Vector3 | 可选参数,盒型碰撞体的尺寸。 | 
Returns 
Ammo.btBoxShape - 盒型碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:36
createSphereShape 
▸ createSphereShape(object3D, radius?): btSphereShape
创建球型碰撞形状,适用于球形物体。 如果未指定半径,则使用三维对象的包围盒半径 X。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| radius? | number | 可选参数,球型碰撞体的半径。 | 
Returns 
Ammo.btSphereShape - 球型碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:51
createCapsuleShape 
▸ createCapsuleShape(object3D, radius?, height?): btCapsuleShape
创建胶囊型碰撞形状,适用于胶囊形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| radius? | number | 可选参数,胶囊的半径。 | 
| height? | number | 可选参数,胶囊中间的圆柱部分的高度。 | 
Returns 
Ammo.btCapsuleShape - 胶囊型碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:66
createCylinderShape 
▸ createCylinderShape(object3D, radius?, height?): btCylinderShape
创建圆柱型碰撞形状,适用于圆柱形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| radius? | number | 可选参数,圆柱的半径。 | 
| height? | number | 可选参数,圆柱的完整高度。 | 
Returns 
Ammo.btCylinderShape - 圆柱型碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:85
createConeShape 
▸ createConeShape(object3D, radius?, height?): btConeShape
创建圆锥形碰撞形状,适用于圆锥形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| radius? | number | 可选参数,圆锥的半径。 | 
| height? | number | 可选参数,圆锥的高度。 | 
Returns 
Ammo.btConeShape - 圆锥形碰撞形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:105
createCompoundShape 
▸ createCompoundShape(childShapes): btCompoundShape
创建复合形状,将多个子形状组合成一个形状。
Parameters 
| Name | Type | Description | 
|---|---|---|
| childShapes | ChildShape[] | 包含子形状实例与位置、旋转属性的数组。 | 
Returns 
Ammo.btCompoundShape - 复合形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:121
createCompoundShapeFromObject 
▸ createCompoundShapeFromObject(object3D, includeParent?): btCompoundShape
根据 Object3D 对象及其子对象创建复合碰撞形状。
Parameters 
| Name | Type | Default value | Description | 
|---|---|---|---|
| object3D | Object3D | undefined | 三维对象,包含多个子对象。 | 
| includeParent | boolean | true | 是否包含父对象的几何体,默认值为 true。 | 
Returns 
复合碰撞形状。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:142
createShapeFromObject 
▸ createShapeFromObject(object3D): btCollisionShape
根据 Object3D 对象的几何体类型创建相应的碰撞形状。
仅支持Box、Sphere、Plane、Cylinder类型的几何体。对于不匹配的几何体类型,返回 btConvexHullShape 凸包形状。
Parameters 
| Name | Type | 
|---|---|
| object3D | Object3D | 
Returns 
Ammo.btCollisionShape
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:188
createHeightfieldTerrainShape 
▸ createHeightfieldTerrainShape(object3D, heightScale?, upAxis?, hdt?, flipQuadEdges?): btHeightfieldTerrainShape
创建高度场形状,基于平面顶点数据模拟地形。
Parameters 
| Name | Type | Default value | Description | 
|---|---|---|---|
| object3D | Object3D | undefined | 用于创建碰撞体的三维对象。 | 
| heightScale | number | 1 | 高度缩放比例,默认值为 1。 | 
| upAxis | number | 1 | 高度场的上轴,默认值为 1。 | 
| hdt | PHY_ScalarType | 'PHY_FLOAT' | 高度场的数据类型,默认值为 Ammo.PHY_FLOAT。 | 
| flipQuadEdges | boolean | false | 是否翻转四边形的边,默认值为 false。 | 
Returns 
Ammo.btHeightfieldTerrainShape - 高度场形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:246
createConvexHullShape 
▸ createConvexHullShape(object3D, modelVertices?): btConvexHullShape
创建凸包形状,适用于具有凹陷填充的模型。 此形状适用于动态物体并提供快速的碰撞检测。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| modelVertices? | Float32Array | 可选参数,提供碰撞体所需的顶点数据,默认为三维对象的顶点数据。 | 
Returns 
Ammo.btConvexHullShape - 凸包形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:299
createConvexTriangleMeshShape 
▸ createConvexTriangleMeshShape(object3D, modelVertices?, modelIndices?): btBvhTriangleMeshShape
创建凸包网格形状,适用于需要复杂几何表示的动态物体。 此形状不要求额外的凸包生成步骤,适用于凸的三角形网格。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| modelVertices? | Float32Array | 可选参数,提供碰撞体所需的顶点数据。 | 
| modelIndices? | Uint16Array | 可选参数,提供碰撞体所需的索引数据。 | 
Returns 
Ammo.btConvexTriangleMeshShape - 凸包网格形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:322
createBvhTriangleMeshShape 
▸ createBvhTriangleMeshShape(object3D, modelVertices?, modelIndices?): btBvhTriangleMeshShape
创建边界体积层次(BVH)网格形状,适用于需要复杂几何表示的静态物体。 此形状适合大规模静态网格,但对动态对象不适用。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| modelVertices? | Float32Array | 可选参数,提供碰撞体所需的顶点数据。 | 
| modelIndices? | Uint16Array | 可选参数,提供碰撞体所需的索引数据。 | 
Returns 
Ammo.btBvhTriangleMeshShape - BVH 网格形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:349
createGImpactMeshShape 
▸ createGImpactMeshShape(object3D, modelVertices?, modelIndices?): btGImpactMeshShape
创建 GImpact 网格形状,适用于需要复杂几何表示的动态物体。 基于 GIMPACT 算法,可以用于复杂的三角网格碰撞检测,包括动态物体的交互,此形状性能消耗较高,但提供更精确的碰撞检测。
Parameters 
| Name | Type | Description | 
|---|---|---|
| object3D | Object3D | 用于创建碰撞体的三维对象。 | 
| modelVertices? | Float32Array | 可选参数,提供碰撞体所需的顶点数据。 | 
| modelIndices? | Uint16Array | 可选参数,提供碰撞体所需的索引数据。 | 
Returns 
Ammo.btGImpactMeshShape - GImpact 网格形状实例。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:376
buildTriangleMesh 
▸ buildTriangleMesh(vertices, indices): btTriangleMesh
构建 btTriangleMesh 对象,用于创建网格形状。
Parameters 
| Name | Type | Description | 
|---|---|---|
| vertices | Float32Array | 顶点数据,按 xyz 顺序排列。 | 
| indices | Uint16Array | 索引数据,定义三角形的顶点索引。 | 
Returns 
Ammo.btTriangleMesh - 构建的三角形网格。
Defined in 
packages/physics/utils/CollisionShapeUtil.ts:402
getAllMeshVerticesAndIndices 
▸ getAllMeshVerticesAndIndices(object3D, isTransformChildren?): Object
获取3D对象所有网格的顶点与索引。
Parameters 
| Name | Type | Default value | Description | 
|---|---|---|---|
| object3D | Object3D | undefined | 三维对象。 | 
| isTransformChildren | boolean | true | 是否将子对象的顶点转换到父对象的局部坐标系。默认值为 true。 | 
Returns 
Object
顶点数据和索引数据。
| Name | Type | 
|---|---|
| vertices | Float32Array | 
| indices | Uint16Array | 

