1. 编译bullet
修改配置:


2. 初始化物理世界
2.1 基本概念
1. btDefaultCollisionConfiguration
- 用途:这是 Bullet 物理引擎中用于配置碰撞检测系统的默认设置类。它负责初始化和配置碰撞检测所需的各种算法和数据结构。
- 功能:它提供了碰撞算法的默认实现,可以根据不同类型的碰撞对象(如凸体、网格)选择合适的算法。它还管理着用于碰撞检测过程中的内存分配。
2. btCollisionDispatcher
- 用途:这是一个碰撞分派器,用于管理和分配物体间的碰撞检测任务。
- 功能:当两个物体可能发生碰撞时,碰撞分派器确定是否需要进行碰撞检测,以及使用哪种碰撞检测算法。它依据物体的形状和碰撞配置来决定如何处理这些潜在的碰撞(依据包围盒)。
3. btBroadphaseInterface
- 用途:这是一个用于初步筛选碰撞对的接口,用于快速剔除那些不可能相互碰撞的物体。
- 功能:通过空间分割和快速检测方法(如AABB测试),该接口能够高效地缩小需要进行详细碰撞检测的物体对的数量。这极大地提高了整体的碰撞检测效率。
4. btSequentialImpulseConstraintSolver
- 用途:这是一个求解器,用于处理刚体间的约束和碰撞响应。
- 功能:它使用迭代方法来解决刚体之间的约束,如铰链、滑轮或接触约束。这个求解器计算出所需的力和冲量,以保持物体间的约束条件并适当地响应碰撞。
5. btCollisionWorld
- 用途:这是一个包含所有参与碰撞检测物体的容器。
- 功能:它负责组织和执行碰撞检测,但不处理物体的动力学(如力和运动)。这使得它适用于那些只需进行碰撞检测而无需物理模拟的场景。
6. btDiscreteDynamicsWorld
- 用途:这是 Bullet 中最常用的动力学世界类型,它既处理刚体的碰撞也处理它们的动力学。
- 功能:除了执行碰撞检测之外,这个世界还管理物体的运动,处理力的作用、质量、摩擦等物理属性。这使得它成为模拟真实世界物理行为(如在游戏和模拟中)的理想选择。
2.2 初始化碰撞世界
// 碰撞配置
btDefaultCollisionConfiguration* pCollisionConfig = new btDefaultCollisionConfiguration();
// 分派器
btCollisionDispatcher* pDispatcher = new btCollisionDispatcher(pCollisionConfig);
// 粗侧接口
btBroadphaseInterface* pBroadphase = new btDbvtBroadphase();
// 注册GImpact算法
btGImpactCollisionAlgorithm::registerAlgorithm(pDispatcher);
// 初始化碰撞世界
btCollisionWorld* pCollisionWorld = new btCollisionWorld(pDispatcher, pBroadphase, pCollisionConfig);
2.3 初始化动力学世界
// 碰撞配置
btDefaultCollisionConfiguration* pCollisionConfig = new btDefaultCollisionConfiguration();
// 分派器
btCollisionDispatcher* pDispatcher = new btCollisionDispatcher(pCollisionConfig);
// 设置世界的空间大小,限定刚体运动的空间范围
btVector3 worldAabbMin(-10000, -10000, -10000);
btVector3 worldAabbMax(10000, 10000, 10000);
// 设置最大刚体数
int maxProxies = 1024;
// 粗侧接口
btBroadphaseInterface* pBroadphase = new btAxisSweep3(worldAabbMin, worldAabbMax, maxProxies);
// 求解器
btSequentialImpulseConstraintSolver* solver = new btSequentialImpulseConstraintSolver();
// 注册GImpact算法
btGImpactCollisionAlgorithm::registerAlgorithm(pDispatcher);
// 初始化碰撞世界
btCollisionWorld* pCollisionWorld = new btCollisionWorld(pDispatcher, pBroadphase, pCollisionConfig);
3. 碰撞形体
3.1 btCollisionShape
1. 用途
btCollisionShape是 Bullet 中所有碰撞形状的基类。它定义了物体在物理世界中的几何形状,这是进行碰撞检测的基础。
2. 特点
- 形状多样:支持多种类型的形状,包括球体(
btSphereShape)、立方体(btBoxShape)、圆柱体(btCylinderShape)、锥体(btConeShape)和更复杂的网格形状(btConvexHullShape、btBvhTriangleMesh

最低0.47元/天 解锁文章
919

被折叠的 条评论
为什么被折叠?



