Cutting & Mesh Refinement

Project Description

This SOFA plugin allows to dynamically subdivide tetrahedra elements inside a mesh during the simulation. Different subdivision schemes are possible depending on which edges of the tetrahedron are divided.

Request access

Based on the study done in the paper “Data-driven Tetrahedral Mesh Subdivision (L. Rodríguez and I. Navazo and Á. Vinacua)”, 11 different scenarios have been implemented (See Figure 1). Then, depending on the input of the subdivision, concerned tetrahedra are identified and classified to one of the configurations and their adjacent tetrahedra are also updated to ensure the mesh topology coherence. The input subdivision can be either a full cut plan, an incision, a local or a global area to subdivide.


11 different configurations based on the number of split edges.

Tetrahedra classifications along a cutting plan.



  • Low level API (c++ methods) is available to manually subdivide a tetrahedron into one of the eleven configurations.
  • High level API through SOFA components:
    1. Possibility to refine a zone of the mesh from a set of indices or a bounding box, keeping the mesh topology coherence.
    2. Possibility to refine the full mesh in one shot.
    3. Local refinement can be coupled with collision detection to automatically refine the target area.
    4. Refinement can be coupled with cutting, i.e subdivided tetrahedra are split along the cutting plan.
    5. The cutting plan is defined by a direction, a width and a depth. This allows to simulate incision as well.
  • The plugin is compatible with GPU versions of SOFA simulations to improve simulation performances
  • New cut surfaces can be mapped into a new graph Node to add textures for example.
  • A mouse interaction is available inside the runSofa GUI to perform a cut.
  • Examples and tests are available inside the plugin.

Back to the plugin list

Related Projects

Back to Top