What’s new in SOFA v23.06
Cosserat needle insertion
The open-source Cosserat plugin models 1D beam using the Cosserat rod theory. This mechanical model computes the dynamics of the slender elements, interacting among themselves and with their environment. It is particularly well dedicated to the simulation of needles, catheters or wires. The plugin now includes open-source simulation examples modeling a needle insertion.
Read more about the with Cosserat plugin online.
New MatrixAssembly API
The former system assembly was presenting limitations, namely the absence of access to system matrices (M, B, K) for users, a complexified API, no indirect approach for the constraint resolution among others. A refactoring therefore started to overcome these limitations and this new matrix assembly API has been introduced in this release.
Read more about the new SOFA matrix assembly API online and see the python examples.
Plugin: Renderer for UnrealEngine5
The SofaUE5 plugin is a Unreal Engine 5 plugin allowing to render a SOFA simulation scene inside UE5. All SOFA VisualModel components present in the loaded simulation will be rendered inside UE5 engine as Actor with a GeneratedMesh instance. Experience your SOFA simulations using the UE5 rendering pipeline!
For more, contact and collaborate with InfinyTech3D.
Improvements
Examples easier to find!
Now, the examples/Component/ folder has been refactored in order to follow the recent SOFA module architecture. Using the same structure for the namespaces, the code and the examples makes it easier for users to:
- find an example
- find the associated RequiredPlugin
- deduce the #include when developing in SOFA
Better user experience
New changes will ease the design of your simulations:
- [all] Give reason when component cannot be created #3682
- [Core] Display flags spelling suggestion #3575
- [SceneChecking] Add check when setting contactStiffness uselessly #3843
- [Simulation] Suggest required plugin in the syntax of the scene loader #3799
New methods and data
For the collision detection, two interesting changes occured: one in the PenalityContactForceField allowing to account for its implicit contribution and the possibility to now access constraint forces in the same way in the LCPConstraintSolver and the GenericConstraintSolver. Note as well this post assisting on how to access the contact forces when using constraint resolution based on Lagrange multipliers.
Breaking changes
Main breaking changes are:
- [all] Lifecycle v23.06 #3634, #3649, #3654, #3655
- [Mapping] Adds template to RigidMapping #3680
- [MultiThreading] Factorize task scheduler user #3607
Reminder – a documentation on making the transition in your code further to the SOFA-NG project.
Find all the breaking pull-requests introduced in this release.