Real-time multi-physics simulation with an emphasis on medical simulation.

Overview

SOFA, Simulation Open-Framework Architecture


Documentation Forum Gitter Contact

Introduction

SOFA is an open source framework primarily targeted at real-time simulation, with an emphasis on medical simulation.
It is mainly intended for the research community to help foster newer algorithms, but can also be used as an efficient prototyping tool.
SOFA's advanced software architecture allows:
(1) the creation of complex and evolving simulations by combining new algorithms with existing algorithms;
(2) the modification of key parameters of the simulation such as deformable behavior, surface representation, solvers, constraints, collision algorithm, etc. by simply editing an XML file;
(3) the synthesis of complex models from simpler ones using a scene-graph description;
(4) the efficient simulation of the dynamics of interacting objects using abstract equation solvers; and
(5) the comparison of various algorithms available in SOFA.

Installation

For up-to-date instructions, please refer to the SOFA documentation:
https://www.sofa-framework.org/documentation

Contribution

The SOFA community will be pleased to welcome you!
Find all the ways to get involved here: https://www.sofa-framework.org/community/get-involved/

Before creating any issue or pull request, please read carefully our CONTRIBUTING rules.

Information

Authors

See Authors.txt

License

SOFA is LGPL, except:

  • applications/projects (GPL)
  • applications/sofa (GPL)
  • applications/tutorials (GPL)
  • applications/plugins/OptiTrackNatNet (GPL)
  • applications/plugins/SofaPML (GPL)
  • applications/plugins/Registration (QPL)
  • sub-directories with a license file specifying a different license

LGPL refers to the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.

GPL refers to the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Contact information

[email protected]


SOFA, Simulation Open-Framework Architecture
(c) 2006 INRIA, USTL, UJF, CNRS, MGH

Comments
  • [SofaPython] ADD Improve data field in SofaPython

    [SofaPython] ADD Improve data field in SofaPython

    In createObject...

    When you given an object as argument instead of a string the binding convert it (with str). This is problematic in many cases eg. with a list it is converted with the bracket (ie: '[' ) and comma as separator.

    To resolve that I add a method that, if a list is passed as an argument, convert it as a string following the sofa style (without comma and bracket).

    CHANGELOG for @hugtalbot & @guparan : [SofaPython]: change the way createObject() handle its arguments to simplify scene writing + batch of tests.


    This PR:

    • [x] builds with SUCCESS for all platforms on the CI.
    • [x] does not generate new warnings.
    • [x] does not generate new unit test failures.
    • [x] does not generate new scene test failures.
    • [x] does not break API compatibility.
    • [x] is more than 1 week old (or has fast-merge label).

    Reviewers will merge only if all these checks are true.

    enhancement pr: status ready 
    opened by VannesteFelix 47
  • [PSDE] Derive input type from parent value

    [PSDE] Derive input type from parent value

    Hi,

    I love @sescaida's PythonScriptDataEngine, I find it extremely useful when you don't want to implement a whole component to perform very basic actions. Though I find it cumbersome to have to manually specify the type of the input/output datafields. While I have no idea (yet) how to fix this for the component's outputs, I implemented a small method to try to derive the input type from the linked value. We could also add scalar types to this method, to be able to handle passing scalar parameters directly from python. Also, I think it would make more sense to use directly the output of

    datafield->getValueTypeInfo()->name()
    

    instead of an arbitrary char when expliciting the datafield type in the PSDE factory.

    If you have any idea how I could do something similar for output fields, I'm taking any advice :)


    This PR:

    • [ ] builds with SUCCESS for all platforms on the CI.
    • [ ] does not generate new warnings.
    • [ ] does not generate new unit test failures.
    • [ ] does not generate new scene test failures.
    • [ ] does not break API compatibility.
    • [ ] is more than 1 week old (or has fast-merge label).

    Reviewers will merge only if all these checks are true.

    enhancement issue: discussion pr: status to review 
    opened by marques-bruno 37
  • [All] Lifecycle update before v22.06

    [All] Lifecycle update before v22.06

    PointConstraint is removed. serr/sout/sendl are removed. A lot of headers will now trigger the SOFA_DISABLED_HEADER error if included.

    Please review, I may have done bad/brutal things.

    [ci-depends-on https://github.com/sofa-framework/Registration/pull/3] [ci-depends-on https://github.com/sofa-framework/SofaPython3/pull/268]


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: breaking pr: status ready pr: clean 
    opened by guparan 35
  • [SofaCore SofaConstraint] Update FreeMotionAnimationLoop so that it can compute a linearised version of the constraint force.

    [SofaCore SofaConstraint] Update FreeMotionAnimationLoop so that it can compute a linearised version of the constraint force.

    This PR diffs against the sofa-framework::issofa_constrainsolving branch until it has been merged into master.

    Objectives

    • Adjust FreeMotionAnimationLoop so that it is more faithful to the actual equations, most notably by allowing only one linearisation of the mappings within the time step.
    • Update the API in order to compute a linearised version of the constraint forces, in a similar fashion to what is done in the Compliant plugin.

    Requirements

    The following PR are required in order to build this

    • #484 ✔️
    • #450 ✔️
    • #452 ✔️
    • #456 ✔️

    For testing:

    • SOFA_USE_MASK must be deactivated, otherwise derivatives quantities ( velocity at contact points for example) are not propagated at all since all dofs are "masked" by default. After having a rather quick look, apparently the SOFA_USE_MASK impose some strict (undocumented) requirements (on top of other limitations like the fact that it does not support changes in the topology) about where in the time step the "apply" method of mappings is called.

    • There is a branch on my local fork that integrates all the requirements for testing that can be found at the following location fjourdes:insimo_freemotion_integration

    Changelog

    API Breaking

    [SofaCore]

    • ConstraintSolver can now define the VecId where the constraint lambdas and constraint correction are stored. Previously, these were fixed locations, usually VecId::externalForce() and VecId::dx(), but it could vary depending on the implementation of both the ConstraintSolver and the ConstraintCorrection API. Components can retrieve these locations when inspecting their ConstraintParams object which is usually a parameter of the API methods for constraint solving.
    • ConstraintParams contains the MultiMatrixDerivId that can be used by components related to the ConstraintSolver to retrieve the location of the constraint jacobian.
    • ConstraintResolution API constructor needs to be passed the number of lines that are involved in the solving of this constraint equation. The previous implementation was silently initializing this value to one. If that property has to modified because it depends on some other state variables of a concrete implementation of the ConstraintResolution, the setNbLines method has to be called to reflect it. Also added some getters/setters method.
    • BaseConstraintCorrection API separates the methods which computes the constraint displacement in motion space from the methods which apply it.
    • As result, factorized quite significantly the methods related to the ConstraintCorrection API
    • BaseConstraint API defines a storeLambda method which is used to store the result of the constraint force computation (stored in a BaseVector form) inside a dedicated state vector of a MechanicalState. Requires PR #456. This value can be used later on to discover the stiffness coming from the non linear mapping that result from it.
    • BaseMechanicalState resetConstraint and getConstraintJacobian methods need to be given a ConstraintParams to be able to retrieve the MatrixDerivId containing the constraint jacobian.
    • LinearSolver API
      • rename applyContactForce API method into applyConstraintForce. This method is no longer responsible for applying the corrective motion, but just to compute it.
      • buildComplianceMatrix API method needs to be passed a ConstraintParams so that concrete instances of LinearSolver can retrieve the MatrixDerivId that points to the constraint jacobian.

    FIX

    [SofaConstraint]

    • GenericConstraintSolver block gauss seidel can support arbitrary size of blocks. The previous implementation had an hard coded limit of 6 for the block size.

    UPDATES

    [SofaSimulationCore]

    • Adapted AnimateVisitor, MechanicalGetConstraintJacobianVisitor and MechanicalResetConstraintVisitor to the changes introduced in BaseMechanicalState API

    [SofaBaseMechanics]

    • MechanicalObject dynamically allocated state vectors are given a name and a owner like any other Data. As a result, these dynamic state vectors can be displayed by the GUI. Also adapted the code to the API changes introduced in BaseMechanicalState API

    [SofaMeshCollision]

    • Some contact mappers updateXfree() method were not calling applyJ and therefore were not propagating the free velocity towards contact dofs, resulting in segfault when solving constraints in velocity mode.

    [SofaConstraint]

    • GenericConstraintSolver accumulates the constraint lambdas towards independant dofs, so that non linear mappings can compute the geometric stiffness induced by the constraint forces from the previous time step.
    • FreeMotionAnimationLoop assembles mapping geometric stiffness when possible. It also uses a single mapping linearisation within the time step. The solving step becomes very similar to the one explained in the "Stable Constraints" paper, when the compliance of the constraint is equal to zero.
    • BilateralConstraintResolutionNDofs uses Eigen library to factorize a constraint block of arbitrary size using LDLT decomposition.
    • ConstraintAnimationLoop minor changes introduced to reflect API changes.

    [SofaMiscMapping]

    • DistanceMapping implements the applyJT method for MatrixDeriv types using the utility methods provided in #452

    [SofaGeneralAnimationLoop]

    • MultiStepAnimationLoop and MultiTagAnimationLoop : adapted code to reflect API change.

    ADD

    [SofaConstraint]

    • MappingGeometricStiffnessForceField can assemble the geometric stiffness of a mapping.
    • UniformConstraint defines a constraint with a uniform direction in the contact space, internally it represents an identity matrix. It computes the right hand side of constraint equations in velocity mode as rhs = phi / dt + dvfree, following the same calculus notation and derivation as the one explained in the "Stable Constraints" paper. In position mode the constraint rhs differs from the constraint rhs in velocity mode by a dt factor. rhs = phi + dvfree * dt which gives rhs = dxfree which is similar to what was done by the previous implementation.
    • ConstraintStoreLambdaVisitor which is used by the GenericConstraintSolver to store the lambda resulting from the constraint solving step into a specific location ( by default VecId::externalForce(), but a dynamic VecId can be used also)

    [Examples]

    • InextensiblePendulum.scn shows the benefits of the linearisation of the constraint force

    Remarks

    • MappingGeometricStiffnessForceField suffers the same limitation as any other forcefield, ie the mapping must be directly connected to the independant dofs, otherwise it would require an additional unsupported computation to project the mapped stiffness matrix into the space of the independant degrees of freedom. Multimappings support is not there, since it would probably require some adapatation in the API, so that it is easy to retrieve the stiffness block associated with each of the mapping parent dofs.

    • ContactMappers : It is (very) questionable to let contact mappers propagate the unconstrained dynamics solution vector towards contact dofs by calling updateXfree() since it will induce inconsistencies in mapping linearisation if the contact mappers are non linear, since contact mappings will therefore be linearised around the free motion configuration, and the rest being linearised around the configuration at the beginning of the time step. This PR does not address this problem which is left for future work. It arises only with non linear contact mappers (like the RigidContactMapper for instance), but this should be kept in mind.

    • LinearSolver API : As a general note, I believe the LinearSolver API is a bloated with virtual methods which are difficult to understand since they are not directly related to the computation / factorisation of a positive definite matrix, and are mostly optional especially for non assembled solver like CG. Most of the methods should reside in the ConstraintCorrection API, and concrete instance of ConstraintCorrection should be templated on the type of LinearSolver in my opinion, since it is the only objects that actually make use of these methods, and really what you want is to have access to the concrete type of Matrix and Vector used by the solver. Also from my understanding only LinearSolver instances that derive from MatrixLinearSolver implement these kind of methods, so maybe a first step would be to move them here.


    This PR:

    • [ ] builds with SUCCESS for all platforms on the CI.
    • [ ] does not generate new warnings.
    • [ ] does not generate new unit test failures.
    • [ ] does not generate new scene test failures.
    • [ ] does not break API compatibility.
    • [ ] is more than 1 week old (or has fast-merge label).

    Reviewers will merge only if all these checks are true.

    enhancement pr: breaking pr: status ready 
    opened by fjourdes 34
  • Fake change to investigate scene error on CI

    Fake change to investigate scene error on CI

    [ci-depends-on https://github.com/sofa-framework/SofaPython3/pull/309]


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status wip 
    opened by alxbilger 32
  • [SofaDenseSolver] Fix compilation with SOFA_FLOATING_POINT_TYPE as float

    [SofaDenseSolver] Fix compilation with SOFA_FLOATING_POINT_TYPE as float

    issue sofa-framework/sofa#2 Fix compilation when option SOFA_FLOATING_POINT_TYPE in CMake selected as float

    The problem arising when trying to compile with float was due to missing declaration from newmat external library. The library has been modified for sofa to use a #define SOFA_FLOAT in include.h However the SOFA_FLOAT was never defined for the extlib since the current procedure is to set CMake variable SOFA_FLOAT and SOFA_DOUBLE to 1. This was done anyway AFTER processing the cmake of the extlibs.

    Therefore, this pr moves the option for floating point type in sofa in the root CMakeLists and adds the #define for the newmat library to actually create the float type functions.


    This PR:

    • [x] builds with SUCCESS for all platforms on the CI.
    • [x] does not generate new warnings nor unit test failures.
    • [x] does not break existing scenes.
    • [x] does not break API compatibility.
    • [x] has been reviewed and agreed to be transitional.
    • [x] is more than 1 week old (or has fast-merge label).
    • [x] reports important changes in Changelog.

    Reviewers will merge only if all these checks are true.

    pr: fix pr: status ready 
    opened by FabienPean 32
  • [plugins] Add BeamAdapter as a new plugin

    [plugins] Add BeamAdapter as a new plugin

    BeamAdapter shall now be fetchable from SOFA CMake configuration


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status ready pr: new feature 
    opened by hugtalbot 31
  • [all] Fix the cause of failling test scenes (for a greener dashboard)

    [all] Fix the cause of failling test scenes (for a greener dashboard)


    This PR:

    • [x] builds with SUCCESS for all platforms on the CI.
    • [x] do generate LESS warnings.
    • [x] do generate LESS unit test failures.
    • [x] do generate LESS scene test failures.
    • [ ] does not break API compatibility.
    • [ ] is more than 1 week old (or has fast-merge label).

    Reviewers will merge only if all these checks are true.

    pr: fix pr: status to review 
    opened by damienmarchal 31
  • [Core] Convert warning to error in object factory

    [Core] Convert warning to error in object factory

    I converted the warning to an error in the following code of the ObjectFactor:

            if (isUserTemplateNameInTemplateList)
            {
                msg_warning(object.get()) << "Requested template '" << usertemplatename << "' "
                                          << "is not compatible with the current context. "
                                          << "Falling back to the first compatible template: '"
                                          << object->getTemplateName() << "'.";
            }
            else
            {
                msg_warning(object.get()) << "Requested template '" << usertemplatename << "' "
                                          << "cannot be found in the list of available templates [" << ss.str() << "]. "
                                          << "Falling back to default template: '"
                                          << object->getTemplateName() << "'.";
            }
    

    To me, this situation is to be taken into account more seriously than a warning.

    As failing template deduction is now an error, it leads to a lot of failing tests. I fixed them as well.

    I added unit tests for OglModel. I factorize the parse code from the 3 masses.


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: breaking pr: status ready pr: highlighted in next release 
    opened by alxbilger 27
  • [all] Add a WarningAndErrorAsTestFailure in most of the tests.

    [all] Add a WarningAndErrorAsTestFailure in most of the tests.

    Problem statement: Historically a lot of tests were implemented with the assumption that warning or error messages were tests failure. This assumption was problematic as it favor the testing of code paths that does not generate warning or errors instead of testing all the possible paths. To favor both valid and invalid paths this implicit behavior was remove and and made explicit using the ExpectMessage and MessageAsTestFailure raii's. In the process the old behavior of generating failure on errors was lost.

    The PR mix the two and:

    • restores this old behavior by default so a test that specify nothing will fail on warning and error.
    • but in addition, each tests class/function/bloc can now specify how a specific bloc can react to a message. This can be done using a new syntax taken inspired mimicking the one from gtest.
    • improve the way test failures about warning and error are reported: https://ci.inria.fr/sofa-ci/job/ubuntu_gcc-4.8_options/5074/testReport/junit/(root)/RigidRigidMappingTest_0/test_translation/

    Example:

    class MyTest : public Sofa_test<>
     
         /// This test will fail if a warning/error message is send because the test inherit from sofa_test
        void defaultTestBehavior()
        {
            ....
        }
    
        /// This test should generate failure if NO warning and NO Error message is emitted
        void catchingTestBehavior()
        {
            EXPECT_MSG_EMIT(Warning) ;
            EXPECT_MSG_EMIT(Error) ;
    
            mycomponent.load("atotallybrokenfile.txt")
        }
    
        /// By default test failure are catched from Sofa_test. This means that the information returned
        /// in the test failure are the location of the failure in Sofa_test.cpp:lineno
        /// This is why it is always better to explicitely specify the test behavior (possible the same as 
        /// the default one as it will report correct testname/line number information.  
        void noEmitTestBehavior()
        {
            EXPECT_MSG_NOEMIT(Warning) ;
            EXPECT_MSG_NOEMIT(Error) ;
        }
       
        /// Finally it is possible to narrow where the messages are expected using blocks...
        void complexTestBehavior()
        {
            /// Here is the default mode. 
            ....
            {
                /// We will report a failure is there no warning nor error emitted before the end of this block.  
                EXPECT_MSG_EMIT(Warning) ;
                EXPECT_MSG_EMIT(Error) ;
                ...
                { 
                    /// But this sub-part does not count... and it shouldn't emit a message. 
                    EXPECT_MSG_NOEMIT(Error) ;
                    .... 
               }
            }
        }
    

    This PR will generate a lot of new test failure... that are either real failure that deserve investigation or tests that was previously simply previously ignoring error & warning messages;

    CHANGELOG for @hugtalbot & @guparan :

    • TestMessageHandler.cpp implements a new & robust way to connect msg_* message to test failure
    • TestMessageHandler_test.cpp implements test for TestMessageHandler.
    • Sofa_test is updated to use the new TestMessageHandler where msg_error generates test failures
    • All the existing tests have been changed to use the new API & removed the old one.
    • MeshSTL.cpp replace a std:cerr by a msg_error so that FIX the corresponding failing test.
    • Message.cpp adds a way to convert message type to string.
    • updates externs/gtest to a fresh checkout.

    This PR:

    • [x] builds with SUCCESS for all platforms on the CI.
    • [ ] does not generate new warnings nor unit test failures. (This PR cannot do that...read my comment about that).
    • [x] does not break existing scenes.
    • [x] does not break API compatibility.
    • [x] has been reviewed and agreed to be transitional.
    • [x] is more than 1 week old.
    • [ ] #237 should fix most of the newly failing tests. #237 should be merged right after this PR.

    Reviewers will merge only if all these checks are true.

    enhancement pr: status ready 
    opened by damienmarchal 27
  • [All] auto-init/cleanup libraries

    [All] auto-init/cleanup libraries

    I am unsure this PR is correct, so it really needs a green light from others before merge.

    When trying to call std::exit in some plugin, I had a segfault in cleanup code similar to this one:

    // Detect missing cleanup() call.
    static const struct CleanupCheck
    {
        CleanupCheck() {
        }
        
        ~CleanupCheck() {
            if (core::isInitialized() && !core::isCleanedUp())
                helper::printLibraryNotCleanedUpWarning("SofaCore", "sofa::core::cleanup()"); // segfault
        }
    } check;
    

    In fact, most init.cpp files in SOFA have code similar to this one. In my case, MessageDispatcher::LoggerStream::~LoggerStream caused a call to MessageDispatcher::process which would then cause a segfault.

    What I don't understand is why the above code snipped does not simply cleanup() the library in the destructor, since the latter is being called while the library unloads and this is the last chance to actually clean things up, instead of (trying to) emit a warning while the whole program is being terminated.

    So unless there is a compelling reason to leave it this way (and I would really like to know it), I suggest the above to be changed to:

    static const struct CleanupCheck
    {
        CleanupCheck() {
            init();
        }
        
        ~CleanupCheck() {
            cleanup();
            // leaving the warning if for some reason cleanup failed
            if (core::isInitialized() && !core::isCleanedUp())
                helper::printLibraryNotCleanedUpWarning("SofaCore", "sofa::core::cleanup()");
        }
    } check;
    

    so that the library automatically init() and cleanup() upon dlopen/exit.

    This PR:

    • [ ] builds with SUCCESS for all platforms on the CI.
    • [ ] does not generate new warnings nor unit test failures.
    • [ ] does not break existing scenes.
    • [ ] does not break API compatibility.
    • [ ] has been reviewed and agreed to be transitional.
    • [ ] is more than 1 week old. Reviewers will merge only if all this checks are true.
    pr: revert(ed) 
    opened by maxime-tournier 26
  • [LinearAlgebra, LinearSolver.Direct] make getSubMatrixDim() compile-time constant

    [LinearAlgebra, LinearSolver.Direct] make getSubMatrixDim() compile-time constant

    In BTDLinearSolver, a lot of functions needed Index bsize = Matrix::getSubMatrixDim(d_blockSize.getValue()); ; consequently, d_blockSize.getValue was called a tremendous number of times (billions of time for 5000 steps in our case).

    It appeared that:

    • getSubMatrixDim(Index) is only implemented by BTDMatrix and BlockFullMatrix
    • it never really depended on its parameter (just returning BSIZE, which is a constant)
    • d_blockSize was never used in other cases

    So this PR:

    • reword getSubMatrixDim() without parameter, and make it compile-time constant
    • replace its usage in BTDLinearSolver
    • deprecate d_blockSize in BTDLinearSolver
    • add the compat layer (macros & stuff)

    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status to review pr: clean 
    opened by fredroy 1
  • [MultiThreading] Introduce ParallelTetrahedronFEMForceField

    [MultiThreading] Introduce ParallelTetrahedronFEMForceField

    Based on #3548

    Similar to ParallelHexahedronFEMForceField.

    addDForce and addKToMatrix are the parallelized functions. addForce is not parallelized. It would require to duplicate code from the base class. Hence a refactoring is needed for a proper implementation (in another PR). Note that addForce is usually not the bottleneck.

    Quick benchmarks show performances improvement on the provided example.

    I think there is still room for improvement in addDForce. But it would require a few changes in the base class. Instead of having a force vector for each task, I suggest to store only the force on the DoFs that have been visited during the task. I am not sure if it will bring more perfs improvements.

    In this PR, addKToMatrix is parallelized. It is not in ParallelHexahedronFEMForceField, but the same principle can be applied (in another PR).


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status to review pr: new feature pr: highlighted in next release 
    opened by alxbilger 2
  • [Core] Give threads a name on Windows

    [Core] Give threads a name on Windows

    This is to ease debugging by identifying threads managed by the task scheduler (Windows only). Source: https://learn.microsoft.com/en-us/visualstudio/debugger/how-to-set-a-thread-name-in-native-code?view=vs-2022

    image


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    enhancement pr: fast merge pr: status to review 
    opened by alxbilger 1
  • [Sofa.GUI] GUI libraries as plugins

    [Sofa.GUI] GUI libraries as plugins

    This was preliminary introduced in SofaGLFW/SofaImgui, where a new GUI is loaded at run-time Contrary to the batch/qt/headlessrecorder GUIs which are forcefully linked at compile-time through SofaGui, which could depend (or not) on Qt, etc according to the CMake config,

    SOFANG works already made all the different GUIs as independent libraries but ultimately the SofaGui was still present because of the fact that runSofa was still relying on this mechanism.

    Now :

    • Qt/Batch/HeadLessRecorder are loadable plugins and register themselves in the GUIManager, if loaded .
    • Batch is still forcefully loaded by runSofa ; otherwise it could be possible to run SOFA without any GUI (I am not against having this possibility tho)
    • SofaGui is officially deprecated 🎇

    Remarks:

    • after this PR, I would really like to move HeadlessRecorder in applications/plugins (either that in the "official" SOFA trunk) as it is only supported on Linux, needs X libs dev and I dont even know if people really uses it.
    • showing help will only show the help for the runSofa options not the ones introduced by the eventual plugins....

    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status to review pr: clean NG3: new-archi 
    opened by fredroy 1
  • [Core] Introduce parallel for each

    [Core] Introduce parallel for each

    The idea is to provide tools to write multithreaded code more efficiently. The functions introduced in this pull request allow to apply a function to a range in parallel. Unit tests are provided. The newly added functions are used as example in two places:

    • GenericConstraintSolver: the code is unique for both sequential and parallel execution
    • ParallelHexahedronFEMForceField: no ambiguity: the code is only for parallel execution. But nothing prevent to have a code supporting both sequential and parallel execution. But the component is not totally ready for a merge with HexahedronFEMForceField. Note that it avoids a lot of boilerplate code, hence reducing the complexity of the file.

    I think this will allow us to write more multithreaded code.

    In the back, the parallel loop uses a task scheduler and divides the number of elements in n ranges, where n corresponds to the number of threads in the task scheduler. This is to execute exactly n tasks, instead of m, if m is the number of elements. It avoids the overhead of creating a task for each element. It is more efficient when the number of elements is large.

    Benchmarks are yet to perform.


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    enhancement pr: status to review 
    opened by alxbilger 1
  • [FEM.Elastic] Fix unit tests warnings

    [FEM.Elastic] Fix unit tests warnings

    Only implicit type conversions


    By submitting this pull request, I acknowledge that
    I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).


    Reviewers will merge this pull-request only if

    • it builds with SUCCESS for all platforms on the CI.
    • it does not generate new warnings.
    • it does not generate new unit test failures.
    • it does not generate new scene test failures.
    • it does not break API compatibility.
    • it is more than 1 week old (or has fast-merge label).
    pr: status to review pr: clean 
    opened by alxbilger 0
Releases(v22.06.00)
  • v22.06.00(Aug 11, 2022)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v22.06/CHANGELOG.md#v220600 Diff with v21.12: https://github.com/sofa-framework/sofa/compare/v21.12...v22.06

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2019 Redistributable.
    2. Install Python 3.8 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers. Download and install Python 3.8 (amd64).
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0

       sudo apt install libopengl0
      
    2. Install Python 3.8 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.

       sudo apt install python3.8-dev python3-distutils
       curl -L https://bootstrap.pypa.io/pip/get-pip.py --output /tmp/get-pip3.py
       python3.8 /tmp/get-pip3.py
       python3.8 -m pip install --upgrade pip
       python3.8 -m pip install numpy scipy
      

    MacOS

    1. All core dependencies are included in the binaries.

    2. Install Python 3.8 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.

       brew install [email protected]
       python3.8 -m pip install numpy scipy
      

    Info for developers

    SOFA binaries were generated using the following libraries: | | Qt | Boost | Eigen | Python | pybind11 | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|--------|--------|-------|--------|----------|-------|--------|--------|---------|---------| | Windows | 5.12.8 | 1.71.0 | 3.3.7 | 3.8.10 | 2.6.2 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.8 | 1.71.0 | 3.3.7 | 3.8.10 | 2.6.2 | 2.1.0 | 1.2.11 | 1.6.37 | 8c | 4.1.0 | | MacOS | 5.12.8 | 1.76.0 | 3.4.0 | 3.8.10 | 2.6.2 | 2.2.0 | 1.2.11 | 1.6.37 | 9e | 4.3.0 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v22.06.00_Linux.run(329.32 MB)
    SOFA_v22.06.00_Linux.zip(431.19 MB)
    SOFA_v22.06.00_MacOS.zip(515.23 MB)
    SOFA_v22.06.00_Win64.exe(210.71 MB)
    SOFA_v22.06.00_Win64.zip(388.41 MB)
  • v21.12.00(Dec 16, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v21.12/CHANGELOG.md#v211200 Diff with v21.06: https://github.com/sofa-framework/sofa/compare/v21.06...v21.12

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. [OPTIONAL] Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers. Download and install Python 3.7 (amd64).
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0

       sudo apt install libopengl0
      
    2. [OPTIONAL] Install Python 3.8 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.

       sudo apt install python3.8-dev python3-distutils
       curl -L https://bootstrap.pypa.io/pip/get-pip.py --output /tmp/get-pip3.py
       python3.8 /tmp/get-pip3.py
       python3.8 -m pip install --upgrade pip
       python3.8 -m pip install numpy scipy
      

    MacOS

    1. All core dependencies are included in the binaries.

    2. [OPTIONAL] Install Python 3.9 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.

       brew install [email protected]
       python3.9 -m pip install numpy scipy
      

    Plugins

    Some plugins are now generating their own binaries :tada: To install a plugin, download and unzip it into the plugins folder of SOFA.

    If you want your plugin added to this list, feel free to contact us.

    Info for developers

    SOFA binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | pybind11 | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|--------|--------|-------|--------|----------|-------|--------|--------|---------|---------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 3.7.9 | 2.4.3 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.71.0 | 3.3.7 | 3.8.10 | 2.4.3 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.76.0 | 3.3.9 | 3.9.5 | 2.6.2 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v21.12.00_Linux.run(177.16 MB)
    SOFA_v21.12.00_Linux.zip(209.90 MB)
    SOFA_v21.12.00_MacOS.zip(305.73 MB)
    SOFA_v21.12.00_Win64.exe(124.85 MB)
    SOFA_v21.12.00_Win64.zip(170.47 MB)
  • v21.06.03(Dec 3, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v21.06/CHANGELOG.md#v210603 Diff with v21.06.02: https://github.com/sofa-framework/sofa/compare/v21.06.02...v21.06.03

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install numpy scipy

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.9 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.9 -m pip install numpy scipy

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | pybind11 | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|----------|----------|----------|------------|------------|---------|---------|------------|----------|---------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 3.7.9 | 2.4.3 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 3.7.5 | 2.4.3 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.76.0 | 3.3.7 | 3.9.5 | 2.6.2 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v21.06.03_Linux.zip(284.78 MB)
    SOFA_v21.06.03_MacOS.zip(393.09 MB)
    SOFA_v21.06.03_Win64.zip(255.13 MB)
  • v21.06.02(Oct 27, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v21.06/CHANGELOG.md#v210602 Diff with v21.06.01: https://github.com/sofa-framework/sofa/compare/v21.06.01...v21.06.02

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install numpy scipy

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.9 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.9 -m pip install numpy scipy

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | pybind11 | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|----------|----------|----------|------------|------------|---------|---------|------------|----------|---------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 3.7.9 | 2.4.3 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 3.7.5 | 2.4.3 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.76.0 | 3.3.7 | 3.9.5 | 2.6.2 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v21.06.02_Linux.zip(282.06 MB)
    SOFA_v21.06.02_MacOS.zip(393.15 MB)
    SOFA_v21.06.02_Win64.zip(254.99 MB)
  • v21.06.01(Oct 4, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v21.06/CHANGELOG.md#v210601 Diff with v21.06.00: https://github.com/sofa-framework/sofa/compare/v21.06.00...v21.06.01

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install numpy scipy

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.9 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.9 -m pip install numpy scipy

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | pybind11 | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|----------|----------|----------|------------|------------|---------|---------|------------|----------|---------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 3.7.9 | 2.4.3 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 3.7.5 | 2.4.3 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.76.0 | 3.3.7 | 3.9.5 | 2.6.2 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v21.06.01_Linux.zip(282.05 MB)
    SOFA_v21.06.01_MacOS.zip(393.01 MB)
    SOFA_v21.06.01_Win64.zip(254.98 MB)
  • v21.06.00(Jul 5, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v21.06/CHANGELOG.md#v210600 Diff with v20.12.03: https://github.com/sofa-framework/sofa/compare/v20.12.03...v21.06.00

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install numpy scipy

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.7 -m pip install numpy scipy

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | Glew | Zlib | libPNG | libJPEG | libTIFF | |----------------|----------|----------|----------|------------|----------|---------|-----------|----------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 3.7.9 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 3.7.5 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.76.0 | 3.3.7 | 3.7.9 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v21.06.00_Linux.run(220.66 MB)
    SOFA_v21.06.00_Linux.zip(281.88 MB)
    SOFA_v21.06.00_MacOS.dmg(255.83 MB)
    SOFA_v21.06.00_MacOS.zip(393.13 MB)
    SOFA_v21.06.00_Win64.exe(172.14 MB)
    SOFA_v21.06.00_Win64.zip(254.96 MB)
  • v20.12.03(May 17, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v20.12/CHANGELOG.md#v201203 Diff with v20.12.02: https://github.com/sofa-framework/sofa/compare/v20.12.02...v20.12.03

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy
    3. DEPRECATED
          Install Python 2.7 + Numpy + Scipy if you want to use the SofaPython plugin or any of its dependers.
          Download and install Python 2.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install "numpy < 1.17" "scipy < 1.3"

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install --upgrade pip && python3.7 -m pip install numpy scipy
    3. DEPRECATED
          Install Python 2.7 + Numpy + Scipy if you want to use the deprecated SofaPython plugin or any of its dependers.
          sudo apt install python2.7-dev python-pip
          python2.7 -m pip install --upgrade "pip < 21.0" && python2.7 -m pip install "numpy < 1.17" "scipy < 1.3"

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.7 -m pip install numpy scipy

    Python2 to Python3 migration

    SofaPython3 is now included in SOFA binaries. Thus, these Python2-related features remain disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python2 | Python3 | Glew | Zlib | libPNG | libJPEG | libTIFF | |-------------|----------|----------|---------|-----------|-----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 3.7.9 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 3.7.5 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.67.0 | 3.3.7 | 2.7.10 | 3.7.9 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.12.03_Linux.run(229.93 MB)
    SOFA_v20.12.03_Linux.zip(311.54 MB)
    SOFA_v20.12.03_MacOS.dmg(280.37 MB)
    SOFA_v20.12.03_MacOS.zip(417.83 MB)
    SOFA_v20.12.03_Win64.exe(178.28 MB)
    SOFA_v20.12.03_Win64.zip(281.47 MB)
  • v20.12.02(Mar 31, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v20.12/CHANGELOG.md#v201202 Diff with v20.12.01: https://github.com/sofa-framework/sofa/compare/v20.12.01...v20.12.02

    Required dependencies

    Windows

    1. Install Microsoft Visual C++ 2017 Redistributable.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          Download and install Python 3.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install numpy scipy
    3. DEPRECATED
          Install Python 2.7 + Numpy + Scipy if you want to use the SofaPython plugin or any of its dependers.
          Download and install Python 2.7 (amd64).
          Make sure to enable PIP installation and addition to PATH.
          Then, open a console and run python -V && python -m pip install "numpy < 1.17" "scipy < 1.3"

    Linux

    1. Install libopengl0
          sudo apt install libopengl0
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          sudo apt install python3.7-dev python3-pip
          python3.7 -m pip install --upgrade pip && python3.7 -m pip install numpy scipy
    3. DEPRECATED
          Install Python 2.7 + Numpy + Scipy if you want to use the deprecated SofaPython plugin or any of its dependers.
          sudo apt install python2.7-dev python-pip
          python2.7 -m pip install --upgrade "pip < 21.0" && python2.7 -m pip install "numpy < 1.17" "scipy < 1.3"

    MacOS

    1. All core dependencies are included in the binaries.
    2. OPTIONAL     Install Python 3.7 + Numpy + Scipy if you want to use the SofaPython3 plugin or any of its dependers.
          brew install [email protected]
          python3.7 -m pip install numpy scipy

    Python2 to Python3 migration

    SofaPython3 is now included in SOFA binaries. Thus, these Python2-related features remain disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python2 | Python3 | Glew | Zlib | libPNG | libJPEG | libTIFF | |-------------|----------|----------|---------|-----------|-----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 3.7.9 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 3.7.5 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.67.0 | 3.3.7 | 2.7.10 | 3.7.9 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.12.02_Linux.run(208.45 MB)
    SOFA_v20.12.02_Linux.zip(311.37 MB)
    SOFA_v20.12.02_MacOS.dmg(280.22 MB)
    SOFA_v20.12.02_MacOS.zip(417.71 MB)
    SOFA_v20.12.02_Win64.exe(158.30 MB)
    SOFA_v20.12.02_Win64.zip(281.30 MB)
  • v20.12.01(Mar 2, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/v20.12/CHANGELOG.md#v201201 Diff with v20.12.00: https://github.com/sofa-framework/sofa/compare/v20.12.00...v20.12.01

    WARNING: There is an issue with files order in this version on Windows (easy to fix).
    See https://www.sofa-framework.org/community/forum/topic/error-in-first-launch-of-sofa-after-installation/

    Required dependencies

    Windows

    • Install Microsoft Visual C++ 2017 Redistributable.
    • [optional] Install Python 3.7 (amd64) and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy
    • [deprecated] Install Python 2.7 (amd64) and Numpy if you want to use the SofaPython plugin or any of its dependers.
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy

    Linux

    • Install libopengl0 if it is not already in your system: sudo apt install libopengl0
    • [optional] Install Python 3.7 and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      sudo add-apt-repository ppa:deadsnakes
      sudo apt update
      sudo apt install libpython3.7 python3.7 python3-pip
      python3.7 -m pip install numpy

    MacOS

    • [optional] Install Python 3.7 and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      brew install [email protected]
      python3.7 -m pip install numpy

    Python2 to Python3 migration

    SofaPython3 is now included in SOFA binaries. Thus, these Python2-related features remain disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python2 | Python3 | Glew | Zlib | libPNG | libJPEG | libTIFF | |-------------|----------|----------|---------|-----------|-----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 3.7.9 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 3.7.5 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.67.0 | 3.3.7 | 2.7.10 | 3.7.9 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.12.01_Linux.run(208.54 MB)
    SOFA_v20.12.01_Linux.zip(311.37 MB)
    SOFA_v20.12.01_MacOS.dmg(280.22 MB)
    SOFA_v20.12.01_MacOS.zip(417.71 MB)
    SOFA_v20.12.01_Win64.exe(158.30 MB)
    SOFA_v20.12.01_Win64.zip(281.30 MB)
  • v20.12.00(Jan 29, 2021)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v2012 Diff with v20.06: https://github.com/sofa-framework/sofa/compare/v20.06.01...v20.12.00

    Required dependencies

    Windows

    • Install Microsoft Visual C++ 2017 Redistributable.
    • [optional] Install Python 3.7 (amd64) and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy
    • [deprecated] Install Python 2.7 (amd64) and Numpy if you want to use the SofaPython plugin or any of its dependers.
      Make sure to enable PIP installation and addition to PATH.
      Then, open a console and run python -V && python -m pip install numpy

    Linux

    • Install libopengl0 if it is not already in your system: sudo apt install libopengl0
    • [optional] Install Python 3.7 and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      sudo add-apt-repository ppa:deadsnakes
      sudo apt update
      sudo apt install libpython3.7 python3.7 python3-pip
      python3.7 -m pip install numpy

    MacOS

    • [optional] Install Python 3.7 and Numpy if you want to use the SofaPython3 plugin or any of its dependers.
      brew install [email protected]
      python3.7 -m pip install numpy

    Python2 to Python3 migration

    SofaPython3 is now included in SOFA binaries. Thus, these Python2-related features remain disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python2 | Python3 | Glew | Zlib | libPNG | libJPEG | libTIFF | |-------------|----------|----------|---------|-----------|-----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 3.7.9 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 3.7.5 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.12.6 | 1.67.0 | 3.3.7 | 2.7.10 | 3.7.9 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.12.00_Linux.run(137.49 MB)
    SOFA_v20.12.00_Linux.zip(170.07 MB)
    SOFA_v20.12.00_MacOS.dmg(142.14 MB)
    SOFA_v20.12.00_MacOS.zip(163.83 MB)
    SOFA_v20.12.00_Win64.exe(97.65 MB)
    SOFA_v20.12.00_Win64.zip(154.05 MB)
  • v20.06.01(Aug 4, 2020)

    Changes

    Changelog: https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v2006 Diff with v20.06.00: https://github.com/sofa-framework/sofa/compare/v20.06.00...v20.06.01

    Required dependencies

    Windows

    Install Microsoft Visual C++ 2017 Redistributable. [optional] Install Python 2.7 (amd64) if you want to use the SofaPython plugin or any of its dependers. Make sure it is accessible in your system PATH.

    Linux

    All dependencies should be included.

    MacOS

    All dependencies should be included.

    Python2 to Python3 migration

    Including SofaPython3 in SOFA binaries is still a work in progress. In the meantime, in this release, all soft dependencies to SofaPython (Python2) have been disabled in order to ease the future integration of SofaPython3. Thus, these Python2-related features are disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    If you really need these features, you can get a legacy version of the binaries here.

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | Glew | Zlib | libPNG | libJPEG | libTIFF | |-----------------|----------|----------|---------|----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.11.1 | 1.67.0 | 3.3.7 | 2.7.10 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.06.01_Linux.run(208.52 MB)
    SOFA_v20.06.01_Linux.zip(311.07 MB)
    SOFA_v20.06.01_MacOS.dmg(286.86 MB)
    SOFA_v20.06.01_MacOS.zip(295.90 MB)
    SOFA_v20.06.01_Win64.exe(156.73 MB)
    SOFA_v20.06.01_Win64.zip(260.61 MB)
  • v20.06.00(Jul 3, 2020)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v2006

    Required dependencies

    Windows

    Install Microsoft Visual C++ 2017 Redistributable. [optional] Install Python 2.7 (amd64) if you want to use the SofaPython plugin or any of its dependers. Make sure it is accessible in your system PATH.

    Linux

    All dependencies should be included.

    MacOS

    All dependencies should be included.

    Python2 to Python3 migration

    Including SofaPython3 in SOFA binaries is still a work in progress. In the meantime, in this release, all soft dependencies to SofaPython (Python2) have been disabled in order to ease the future integration of SofaPython3. Thus, these Python2-related features are disabled: | In the C++ API | In the Python2 API | |-----------------|----------| | SofaTest/Python_test | SofaTest.Macro | SofaExporter/Binding_OBJExporter
    SofaExporter/Binding_STLExporter | | | Compliant/mapping/PythonMultiMapping
    Compliant/python/Binding_AssembledSystem | Compliant.Control
    Compliant.Frame
    Compliant.Rigid
    Compliant.Script
    Compliant.sml
    Compliant.Tools
    Compliant.Vec
    Compliant.future
    Compliant.StructuralAPI | | image/python/Binding_ImageData | SofaImage.API |

    If you really need these features, you can get a legacy version of the binaries here.

    Info

    Binaries were generated using the following libraries: | . | Qt | Boost | Eigen | Python | Glew | Zlib | libPNG | libJPEG | libTIFF | |-----------------|----------|----------|---------|----------|---------|----------|----------|---------|----------| | Windows | 5.12.6 | 1.69.0 | 3.3.7 | 2.7.17 | 1.13 | 1.2.8 | 1.6.18 | 6b | 4.0.9 | | Linux | 5.12.6 | 1.67.0 | 3.3.4 | 2.7.17 | 2.0.0 | 1.2.11 | 1.6.34 | 8c | 4.0.9 | | MacOS | 5.11.1 | 1.67.0 | 3.3.7 | 2.7.10 | 2.1.0 | 1.2.11 | 1.6.36 | 9c | 4.0.10 |

    Source code(tar.gz)
    Source code(zip)
    SOFA_v20.06.00_Linux.run(212.66 MB)
    SOFA_v20.06.00_Linux.zip(318.66 MB)
    SOFA_v20.06.00_MacOS.dmg(290.30 MB)
    SOFA_v20.06.00_MacOS.zip(299.42 MB)
    SOFA_v20.06.00_Win64.exe(158.15 MB)
    SOFA_v20.06.00_Win64.zip(263.06 MB)
  • v19.12.00(Jan 20, 2020)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1912

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 (amd64) is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    All dependencies are included.

    MacOS

    All dependencies are included.

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.13 | 2.7.12 | 2.7.10 Boost | 1.64.0 | 1.58.0 | 1.67.0 Qt | 5.9.1 | 5.12.2 | 5.11.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.36 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.10

    Source code(tar.gz)
    Source code(zip)
    SOFA_v19.12.00_Linux.run(142.16 MB)
    SOFA_v19.12.00_Linux.zip(178.13 MB)
    SOFA_v19.12.00_MacOS.dmg(144.60 MB)
    SOFA_v19.12.00_MacOS.zip(157.40 MB)
    SOFA_v19.12.00_Win64.exe(99.09 MB)
    SOFA_v19.12.00_Win64.zip(141.09 MB)
  • v19.06.01(Jul 26, 2019)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1906

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 (amd64) is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    All dependencies are included.

    MacOS

    All dependencies are included.

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.13 | 2.7.12 | 2.7.10 Boost | 1.64.0 | 1.58.0 | 1.67.0 Qt | 5.9.1 | 5.12.2 | 5.11.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.36 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.10

    Source code(tar.gz)
    Source code(zip)
    SOFA_v19.06.01_Linux.run(141.85 MB)
    SOFA_v19.06.01_Linux.zip(177.49 MB)
    SOFA_v19.06.01_MacOS.dmg(147.74 MB)
    SOFA_v19.06.01_MacOS.zip(153.03 MB)
    SOFA_v19.06.01_Win64.exe(121.41 MB)
    SOFA_v19.06.01_Win64.zip(174.54 MB)
  • v19.06.00(Jul 8, 2019)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1906

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 (amd64) is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    All dependencies are included.

    MacOS

    All dependencies are included.

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.13 | 2.7.12 | 2.7.10 Boost | 1.64.0 | 1.58.0 | 1.67.0 Qt | 5.9.1 | 5.12.2 | 5.11.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.36 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.10

    Source code(tar.gz)
    Source code(zip)
    SOFA_v19.06.00_Linux.run(134.63 MB)
    SOFA_v19.06.00_Linux.zip(166.04 MB)
    SOFA_v19.06.00_MacOS.dmg(171.78 MB)
    SOFA_v19.06.00_MacOS.zip(177.14 MB)
    SOFA_v19.06.00_Win64.exe(121.41 MB)
    SOFA_v19.06.00_Win64.zip(174.54 MB)
  • v18.12.01(Feb 14, 2019)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1812

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    All dependencies are included.

    MacOS

    All dependencies are included.

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.15 Boost | 1.69.0 | 1.58.0 | 1.68.0 Qt | 5.11.3 | 5.10.1 | 5.10.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.36 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.10

    Source code(tar.gz)
    Source code(zip)
    SOFA_v18.12.01_Linux.run(137.77 MB)
    SOFA_v18.12.01_MacOS.dmg(137.22 MB)
    SOFA_v18.12.01_Win32.exe(85.46 MB)
    SOFA_v18.12.01_Win64.exe(91.61 MB)
  • v18.12.00(Jan 22, 2019)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1812

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    All dependencies are included.

    MacOS

    All dependencies are included.

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.15 Boost | 1.69.0 | 1.58.0 | 1.68.0 Qt | 5.11.3 | 5.10.1 | 5.10.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.36 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.10

    Source code(tar.gz)
    Source code(zip)
    SOFA_v18.12.00_Linux.run(137.89 MB)
    SOFA_v18.12.00_MacOS.dmg(137.19 MB)
    SOFA_v18.12.00_Win32.exe(85.20 MB)
    SOFA_v18.12.00_Win64.exe(91.26 MB)
  • v18.06.01(Oct 5, 2018)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1806

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    Run ldd --version and choose the package corresponding to your GLIBC version. All dependencies are included in the ZIP package. Python 2.7 is needed to use the SofaPython plugin.

    MacOS

    All dependencies are included in the DMG package. After install, to start runSofa, open a console and type
    /Applications/runSofa.app/Contents/MacOS/runSofa

    Info

    Binaries were generated using the following libraries:

    . | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.10 Boost | 1.64.0 | 1.58.0 | 1.67.0 Qt | 5.7.1 | 5.10.1 | 5.7.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.34 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.9

    Source code(tar.gz)
    Source code(zip)
    SOFA_v18.06.01_Linux-glibc_2.23.zip(176.09 MB)
    SOFA_v18.06.01_Linux-glibc_2.27.zip(269.15 MB)
    SOFA_v18.06.01_MacOS.dmg(121.09 MB)
    SOFA_v18.06.01_Win32.exe(105.33 MB)
    SOFA_v18.06.01_Win64.exe(111.81 MB)
  • v18.06.00(Jul 18, 2018)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1806

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is needed to use the SofaPython plugin. Make sure it is accessible in the system PATH.

    Linux

    Run ldd --version and choose the package corresponding to your GLIBC version. All dependencies are included in the ZIP package. Python 2.7 is needed to use the SofaPython plugin.

    MacOS

    All dependencies are included in the DMG package. After install, to start runSofa, open a console and type
    /Applications/runSofa.app/Contents/MacOS/runSofa

    Info

    Binaries were generated using the following libraries:

      | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.10 Boost | 1.64.0 | 1.58.0 | 1.67.0 Qt | 5.7.1 | 5.10.1 | 5.7.1 Glew | 1.13 | 1.13.0 | 2.1.0 Zlib | 1.2.8 | 1.2.8 | 1.2.11 libPNG | 1.6.18 | 1.2.54 | 1.6.34 libJPEG | 6b | 8.0.2 | 9c libTIFF | 4.0.9 | 5.2.4 | 4.0.9

    Source code(tar.gz)
    Source code(zip)
    SOFA_v18.06.00_Linux-glibc_2.23.zip(176.66 MB)
    SOFA_v18.06.00_Linux-glibc_2.27.zip(270.67 MB)
    SOFA_v18.06.00_MacOS.dmg(121.08 MB)
    SOFA_v18.06.00_Win32.exe(105.82 MB)
    SOFA_v18.06.00_Win64.exe(112.36 MB)
  • v17.12.02(May 24, 2018)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1712

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is also needed to use the SofaPython plugin. Make sure it is accessible in your PATH.

    Linux

    Make sure you have Qt5 on your system. sudo apt install qt5-default libqt5opengl5-dev will install all required Qt5 deps. Python 2.7 is also needed to use the SofaPython plugin.

    MacOS

    All dependencies are already included in the DMG package. After install, to start runSofa, open a console and type
    /Applications/runSofa.app/Contents/MacOS/runSofa

    Info

    Binaries were generated using the following library versions:

    lib | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.10 Boost | 1.64 | 1.58 | 1.64 Qt | 5.7.1 | 5.5.1 | 5.7.1 Glew | 1.13 | 1.13 | 2.0 Zlib | 1.2.8 | 1.2.8 | 1.2.8 libPNG | 1.6.18 | 1.2.54 | 1.6.31 libJPEG | 6b | 8.0.2 | 9b libTIFF | 4.0.9 | 4.0.6 | 4.0.8

    Source code(tar.gz)
    Source code(zip)
    SOFA_v17.12.02_Linux.zip(147.91 MB)
    SOFA_v17.12.02_MacOS.dmg(121.11 MB)
    SOFA_v17.12.02_Win32.exe(74.92 MB)
    SOFA_v17.12.02_Win64.exe(79.55 MB)
  • v17.12.01(Apr 6, 2018)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1712

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is also needed to use the SofaPython plugin. Make sure it is accessible in your PATH.

    Linux

    Make sure you have Qt5 on your system. sudo apt install qt5-default libqt5opengl5-dev will install all required Qt5 deps. Python 2.7 is also needed to use the SofaPython plugin.

    MacOS

    All dependencies are already included in the DMG package. After install, to start runSofa, open a console and type
    /Applications/runSofa.app/Contents/MacOS/runSofa

    Info

    Binaries were generated using the following library versions:

    lib | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.10 Boost | 1.64 | 1.58 | 1.64 Qt | 5.7.1 | 5.5.1 | 5.7.1 Glew | 1.13 | 1.13 | 2.0 Zlib | 1.2.8 | 1.2.8 | 1.2.8 libPNG | 1.6.18 | 1.2.54 | 1.6.31 libJPEG | 6b | 8.0.2 | 9b libTIFF | 4.0.9 | 4.0.6 | 4.0.8

    Source code(tar.gz)
    Source code(zip)
    SOFA_v17.12.01_Linux.zip(144.20 MB)
    SOFA_v17.12.01_MacOS.dmg(113.06 MB)
    SOFA_v17.12.01_Win32.exe(75.53 MB)
    SOFA_v17.12.01_Win64.exe(80.21 MB)
  • v17.12.00(Feb 6, 2018)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1712

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015. Python 2.7 is also needed to use the SofaPython plugin. Make sure it is accessible in your PATH.

    Linux

    Make sure you have Qt5 on your system. sudo apt install qt5-default libqt5opengl5-dev will install all required Qt5 deps. Python 2.7 is also needed to use the SofaPython plugin.

    MacOS

    All dependencies are already included in the DMG package. After install, to start runSofa, open a console and type
    /Applications/runSofa.app/Contents/MacOS/runSofa

    Info

    Binaries were generated using the following library versions:

    lib | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Python | 2.7.12 | 2.7.12 | 2.7.10 Boost | 1.64 | 1.58 | 1.64 Qt | 5.7.1 | 5.5.1 | 5.7.1 Glew | 1.13 | 1.13 | 2.0 Zlib | 1.2.8 | 1.2.8 | 1.2.8 libPNG | 1.6.18 | 1.2.54 | 1.6.31 libJPEG | 6b | 8.0.2 | 9b libTIFF | 4.0.9 | 4.0.6 | 4.0.8

    Source code(tar.gz)
    Source code(zip)
    SOFA_v17.12.00_Linux.zip(144.19 MB)
    SOFA_v17.12.00_MacOS.dmg(113.07 MB)
    SOFA_v17.12.00_Win32.exe(75.53 MB)
    SOFA_v17.12.00_Win64.exe(80.21 MB)
  • v17.06(Oct 12, 2017)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1706

    Required dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2015.

    Linux

    Make sure you have Qt5 on your system. For instance, execute the following command for Ubuntu/Debian: sudo apt-get install qt5-default libqt5opengl5-dev sudo apt-get install freeglut3 (if necessary)

    MacOS

    All dependencies are already included in the DMG package.

    Info

    Binaries were generated using the following library versions:

    lib | Windows | Linux | MacOS --- | :-------: | :-------: | :-------: Boost | 1.64 | 1.58 | 1.64 Qt | 5.7.1 | 5.5.1 | 5.7.1 Glew | 1.13 | 1.13 | 2.0 Zlib | 1.2.8 | 1.2.8 | 1.2.5 libPNG | 1.6 | 1.2.54 | 1.6.29

    Source code(tar.gz)
    Source code(zip)
    SOFA_v17.06_Linux.zip(138.20 MB)
    SOFA_v17.06_MacOS.dmg(182.36 MB)
    SOFA_v17.06_Win32.exe(72.74 MB)
    SOFA_v17.06_Win64.exe(77.30 MB)
  • v16.12(Jan 27, 2017)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1612

    Dependencies

    Windows

    Install the Visual C++ Redistributable Packages for Visual Studio 2013.

    For information, binaries were generated using the following library versions:

    • boost 1.59
    • Qt 5.7
    • GLEW 1.2.3
    • zlib 1.2.7
    • libpng-1.2.6

    Linux

    Make sure you have Qt5 on your system. For instance, execute the following command for Ubuntu/Debian: sudo apt-get install qt5-default libqt5opengl5-dev sudo apt-get install freeglut3 (if necessary)

    For information, binaries were generated using the following library versions:

    • boost 1.54
    • Qt 5.4.1
    • GLEW 1.10.0
    • zlib 1.2.8
    • libpng-1.2.6

    MacOS

    All dependencies are already included in the DMG package.

    For information, binaries were generated using the following library versions:

    • boost 1.63
    • Qt 5.6.2
    • GLEW 2.0.0
    • zlib 1.2.5
    • libpng-1.6.28
    Source code(tar.gz)
    Source code(zip)
    Sofa-16.12-Linux.zip(137.72 MB)
    Sofa-16.12-MacOS.dmg(212.60 MB)
    Sofa-16.12-win32.exe(84.49 MB)
    Sofa-16.12-win64.exe(91.16 MB)
  • v16.08(Aug 5, 2016)

    Changelog

    https://github.com/sofa-framework/sofa/blob/master/CHANGELOG.md#v1608

    Dependencies

    Windows

    Make sure you have Qt5 on your system or download qt-everywhere-opensource-src-5.5.1 Download the Visual C++ Redistributable for Visual Studio 2015: VC-redist.x86.exe VC-redist.x64.exe

    Linux

    Make sure you have Qt5 on your system. For instance, execute the following command for Ubuntu/Debian: sudo apt-get install qt5-default qttools5-dev-tools libqt5opengl5-dev sudo apt-get install freeglut3 (if necessary)

    MacOS

    All dependencies are already included in the DMG package.

    Source code(tar.gz)
    Source code(zip)
    Sofa-16.08-Linux.zip(122.07 MB)
    Sofa-16.08-MacOS.dmg(200.19 MB)
    Sofa-16.08-win32.zip(103.46 MB)
    Sofa-16.08-win64.zip(110.51 MB)
  • v15.12(Aug 5, 2016)

    Dependencies

    Windows

    Make sure you have Qt5 on your system or download qt-everywhere-opensource-src-5.5.1 Download the Visual C++ Redistributable for Visual Studio 2015: VC-redist.x86.exe

    Linux

    Make sure you have Qt5 on your system. For instance, execute the following command for Ubuntu/Debian: sudo apt-get install qt5-default qttools5-dev-tools libqt5opengl5-dev sudo apt-get install freeglut3 (if necessary)

    MacOS

    All dependencies are already included in the DMG package.

    Source code(tar.gz)
    Source code(zip)
    Sofa-15.12-Darwin.dmg(178.38 MB)
    Sofa-15.12-Linux.tar.gz(117.94 MB)
    Sofa-15.12-win32.zip(98.83 MB)
C++ library for multi-physics simulation

Project CHRONO Project Chrono represents a community effort aimed at producing a physics-based modelling and simulation infrastructure based on a plat

null 1.6k Jan 6, 2023
Box2D is a 2D physics engine for games

Build Status Box2D Box2D is a 2D physics engine for games. Contributing Please do not submit pull requests with new features or core library changes.

Erin Catto 6.1k Jan 7, 2023
A fast and lightweight 2D game physics library.

NEW IN CHIPMUNK 7 Chipmunk 7 is complete and now includes the ARM NEON optimizations, the autogeometry code, and the mulithreaded solver. The latest p

Scott Lembcke 1.9k Dec 30, 2022
2D physics engine for games

LiquidFun Version 1.1.0 Welcome to LiquidFun! LiquidFun is a 2D physics engine for games. Go to our landing page to browse our documentation and see s

Google 4.5k Jan 5, 2023
High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton.

Simbody Simbody is a high-performance, open-source toolkit for science- and engineering-quality simulation of articulated mechanisms, including biomec

Simbody Project 2k Dec 25, 2022
Natively multithreaded physics for threejs with PhysX.

Three-Physx Natively multithreaded physics for threejs with PhysX and an easy interface. Credit to Milkshake inc, physx-js, three-ammo, three-to-canno

XR Foundation 12 Jun 6, 2022
Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK This is the official C++ source code repository of the Bullet Physics SDK: real-time collision detection and multi-physics simulati

Bullet Physics SDK 10.1k Jan 7, 2023
Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

Bullet Physics SDK 10.1k Jan 7, 2023
A minimalist library with basic facilities for developing interactive real-time 3D applications, with a strong emphasis on simplicity and ease of use.

SlimEngine A minimalist and platform-agnostic base project for interactive graphical applications (2D/3D) with a strong emphasis on simplicity, ease o

Arnon Marcus 67 Oct 29, 2022
iMSTK - Interactive Medical Simulation Toolkit

iMSTK - Interactive Medical Simulation Toolkit About Overview Participants Licensing Resources Documentation Discourse Issue tracker Prerequisites Get

Kitware, Inc. 14 Nov 22, 2022
C++ library for multi-physics simulation

Project CHRONO Project Chrono represents a community effort aimed at producing a physics-based modelling and simulation infrastructure based on a plat

null 1.6k Jan 6, 2023
C++ library for multi-physics simulation

Project Chrono represents a community effort aimed at producing a physics-based modelling and simulation infrastructure based on a platform-independent, open-source design.

null 1.6k Dec 29, 2022
Improved version of real-time physics engine that couples FEM-based deformables and rigid body dynamics

Enhanced version of coupled FEM and constrained rigid body simulation Description This little playground aimed to test our Conjugate Gradients based M

Andrey Voroshilov 25 Apr 11, 2022
Real-time oriented physics engine and library that's currently best suited for 2D games.

PlayRho A way to play with physical behaviors like the conservation of momentum. PlayRho is a real-time oriented physics engine and library that's cur

Louis Langholtz 94 Nov 25, 2022
This is a demonstration repository for The Pitt Challenge project about medical image compression.

Image Compression for Portable Medical Records This is a demonstration repository for The Pitt Challenge project about medical image compression. Back

null 3 Oct 24, 2021
the implementations of 'Parzen-Window Based Normalized Mutual Information for Medical Image Registration'

ImageRegistration_NormalisedMutualInformation 代码复现论文《Parzen-Window Based Normalized Mutual Information for Medical Image Registration》 利用归一化互信息对医学图像进行

gtc1072 3 Apr 4, 2022
Overlay Microsoft Flight Simulator (FS2020) aircraft data onto real airport charts in real-time

FLIGHTSIM CHARTS Introduction Overlay Microsoft Flight Simulator (FS2020) aircraft data onto real airport charts in real-time. Instantly teleport to a

Scott Vincent 3 May 31, 2022
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation

Build Type Linux MacOS Windows Build Status OpenPose has represented the first real-time multi-person system to jointly detect human body, hand, facia

null 25.6k Dec 29, 2022
R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.

R2LIVE is a robust, real-time tightly-coupled multi-sensor fusion framework, which fuses the measurement from the LiDAR, inertial sensor, visual camera to achieve robust, accurate state estimation.

HKU-Mars-Lab 602 Jan 5, 2023