SOFA v22.12


What’s new in SOFA v22.12

Plugin: SofaUnity-Renderer

This new GPL plugin is a Unity3D package allowing to render a SOFA simulation scene inside Unity3D. All SOFA VisualModel components present in the loaded simulation will be rendered inside Unity3D engine as GameObject with a MeshFilter. It therefore becomes possible to combine Unity3D assets with a SOFA simulation!

For more, contact and collaborate with InfinyTech3D.

New method in the GenericConstraintSolver

Implemented by ICube researchers, the Non-smooth Non-linear Conjugate Gradient (NNCG) is added as an alternative to the Projective Gauss Seidel (PGS) as NLCP solver in the GenericConstraintSolver.

The PR #3053 introduces a Data resolutionMethod with the following options: “ProjectedGaussSeidel”, “UnbuiltGaussSeidel” or “NonsmoothNonlinearConjugateGradient” and 3 associated examples are provided for each option.

The documentation of the GenericConstraintSolver has also been added updated.


Topological change API

In collaboration with KIT, InfinyTech3D extensively worked on the API for topological changes in SOFA and the associated tests.
Change in Topology components

  • PR #2993: [Topology.Container.Dynamic] Fix duplicate Data Points in PointSetTopologyContainer
  • PR #3216: [Topology] Fix initTopology call chains for mesh without topology
  • PR #3368: [Topology] Add fonction in BaseMeshTopology to compute all topology containers
  • PR #3428: [core.topology] Add mechanism in mapping to check checkTopologyInputTypes

Change in Topology modifers

  • PR #3271: [Topology] Improve TopologyHandler registration
  • PR #3330: [Topology] Fix internal infinite update loop in TopologySubsetData remove process
  • PR #3369: [Topology] Fix topologyHandler removal
Introduction of user-defined literals

So far, the definition of literals for SReal constants was either ugly or not possible. In the never-ending quest of eradicating implicit type conversion, the PR #3314 introduces a user-defined literal.
It is now possible to write: Vector3(1_sreal, 1_sreal, 1_sreal)


Using the header-only difflib external library introduced in PR #3042, ObjectFactory now suggests component spelling when a component cannot be created. An nice assistance when designing a simulation!

In addition, PR #3404 converts the warning to an error in the code checking if the given template belongs to list of allowed templates. As failing template deduction is now an error, this PR may lead to so-far-undetected failures.

Breaking changes

In the framework:

  • [Core] Finally disable deprecated code in BaseData and ExectParam’s Aspects #3279
  • [Core] Remove memory leaks #3183
  • [Simulation] Separate factory code from TaskScheduler #3480
  • [all] Replace all Vector2, Vector3, Vector4 by their short name alias Vec2, Vec3 #3299

In the modules:

  • [Constraint.Lagrangian] Create data links in ConstraintCorrection for linear solver #3152
  • [Constraint.Lagrangian] Fix BilateralInteractionConstraint double init and clean some Data #3327
  • [Constraint.Lagrangian.Solver] Deprecate MechanicalAccumulateConstraint #3393
  • [LinearSolver] Create data links for preconditioners and ShewchukPCGLinearSolver #3155

Reminder – a documentation on transition is available to help you understand the changes and update your code further to the SOFA-NG project.

Find all the breaking pull-requests introduced in this release.

Plugin: BeamAdapter

Many improvements have recently been made in the BeamAdapter plugin:

  • BeamSection & WireSectionMaterial are introduced to make clearer what defines respectively the geometric and the mechanical beam properties
  • a new Controller is also introduced in order to read/write mode to replay simulation controls of the beam
  • many tests have also been added and performances got significantly improved
  • the feature of loading a specific tip geometry has been fixed!

A big thanks to LNRobotics and InfinyTech3D.

Plugin: Tearing

Proposed by InfinyTech3D, this plugin implements a tearing method which supports by default triangular surfaces. Volume tearing on tetrahedral mesh need a second plugin called MeshRefinement and is still work in progress. To contribute in the project or have access to the latest developments, do not hesitate to contact and collaborate with InfinyTech3D.


Plugin: SOFA-ROS2

This recent C++ plugin couples SOFA with the ROS2 environment. SOFA could already connect to ROS2 via a python interpreter but this plugins allows to create a direct connection between your SOFA simulation and the ROS2 environment.


SOFA v22.12 contributors

575 posts on GitHub Discussions
190 merged pull-requests
1198 clones of the repository
12 contributors on GitHub

Back to Top