OpenSim 4.4 is available for download from the OpenSim Simtk project page.

We are pleased to announce the following new features, bug fixes, and other improvements in OpenSim 4.4. The new software includes improvements to the look and feel of the GUI visualizer, new Conda and Docker packages, additional Moco functionality with MocoOutputGoals, and performance improvements for models with muscle wrapping. Release notes are provided below along with links to full change logs for more detail.

Improvements to the GUI Visualizer:

  • We updated the color and lighting settings for a more realistic look.
  • When using one of the buttons to rotate to a default, axis-aligned view, the camera will now rotate and transition smoothly into the new view.
  • After selecting an object in the Visualizer Window, hitting the "F" key will focus the camera on the selected object.

Conda and Docker Packages:

  • We published Conda packages for OpenSim 4.4 (not including Moco) at This allows for a one line installation of OpenSim 4.4 and all its dependencies in a Conda environment, or for Jupyter notebooks that can be used online to access the OpenSim API in the browser.
  • We published Docker containers with OpenSim pre-built and installed at

Moco Functionality:

  • Improved flexibility of MocoOutputGoal. Added support for SimTK::Vec3 and SimTK::SpatialVec types, and support for custom integrand exponents. More details can be found on the MocoOutputGoal doxygen page.
  • Added additional Output Goals and Constraints: MocoInitialOutputGoal, MocoFinalOutputGoal, MocoOutputPeriodicityGoal, MocoOutputTrackingGoal, and MocoOutputConstraint. More details can be found on the related Doxygen pages linked with each new class.
  • Added an option to MocoCasADiSolver to enforce MocoPathConstraints at mesh interval midpoints when using Hermite-Simpson collocation (via the property 'enforce_path_constraint_midpoints'). This helps to resolve cases where path constraints would not be satisfied at all time points during a simulation.

Performance Improvements:

  • Improved simulation performance when using some models with wrapping surfaces when visualization is disabled.
  • Improved performance by improving how ComponentPath is used to retrieve state variable values. This improves simulation performance with some models, including the ToyDropLanding model.

Bug Fixes:


  • Fixed a bug with muscle wrapping that could cause issues with multithreading.
  • Fixed an issue with InverseKinematicsSolver bindings to restore full usage from MATLAB and Python APIs.
  • Fixed cases where bodies with unspecified or negative mass in a model would crash when used with some tools (e.g., ScaleTool).
  • Fixed an issue where the ordering of Coordinates in XML affects coordinate definitions for CustomJoints.
  • Fixed an issue where the ScaleTool would not update the optimal fiber length and tendon slack length properties for DeGrooteFregly2016Muscles.
  • In Moco, fixed an issue with MocoStudy::analyze() where equilibrium values for the DeGrooteFregly2016Muscle were not being reported correctly. Note that this did not affect simulation results.


  • Fixed several issues when visualizing muscle paths that contain multiple wrap objects or a mix of conditional path points and wrapping.
  • Fixed an issue where deleting forces from the external loads dialog would cause a crash.
  • Fixed an issue where some visuals would not update after editing properties for a Frame.
  • The "Undo" button now supports additional actions: "Show Mass Center" and "Show Axes".

Full list of changes and updates: