Version 2.1 (Oct. 18, 2021)

New features

  1. Keyframes now have mocap_pos and mocap_quat fields (mpos and quat attributes in the XML) allowing mocap poses to be stored in keyframes.

  2. New utility functions: mju_insertionSortInt (integer insertion sort) and mju_sigmoid (constructing a sigmoid from two half-quadratics).


  1. The pre-allocated sizes in the virtual file system (VFS) increased to 2000 and 1000, to allow for larger projects.

  2. The C structs in the mjuiItem union are now named, for compatibility.

  3. Fixed: mjcb_contactfilter type is mjfConFilt (was mjfGeneric).

  4. Fixed: The array of sensors in mjCModel was not cleared.

  5. Cleaned up cross-platform code (internal changes, not visible via the API).

  6. Fixed a bug in parsing of XML texcoord data (related to number of vertices).

  7. Fixed a bug in related to nkey (the number of keyframes).

  8. Accelerated collision detection in the presence of large numbers of non-colliding geoms (with contype==0 and conaffinity==0).


  1. Figure selection type changed from int to float.

  2. Figures now show data coordinates, when selection and highlight are enabled.

  3. Changed mjMAXUIMULTI to 35, mjMAXUITEXT to 300, mjMAXUIRECT to 25.

  4. Added collapsable sub-sections, implemented as separators with state: mjSEPCLOSED collapsed, mjSEPCLOSED+1 expanded.

  5. Added mjITEM_RADIOLINE item type.

  6. Added function mjui_addToSection to simplify UI section construction.

  7. Added subplot titles to mjvFigure.


  1. render_gl2 guards against non-finite floating point data in the axis range computation.

  2. render_gl2 draws lines from back to front for better visibility.

  3. Added function mjr_label (for text labels).

  4. mjr_render exits immediately if ngeom==0, to avoid errors from uninitialized scenes (e.g. frustrum==0).

  5. Added scissor box in mjr_render, so we don’t clear the entire window at every frame.

License manager

  1. Removed the entire license manager. The functions mj_activate and mj_deactivate are still there for backward compabitibily, but now they do nothing and it is no longer necessary to call them.

  2. Removed the remote license certificate functions mj_certXXX.

Earlier Versions

For changelogs of earlier versions please see