What’s new in SOFA v25.12
Continuous collision detection (CCD) based on TightInclusion
Future work will focus on improving the broad-phase by replacing the current bounding box enlargement strategy with a swept-volume approach.
New GitHub-based continuous integration (CI)
The previous infrastructure for CI relied on Jenkins. It was decided to move to a GitHub-based management of the CI. The PR #5762 introduces this new workflow.
It can be noted that this new CI does not support Windows yet (still managed by Jenkins) since Windows does not support package providers, like apt or brew. As soon as the CI will be using Pixi (see #5252) is available, Windows will be tested there, making Conda the supported package provider for Windows.
Refactoring of scientific visualization
Several PR introduced the possibility to extract the rendering part from MechanicalObject into a dedicated component. With a new component, this feature will be available outside of a MechanicalObject. This will allow for a cleaning of the class MechanicalObject and for an improved scientific visualization. This work should continue, focusing on intrinsic mechanical data.
SoftRobots.Inverse added to the supported plugin
Thanks to the technical steering of the SOFA project, plugins can be added or removed from the officially-supported plugin stack. For this release, the SoftRobots.Inverse plugin has been added to the list, since it plays a key role for inverse modeling of soft robots.
Render your SOFA simulations in Blender
Sofa.BlenderToolbox is a toolkit designed to bridge the gap between SOFA simulations and Blender rendering. It allows you to export the movement of objects from a SOFA scene and import them into Blender as animations, enabling you to create stunning visualizations and high-quality renders.
Breaking changes
Main breaking changes are:
- [Lagrangian] Refactoring of GenericConstraintSolver #5666
- [Core] Rename Constraint to LagrangianConstraint #5472 & #5423
- [CollisionModel] Rename proximity data to contactDistance #5518
- [Lagrangian] Remove multigrid support in LCPConstraintSolver #5372
- [LinearSolver] Untangle linear solver and linear system #5648
- [Sofa.Simulation] Change event propagation pruning #5749
- [Type] Replace fixed_array with std::array #5632 & #5539
- [Core,StateContainer] Remove unused aliases #5576
- [Core] Replace raw pointer by SingleStateAccessor #5499
- [Core] Apply template method design pattern to CollisionModel::draw #5490
Find all the breaking pull-requests introduced in this release.


