What’s new in SOFA v26.06
Introduction of generic element-agnostic elasticity
This release introduces a modern, generic, and modular Finite Element Method (FEM) formulation for elasticity in SOFA (#5882). A single, unified codebase now enables the generation of elastic force field components for any element type and dimension, significantly improving code readability and maintainability. The implementation supports linear elasticity (both small strain and corotational approaches) and integrates seamlessly with existing workflows. The modular design ensures that the appropriate components are instantiated dynamically based on the topology, making it easier to align the code with theoretical equations.
Additionally, new element types are available such a pyramids and prisms elements (respectively, #6132 & #6062). CUDA-accelerated versions (#6071) of the elasticity components are now available in the SofaCUDA plugin, supporting both single and double precision for triangle and hexahedron elements.
Introduce multi-staged collision pipeline
Aliases are implemented for compatibility, a warning is now issued if no collision models are handled by any pipeline, ensuring better debugging and user awareness.
This work also provides new examples to demonstrate the flexibility and power of the multi-pipeline approach.
Mapping graph visitors
This release introduces a MappingGraph-based approach for core mechanical operations (#6087). The MappingGraph has been refactored to extract traversal logic into a dedicated MappingGraphAlgorithms class, with added support for parallel execution. A new feature enables exporting the mapping graph to DOT format for visualization, alongside comprehensive unit tests and documentation for the new graph-based traversal API. Benchmark results on scenes like TorusFall, fallingSOFA, and SofaScene demonstrate efficient performance.
This update also unlocks support for mapped masses in EulerExplicitSolver, a critical step toward full mapped mass compatibility.
SofaPython3 – Advanced examples
Several interesting examples have been added to the SofaPython3 plugin:
- Introduce rigidification (#625): this is especially helpful when attaching rigid and soft parts together, or constraining the motion of some degrees of freedom based on a rigid frame
- New utility to manage units of your simulation (#622): this Python project provides a class defining the unit system of your scene while allowing the user to define each parameter in any units
- Couple SOFA and JAX (#557): this illustrates how to leverage JAX autodiff to implement the methods
addDForce()andaddKToMatrix()automatically - API has been extended to access SOFA as a server in RPyC remote procedure calls (#570)
- Integrate meshing steps within your SOFA Python scripts using CGAL or Gmsh (#567)
SofaCUDA is now a meta-plugin of two plugins
This change builds on previous GUI updates and enhances the plugin’s maintainability and scalability for future development.
Visualization in runSofa
Keyboard shortcuts and interactions changed in the new GUI. These have been updated in the documentation
Add pixi support
Pixi support is now available to streamline the development and continuous integration (CI) workflow (#5252). Pixi provides a standardized, cross-platform method for new developers to configure and build the project, ensuring consistency with other projects. It centralizes all dependencies in a single file, simplifies the activation of optional features, and includes a lock file to guarantee reproducible builds in CI environments.
Breaking changes
Main breaking changes are:
- [Core] Rename BaseObject to BaseComponent #5934
- [CMake] Remove Qt from all configurations #6072
- [SofaCUDA] move Qt-related code #5968
- [SofaCUDA] SofaCUDA is now a meta-plugin of two plugins: SofaCUDA.Core and SofaCUDA.Component #5973
- [SofaCUDA] GUI: create extension to use Sofa.GUI with SofaCUDA #5971
- [SofaCUDA] Reorganize files and components #5967
- [Helper] ScopedAdvancedTimer: add a compile-time check on string argument in macros #6036
Find all the breaking pull-requests introduced in this release.









