These extensions consist of a few major changes:
- Support for "btGhost" objects.
These are Bullet collision objects, but not rigid bodies. They can be added to a btCollisionWorld, or they can be used for immediate individual collision detection. Ghost objects don't have any effect on rigid bodies or other collision objects.
Ghost objects are "one-way" colliders: they register contacts with actual collision objects, but don't themselves generate contacts in other bodies. This makes them useful for accessing Bullet's advanced contact generation algorithms in simulation systems that don't actually interact with rigid bodies (e.g. hair or cloth).
- Better low-level access to collision shapes.
Collision shapes can now be allocated outside of the API using static size constants. This allows more efficient allocation schemes, such as bulk array allocation and mempools/memarenas. The Bullet engine itself expects callers to allocate and manage class instances in fact, but due to the optional linking with Bullet and the differences between C/C++ the allocation was limited to internally created single collision shape instances so far.
- Compound shapes can now be constructed explicitly as well. Previously only the primitive shapes were supported, with compounds limited to special cases.
- Contact callback functions (contact and proximity tests) can now do complete reports of all manifold contact points.
Taken together, these API improvements will open up Bullet to a wider range of features inside Blender, for rigid body simulations as well as other uses.