Skip to content

Class: CollisionShapeUtil

CollisionShapeUtil 提供多种碰撞体构建功能

Constructors

Methods

Constructors

constructor

new CollisionShapeUtil(): CollisionShapeUtil

Returns

CollisionShapeUtil

Methods

createStaticPlaneShape

createStaticPlaneShape(planeNormal?, planeConstant?): btStaticPlaneShape

创建静态平面碰撞形状,适用于静态无限平面的碰撞,如地面或墙壁。

Parameters

NameTypeDefault valueDescription
planeNormalVector3Vector3.UP平面法向量,默认值为 Vector3.UP。
planeConstantnumber0平面常数,表示平面距离原点的距离,默认值为 0。

Returns

btStaticPlaneShape

Ammo.btStaticPlaneShape - 静态平面碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:22


createBoxShape

createBoxShape(object3D, size?): btBoxShape

创建盒型碰撞形状,适用于具有明确尺寸的盒形物体。 如果未指定尺寸,则使用三维对象的包围盒大小。

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
size?Vector3可选参数,盒型碰撞体的尺寸。

Returns

btBoxShape

Ammo.btBoxShape - 盒型碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:36


createSphereShape

createSphereShape(object3D, radius?): btSphereShape

创建球型碰撞形状,适用于球形物体。 如果未指定半径,则使用三维对象的包围盒半径 X

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
radius?number可选参数,球型碰撞体的半径。

Returns

btSphereShape

Ammo.btSphereShape - 球型碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:51


createCapsuleShape

createCapsuleShape(object3D, radius?, height?): btCapsuleShape

创建胶囊型碰撞形状,适用于胶囊形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
radius?number可选参数,胶囊的半径。
height?number可选参数,胶囊中间的圆柱部分的高度。

Returns

btCapsuleShape

Ammo.btCapsuleShape - 胶囊型碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:66


createCylinderShape

createCylinderShape(object3D, radius?, height?): btCylinderShape

创建圆柱型碰撞形状,适用于圆柱形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
radius?number可选参数,圆柱的半径。
height?number可选参数,圆柱的完整高度。

Returns

btCylinderShape

Ammo.btCylinderShape - 圆柱型碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:85


createConeShape

createConeShape(object3D, radius?, height?): btConeShape

创建圆锥形碰撞形状,适用于圆锥形物体。 如果未指定尺寸,则使用三维对象的包围盒半径 X 和高度 Y

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
radius?number可选参数,圆锥的半径。
height?number可选参数,圆锥的高度。

Returns

btConeShape

Ammo.btConeShape - 圆锥形碰撞形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:105


createCompoundShape

createCompoundShape(childShapes): btCompoundShape

创建复合形状,将多个子形状组合成一个形状。

Parameters

NameTypeDescription
childShapesChildShape[]包含子形状实例与位置、旋转属性的数组。

Returns

btCompoundShape

Ammo.btCompoundShape - 复合形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:121


createCompoundShapeFromObject

createCompoundShapeFromObject(object3D, includeParent?): btCompoundShape

根据 Object3D 对象及其子对象创建复合碰撞形状。

Parameters

NameTypeDefault valueDescription
object3DObject3Dundefined三维对象,包含多个子对象。
includeParentbooleantrue是否包含父对象的几何体,默认值为 true

Returns

btCompoundShape

复合碰撞形状。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:142


createShapeFromObject

createShapeFromObject(object3D): btCollisionShape

根据 Object3D 对象的几何体类型创建相应的碰撞形状。

仅支持Box、Sphere、Plane、Cylinder类型的几何体。对于不匹配的几何体类型,返回 btConvexHullShape 凸包形状。

Parameters

NameType
object3DObject3D

Returns

btCollisionShape

Ammo.btCollisionShape

Defined in

packages/physics/utils/CollisionShapeUtil.ts:188


createHeightfieldTerrainShape

createHeightfieldTerrainShape(object3D, heightScale?, upAxis?, hdt?, flipQuadEdges?): btHeightfieldTerrainShape

