Page MenuHome

Extension of the C-API for Bullet in Blender, to enable customized collision detection outside of rigid body dynamics.
ClosedPublic

Authored by Lukas Toenne (lukastoenne) on Apr 28 2015, 6:39 PM.

Details

Summary

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.

Diff Detail

Repository
rB Blender
Branch
bullet_ghosts

Event Timeline

Lukas Toenne (lukastoenne) retitled this revision from to Extension of the C-API for Bullet in Blender, to enable customized collision detection outside of rigid body dynamics..
Lukas Toenne (lukastoenne) updated this object.

@Lukas Toenne (lukastoenne): I was just about to ask you about this :)
Looks good at first glance.
I'm not quite sure about the ghost object part, will take a closer look over the weekend.

Lukas Toenne (lukastoenne) edited edge metadata.
This comment was removed by Lukas Toenne (lukastoenne).
This revision was automatically updated to reflect the committed changes.