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 |