创建高度场形状,基于平面顶点数据模拟地形。

Parameters

NameTypeDefault valueDescription
object3DObject3Dundefined用于创建碰撞体的三维对象。
heightScalenumber1高度缩放比例,默认值为 1
upAxisnumber1高度场的上轴,默认值为 1
hdtPHY_ScalarType'PHY_FLOAT'高度场的数据类型,默认值为 Ammo.PHY_FLOAT
flipQuadEdgesbooleanfalse是否翻转四边形的边,默认值为 false

Returns

btHeightfieldTerrainShape

Ammo.btHeightfieldTerrainShape - 高度场形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:246


createConvexHullShape

createConvexHullShape(object3D, modelVertices?): btConvexHullShape

创建凸包形状,适用于具有凹陷填充的模型。 此形状适用于动态物体并提供快速的碰撞检测。

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
modelVertices?Float32Array可选参数,提供碰撞体所需的顶点数据,默认为三维对象的顶点数据。

Returns

btConvexHullShape

Ammo.btConvexHullShape - 凸包形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:299


createConvexTriangleMeshShape

createConvexTriangleMeshShape(object3D, modelVertices?, modelIndices?): btBvhTriangleMeshShape

创建凸包网格形状,适用于需要复杂几何表示的动态物体。 此形状不要求额外的凸包生成步骤,适用于凸的三角形网格。

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
modelVertices?Float32Array可选参数,提供碰撞体所需的顶点数据。
modelIndices?Uint16Array可选参数,提供碰撞体所需的索引数据。

Returns

btBvhTriangleMeshShape

Ammo.btConvexTriangleMeshShape - 凸包网格形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:322


createBvhTriangleMeshShape

createBvhTriangleMeshShape(object3D, modelVertices?, modelIndices?): btBvhTriangleMeshShape

创建边界体积层次(BVH)网格形状,适用于需要复杂几何表示的静态物体。 此形状适合大规模静态网格,但对动态对象不适用。

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
modelVertices?Float32Array可选参数,提供碰撞体所需的顶点数据。
modelIndices?Uint16Array可选参数,提供碰撞体所需的索引数据。

Returns

btBvhTriangleMeshShape

Ammo.btBvhTriangleMeshShape - BVH 网格形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:349


createGImpactMeshShape

createGImpactMeshShape(object3D, modelVertices?, modelIndices?): btGImpactMeshShape

创建 GImpact 网格形状,适用于需要复杂几何表示的动态物体。 基于 GIMPACT 算法,可以用于复杂的三角网格碰撞检测,包括动态物体的交互,此形状性能消耗较高,但提供更精确的碰撞检测。

Parameters

NameTypeDescription
object3DObject3D用于创建碰撞体的三维对象。
modelVertices?Float32Array可选参数,提供碰撞体所需的顶点数据。
modelIndices?Uint16Array可选参数,提供碰撞体所需的索引数据。

Returns

btGImpactMeshShape

Ammo.btGImpactMeshShape - GImpact 网格形状实例。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:376


buildTriangleMesh

buildTriangleMesh(vertices, indices): btTriangleMesh

构建 btTriangleMesh 对象,用于创建网格形状。

Parameters

NameTypeDescription
verticesFloat32Array顶点数据,按 xyz 顺序排列。
indicesUint16Array索引数据,定义三角形的顶点索引。

Returns

btTriangleMesh

Ammo.btTriangleMesh - 构建的三角形网格。

Defined in

packages/physics/utils/CollisionShapeUtil.ts:402


getAllMeshVerticesAndIndices

getAllMeshVerticesAndIndices(object3D, isTransformChildren?): Object

获取3D对象所有网格的顶点与索引。

Parameters

NameTypeDefault valueDescription
object3DObject3Dundefined三维对象。
isTransformChildrenbooleantrue是否将子对象的顶点转换到父对象的局部坐标系。默认值为 true

Returns

Object

顶点数据和索引数据。

NameType
verticesFloat32Array
indicesUint16Array

Defined in

packages/physics/utils/CollisionShapeUtil.ts:426