the use of octree in iMSTK

I want to know that in the latest version of imstk, except for the example of “OctreeInterasectionExample”, is the octree not used in other places? I noticed that in the current implementation of collision detection, in the “imstkCollisionUtils.h” file, most of them use brute force methods directly or test with AABB bounding box.

So current implementation of collision detection does not use the octree space decomposition method? I remember that in the previous version of the document, it was stated that an octree was used to achieve collisions.

The loose octree in iMSTK was initially implemented as a singleton across every CD (collision detection) method which was causing issues. On top of that it had a ton of instabilities & we needed something more modular. Ultimately we found it best to remove from CD in order to move forward. The octree is still present though as we are still looking to get it back into CD but in a more general/reuseable spatial partioning API.

The SurfaceMeshToSurfaceMeshCD does utilize VTKs octree, you may use it for finding intersecting elements or with your own handlers. But finding intersecting elements is only part of the issue. It does not construct a proper manifold & at the moment does not entirely work with most handlers (PBD & RBD).

Also worth mentioning we now have signed distance field collision. Any sort of large/complex static object collisions are almost always faster with an SDF instead (but our SDF collision is point based. And as I said this is for static objects only).

Privacy Notice