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.
Improvements
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)
ObjectFactory
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.