This is a extension to the Bullet Physics Library that allows for fast efficient cutting of Tetrahedralized meshes at near real-time speeds. We use the btSoftbody object to handle the main physics simulation of our tetrahedral mesh. In the btSoftbody world we implemented a function in the internal step simulation to check if a tetrahedron is colliding with a rigidbody. We label a rigidbody that cuts softbody by a bool value added to the btRigidBody.h class. When we collide with these supposed cutter rigidbodies we then remove links constraints based of the tetrahdral mesh edges that are pre-calculated when the tetrahedral mesh is loaded from a .fbx or .obj file. There are currently two algorithms to cut tetrahedral meshes that have been implemented. We simply break links based on whether or not the edges collide. The second algorithm uses the accumulated force magnitude in each tetrahedron node to determine the amount of stress placed on a tetrahedron and we have a value defined in the btSoftbody to determine the stress break threshold. If the accumulated force exceeds this threshold then we will break the links. This method allows for a fast, efficient cutting a tetrahedral meshes instead of cutting through the tetrahedral mesh via a raycast because were avoiding have to recompute the tetrahedralization of the mesh.
Contact Us!