SOFA v25.12

download

What’s new in SOFA v25.12

Continuous collision detection (CCD) based on TightInclusion

The method computes the time of impact using an iterative root-finding approach applied to a third-order polynomial, as described in the referenced work. The implementation currently supports edge–edge and point–triangle continuous collision tests, which are sufficient for tetrahedral meshes, and is fully compatible with the existing broad-phase and narrow-phase collision detection pipelines. The CCD can be driven either by inertial motion or by the FreeMotion state.

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.

SOFA v25.12 contributors

372 posts on GitHub Discussions
193 merged pull-requests
4942 unique clones of the repository
18 contributors on GitHub

Back to Top