Cutting¶
Cutting is available in iMSTK. There are a large amount of cutting methods in surgical simulation. iMSTK currently supports a discrete mesh based cutting method in it's PbdObjectCutting. Discrete cut meaning it can only cut once in an instance and is not suitable for continuous cutting. The PBDThinTissueCut and PBDTissueCut examples can be a good first reference for using cutting.
PbdObjectCutting¶
Setting up a PBD cloth and a cut quad mesh one can configure PbdObjectCutting like so:
It could, for example, be hooked up to a key press g.
This also works for LineMesh meshes. Useful for ConnectiveTissue cutting.
PbdObjectTearing¶
PbdObjectBurning¶
RigidObjectLevelSetCollision¶
The RigidObjectLevelSetCollision can be used for material removal. It is good for bone sawing, burring and tooth milling actions where the object being removed from is static. It does this with the LevelSetModel in iMSTK, intended for movement of the levelset with a rigid body tool. It can be utilized like so:
It can further be modified with:
The femurObj here must be setup with a SignedDistanceField geometry provided to the LevelSetModel for initialization.
To visualize the SignedDistanceField one can volume render it or isosurface extract it every frame. Doing this every frame for a large image may be costly so iMSTK provides a LocalMarchingCubes operation that can be read about in the Filtering section of this documentation. It effectively chunks the image and only re-extracts modified portions of it.