Bullet是跨平台的开源物理引擎,而Ammo是Bullet转化为JavaScript语言的产品,可以帮助实现碰撞检测、力学模拟,还提供多种关节实现。
该类使用频率很高,由3个浮点数类型的x、y、z变量组成,可以表示速度、点、力等向量。
创建一个三维分量初始值都为零的三维向量对象 |
创建三维向量对象,三个坐标值分别为x、y、z |
获取向量归一化后的单位向量 |
该类由位置和方向组合而成,用来表示刚体的变换,如平移、旋转等。
变换的构造函数,q表示变换旋转信息的四元数,v表示变换平移信息的向量 |
将当前变换对象设置为初始状态,即将旋转变换矩阵归一化,平移向量3个维度的分量归零 |
设置平移变换的向量,origin为平移变换的3x3矩阵 |
设置当前变换对象的旋转变换数据,rotation表示存储旋转数据的四元数对象 |
换取表示旋转信息的四元数 |
换取表示变换信息的3x3矩阵 |
设置变换的矩阵,m为旋转平移缩放向量合成的4x4变换矩阵首地址 |
btQuaternion类表示的四元数,用于对三维向量进行变换。
该类用于存储刚体的一些属性信息,包括线速度、角速度、摩擦系数等,其中封装了多种方法,用于设置和获取相关属性信息。
获取重心的变换,返回值为获取的四元数 |
设置刚体变换,参数xform表示需要变换的对象 |
设置现行阻尼系数和角阻尼系数 |
获取线速度,返回值为获取的线速度向量 |
获取加速度,返回值为获取的角速度向量 |
获取角度因子,angularFactort为要设置的角度因子 |
获取刚体的形状,返回值为获取的形状指针 |
应用中心力,force为提供的力向量 |
应用扭矩,torque为要应用的刚体扭矩 |
应用力,force为要应用的力,rel_pos为施加力的位置 |
应用中心冲量,impulse为要应用的冲量 |
应用扭矩冲量,torque为要应用的冲量 |
应用冲量,impulse为要应用的冲量,rel_pos为要施加冲量的位置坐标 |
物理世界类构造器,dispatcher为碰撞检测算法分配器引用,conf为碰撞检测配置信息 |
进行世界物理模拟,timeStep为时间步进 |
在物理世界中添加约束,constraint为约束引用 |
在物理世界删除约束,constraint为约束引用 |
设置物理世界的重力,gravity为重力向量 |
在物理世界添加刚体,body为要添加的刚体 |
获取物理世界的约束总数 |
获取物理世界中的指定约束,index为约束索引 |
获取物理世界中碰撞物体的数量 |
获取物理世界中碰撞物体的数组 |
进行接触检测,colObj为指向碰撞物体类的引用,resultCallback为接触回调类的对象 |
实际开发中常使用该类来创建物理世界对象,创建时要使用构造器,需要给出碰撞检测算法分配器、碰撞检测粗测算法接口和碰撞检测配置接口。
离散物理世界类构造器,dispatcher为碰撞检测算法分配器引用,pairCache为碰撞粗测算法接口,constraintSolver为约束解决器引用,conf为碰撞检测配置信息 |
获取当前物理世界的引用 |
可支持模拟软体,继承了btDiscreteDynamicsWorld类。所谓软体,不具有固定形状,可像软布一样改变本身形状的物体。
离散物理世界类构造器,dispatcher为碰撞检测算法分配器引用,pairCache为碰撞粗测算法接口,constraintSolver为约束解决器引用,conf为碰撞检测配置信息 |
向物理世界添加物体,body为指向软体的引用 |
从物理世界删除指定软体 |
该类封装了一些判断碰撞形状类型的方法,所有碰撞形状都直接或间接继承自此类。方法有:
计算惯性,mass为质量,inertia为惯性 |
该类可用于盒子、箱子等规则物体。
构造器,boxHalfExtents表示立方体盒子的半区域 |
该类表示静态的平面,如地面、屋顶等,创建时需要给出法向量。
静态平面构造器,参数planeNormal为平面法向量,planeConstant为平面上任意一点 |
球体碰撞形状构造器,radius为球半径 |
该类表示一个圆柱形状,如杆、金币、石柱等都可以采用此类,但碰撞计算量较大,不如胶囊。
圆柱对象构造器,halfExtents为圆柱的半区域,三维分量,第1和3维表示圆柱的长短半径,第2维是长度 |
该类表示一个胶囊形状,碰撞计算量比圆柱小,旗杆、铅笔等一般使用该类。
胶囊碰撞形状对象构造器,参数radius为两端球面的半径,height为中间圆柱的长度 |
获取中间圆柱部分长度值的一半 |
圆锥碰撞形状对象构造器,参数radius为圆锥的半径,height为圆锥的高度 |
该类表示一个复合形状,可以通过创建多个单一形状组合成一个复合形状对象。
向组合形状中添加子形状,localTransform为子形状的变换,shape为添加的子形状 |
从组合形状中删除指定的子形状, childShapeindex为子形状索引 |
获取当前组合形状中子形状的数量 |
获取组合形状中指定索引编号的子形状,index为子形状索引 |
交通工具类是模拟现实世界中的交通工具,有刚体车身、四个轮子,支持前轮驱动和后轮驱动,支持车轮转向等,提供了添加和更新车轮的方法,设置车轮刹车的方法。
更新交通工具,collisionWorld为物理世界的引用,step为步长 |
获取交通工具的变换对象 |
更新交通工具,step为更新的步长 |
获取操纵车轮的系数,wheelindex表示车轮索引值 |
设置操纵车轮系数的值,steering为要设置的值 |
车轮上应用力,force为力的大小,wheelindex表示车轮索引值 |
更新车轮的变换对象,wheelindex表示车轮索引值 |
获取交通工具上的车轮总数 |
获取交通工具上的车轮,index为车轮索引 |
设置刹车系数,brake为要设置的刹车系数 |
更新悬挂系统,deltaTime为更新步长 |
更新摩擦,timeStep为更新步长 |
获取交通工具的前进向量 |
获取交通工具的当前速度 |
软体是不同于固定形状的刚体,如绳索,可以实现拉伸、弯曲等不同姿态,如软布可以呈现上下波动。创建软体时必须使用软体帮助类,该类提供了创建软体的方法:
创建绳索软体的方法,worldInfo为软体世界信息,from为绳索起点位置,to为绳索终点位置,res为恢复系数,fixeds为坚硬系数 |
创建球软体的方法,worldInfo为软体世界信息,center为中心点坐标,radius为半径,res为恢复系数 |
创建三角形网络软体的方法,worldInfo为软体世界信息,vertices为顶点数组坐标,triangles为顶点索引数组,ntriangles为三角形总数 |
关节是两个物体之间的约束,关节的父类为btTypedConstraint类,其他关节都继承自该类,其封装了具体关节的共用方法。
获取毁坏关节的最大冲量 |
设置毁坏关节的最大冲量, threshold为要设置的冲量值 |
关节主要有铰链关节、滑动关节、六自由度关节、点对点关节等。
铰链是仅有一个旋转自由度的关节,通过铰链的约束限制,相关刚体仅能绕铰链轴旋转。
铰链构造器,参数rbA和rbB为要添加约束的两个刚体,pivotInA和pivotInB分别为对应的中心点,axisInA和axisInB为两个刚体的轴向量,useReferenceFrameA为两个刚体之间的约束关系,正常对应还是交叉对应,默认false |
铰链构造器,参数rbA为要添加约束的两个刚体,pivotInA为对应的中心点,axisInA为两个刚体的轴向量,useReferenceFrameA为两个刚体之间的约束关系 |
铰链构造器,rbAFrame为第1个刚体的变换对象,rbBFrameaxisInB为第2个刚体的变换对象,useReferenceFrameA为两个刚体之间的约束关系,正常对应还是交叉对应 |
获取铰链当前的旋转角度值 |
设置铰链的转动范围,low为下限值,high为上限值 |
马达用于模拟提供动力的部件。
滑动关节是一种仅有平移和旋转自由度的关节,如螺丝和螺母。
滑动关节构造器,rbA为刚体,frameInA为从约束位置到刚体质心位置的变换,useLinearReferenceFrameA表示刚体与约束之间的对应关系 |
设置滑动关节滑动距离上限 |
设置滑动关节滑动距离下限 |
设置滑动关节转动角度上限 |
设置滑动关节转动角度下限 |
设置关节的滑动阻尼系数 |
设置关节的转动阻尼系数 |
获取关节的滑动阻尼系数 |
获取关节的转动阻尼系数 |
设置是否启动滑动对应的马达 |
设置驱动滑动马达的最大力 |
设置驱动滑动马达的速度 |
设置是否启动转动对应的马达 |
设置驱动转动马达的最大力 |
设置驱动转动马达的速度 |
为了模拟现实世界中齿轮之间的转动效果。
齿轮关节构造器,rbA和rbB为两个刚体,axisA和axisB分别为两个刚体的轴向量,ratio为转动比例 |
设置关联第1个刚体的轴向量 |
设置关联第2个刚体的轴向量 |
获取关联第1个刚体的轴向量 |
获取关联第1个刚体的轴向量 |
获取齿轮关节的转动比例 |
点对点关节模拟了两个物体上某两个点呈现连接效果。
点对点约束构造器,rbA和rbB为两个刚体,pivotInA和pivotInB为关节分别在两个刚体坐标系中的位置 |
点对点约束构造器,pivotInA为关节在此刚体坐标系中的位置 |
设置关节在第1个刚体坐标系中的位置 |
设置关节在第2个刚体坐标系中的位置 |
获取关节在第1个刚体坐标系中的位置 |
获取关节在第2个刚体坐标系中的位置 |
六自由度关节有6个不同的自由度,包括3个平移自由度和3个转动自由度,可以模拟动物关节及机械结构,如肘关节、颈关节、机械手臂等。通过锁死或限制此关节的某个或某几个自由度,可以模拟其他类型的关节。
6自由度关节构造器,rbA为刚体,frameInA为从约束位置到刚体质心位置的变换,useLinearReferenceFrameA表示两个刚体与两个约束之间的对应关系 |
设置关节3个滑动自由度距离的上限 |
设置关节3个滑动自由度距离的下限 |
设置关节3个转动自由度距离的上限 |
设置关节3个转动自由度距离的下限 |
获取指定轴的旋转角度,基于欧拉角的计算方法 |
地下室结构的抗浮设计与分析分析,设计,抗浮,地下结构,地下室和,结构设计,地下室,结构的抗浮,抗浮设计,地下室结构