Skip to content

Releases: ComputationalBiomechanicsLab/opensim-creator

0.5.17: High DPI support, smaller installer, and various other fixes

12 Dec 05:59
Compare
Choose a tag to compare

0.5.17 is a minor release that focuses on integrating HighDPI support into OSC's various subsystems. Various engine assets and model meshes were also removed, compressed, or decimated, roughly halving the size of OSC's installers. Additionally, there's now an easier way to zero coordinates in the coordinates panel (#959), the socket reassignment popup has had a makeover (#957), and various little bugs/regressions were fixed (#958, #952).

Change highlights (see CHANGELOG.md for a full list):

  • The 2D backend was updated to support HighDPI scaling (3D is WIP). This means that the [experimental_feature] high_dpi_mode in the configuration is now always true.
  • Several (potentially, but unlikely, breaking) changes to the shared geometry/ directory and example models were made. This is to accomodate minimizing the shared geometry directory. Looking forward, model designers should prefer a model-local Geometry/ directory. See CHANGELOG.md for specific changes.
  • The Coordinates panel now contains a Pose dropdown that exposes the ability to zero all joint coordinates in the model (thanks @tgeijten, #959).
  • The socket reassignment popup was given a makeover, and tries to draw more attention to the Re-Express $COMPONENT in new frame option (thanks @tgeijten, #957).
  • The "Frame Definition" workflow is now labelled as deprecated, because we anticipate that it isn't used very much. If you think otherwise, then post a comment on issue #951.
  • Fixed a regression where the Display context menu would always be greyed out in the model editor (thanks @tgeijten, #958).
  • Fixed 'Wireframe' appearance causing the component's decoration to disappear, rather than showing as a wireframe (#952).

0.5.16: Muscle color scaling, smaller installer, and more documentation

05 Nov 11:52
Compare
Choose a tag to compare

0.5.16 is a patch release that focuses on improving how the software is packaged and its documentation, with a few nice-to-haves thrown in for good measure. Read the CHANGELOG.md for a full list of changes, here are some featured ones:

  • There is now a Color Scaling option in the muscle coloring/styling panel, which enables auto-scaling the min/max (e.g. blue-to-red) color range based on the model-wide min/max of the chosen Color Source. This is useful for visualizing differences between muscles that are all within a tight numeric range (#933).
  • The installation, building, development environment setup, and contribution guides have been moved into the documentation pages (https://docs.opensimcreator.com/), so that there's a centralized location for all documentation.
  • Finished off tutorials 5 and 7 in the documentation.
  • After dragging a file into OSC, the next file dialog that opens should now default to the same directory that the files were dragged from (thanks @mrrezaie, #918).

0.5.15: Preview experimental data, other UI improvements

08 Oct 07:25
Compare
Choose a tag to compare

0.5.15 adds (🪄 experimental) support for visualizing/linking experimental data, which lets users combine OpenSim models, trajectories, raw experimental data, and OpenSim tool files (e.g. ExternalLoads) in one place. 0.5.15 also improves the UI in a variety of ways, mainly with the aim of eventually unifying previewing experimental data, model editing, and viewing simulations in one workflow.

Key features:

  • A Preview Experimental Data workflow has been added. This is work in progress, but ultimately has a similar intent to the official OpenSim GUI's Preview Experimental Data.... The documentation has been updated (also work-in-progress), more details available in the CHANGELOG.
  • The simulator tab now has much more similar behavior to the model editor tab, in terms of supported panels. E.g. you can now view the coordinates panel while viewing a simulation.
  • Viewing function curves has been improved. The function curve viewer now spawns a separate panel that can be docked in the UI, enabling plotting multiple curves and viewing them while performing other model edits.

See CHANGELOG.md for all changes.

0.5.14: `navigator` autoscroll, better rim highlighting, better force visualization

04 Sep 07:37
Compare
Choose a tag to compare

0.5.14 is a minor release with some nice-to-have improvements:

  • The Navigator panel in the model editor now automatically scrolls to the selected component when selecting the component via some other panel (e.g. a 3D viewer, reported by @mrrezaie, #908)
  • Added Point Forces and Point Torques visualization options, which enables drawing force vectors in their point-force form (as opposed to their reduced body-force form). This feature currently only works for ExternalForces in the model (#904) and GeometryPaths (#907).
  • The Show Forces' Linear/Rotation Component option was reworded to Forces on Bodies and Torques on Bodies to reflect what's actually being shown.
  • The rim highlights now more-clearly distinguish between hovered, selected, hovered+selected elements in the scene when they are overlapping (#24).
  • The documentation now contains work-in-progress tutorials for the mesh warper and model warper UIs.
  • The (experimental) model warping UI is now available from the splash screen. Note: it's still in development, and things may break!

0.5.13: `Force` and `Function` visualization, easier joint center placement

30 Jul 12:11
Compare
Choose a tag to compare

0.5.13 adds support for visualizing force vectors in the model editor, the ability to visualize OpenSim::Function properties (e.g. the ActiveForceLengthCurve of a MillardEquilibriumMuscle2018), and easier visual joint parent/child/center placement in the model editor - along with a bunch of other smaller changes/fixes!

  • The model editor's/simulator's 3D visualizers now have an experimental Show > Forces' Linear/Rotational Component visualization option, which adds arrows indicating how each OpenSim::Force in the model applies its linear/angular force component to each body in the model. This can be useful for debugging model creation or ExternalForces
  • The model editor UI now has experimental support for viewing OpenSim::Function curves. This is currently exposed as an eye icon in the property editor panel (#695)
  • Selecting an OpenSim::Joint that has OpenSim::PhysicalOffsetFrames for both its parent and child frames now shows a 3D manipulation gizmo that lets you move the joint center without moving anything else in the model (#159)
  • ... and much more! (see CHANELOG.md in the main repository for more information)

0.5.12: `CustomJoint` support, better output handling in simulation tab

29 Apr 15:37
Compare
Choose a tag to compare

0.5.12 adds support for adding a templated CustomJoint (i.e. a PinJoint-like joint), cleans up some of the UI buttons/menus, and fixes various little issues, such as not being able to delete outputs from the simulation screen.

  • MacOS is now built using the macos-13 (Ventura) GitHub Action runner, which means that OSC will only work on Ventura or newer
  • Right-clicking a 2D output plot in the simulator tab now shows a context menu with the option to export the plot to a CSV or stop watching the output (#841)
  • Fixed the Save All button only showing in the output plots tab if any of the plots happens to be 1D floating-point data (it should now show when 2D data is being plotted, too, #840)
  • Fixed using Save All > as CSV in the simulation tab when plotting 2D outputs (e.g. phase diagrams) wasn't exporting the 2nd dimension as a column in the CSV (#840)
  • CustomJoints can now be added via the UI. They default to having a single rotational degree of freedom along the Z axis (i.e. a PinJoint-like CustomJoint). Editing a CustomJoint still requires manually editing the .osim file, though
  • The simulation tab now has an Actions menu, which includes the ability to extend the end time of a simulation by some multiplication factor (2x, 4x, etc. #839)
  • The chequered floor texture is now rendered with Nearest sampling, which makes it appear sharper in the foreground
  • Memory usage was reduced by optimizing font loading and log message storage
  • The loading bar on the loading tab is now more centered and scales with the overall window size
  • Fixed "Plot Against other Output" feature not working with non-model-sourced outputs, such as the integrator's "Step Wall Time"
  • The "empty" state of some panels (e.g. "nothing selected", "nothing watched") was tidied up and now shows a centered message with, where applicable, a tip for showing information in the panel
  • Each plot in the Output Plots panel of the simulator tab now shows a little trash icon, to match the deletion button that's shown in the model editor tab
  • The right-click menu of an output plot in the simulator tab will now show a little trash icon and the button text Stop Watching (previously, Watch Output with a tick box) to match the deletion button that's shown in the model editor tab
  • The Selection Details panel that's shown in the simulator tab was cleaned up to prioritize showing property values (similar to the editor tab), followed by a toggleable outputs section (#838)
  • Fixed a bug in the Selection Details panel where drawing too many output plots would cause drawing to fail
  • README.md now explicitly mentions that a C++20 compiler is required to build the project

0.5.11: Wrap Objects and 2D output plots

05 Apr 07:20
Compare
Choose a tag to compare

0.5.11 adds support for adding wrap objects to a model in the model editor, along with associating the wrap object with a GeometryPath. It also adds support for creating 2D plots, which is handy for creating phase diagrams during simulation.

  • Right-clicking a 1D plot in the simulator tab now shows a Plot Against Other Output option, which lets you create a 2D output by combining two existing model outputs (handy for phase diagrams, etc.)
  • Right-clicking on a PhysicalFrame/Body in the model editor now shows an Add menu that includes the ability to add geometry, offset frames, and wrap objects. Previously: was Add Geometry and Add Offset Frame were shown, but now there's also the ability to add wrap objects. (#7)
  • Right-clicking a GeometryPath in the model now shows an Add menu that includes the ability to add a PathWrap to the GeometryPath, which is handy in conjunction with the above.
  • Added Export > Non-Participating Landmarks to CSV as an export option to the mesh warper
  • The mesh warper can now has the option to export source/destination/result meshes in OBJ format with/without surface normals (note: Simbody/OpenSim ignore this information, but it's useful if you plan on using the OBJ file in other software, e.g. Blender)
  • Pressing Ctrl/Super and PageUp/PageDown now toggles between each tab. Alternatively, you can press (WindowsKey or Command) + (Alt or Option) + (Left or Right) for the same behavior (matches how MacOS apps tend to handle tab navigation)
  • Pressing Space while in the simulator screen now (un)pauses the simulation
  • There is now a loop checkbox in the simulator screen, which will cause playback to loop back from the start when playback hits the end of a simulation
  • Internal: more of the UI code was ported from ImGui:: to ui:: to hide an implementation detail
  • Internal: Added MeshPhongMaterial, which is handy for graphics development
  • Internal: The OutputExtractor APIs were redesigned to support use-cases such as synthesizing outputs at runtime by combining other outputs (ConcatenatingOutputExtractor)
  • Internal: The OutputExtractor APIs were redesigned to support emitting string, float, and Vec2 outputs (previously: only string/float) to facilitate 2D plotting

0.5.10: Add StationDefinedFrame, fix scrolling bug in mesh importer

06 Mar 09:09
Compare
Choose a tag to compare

0.5.10 adds provisional support for OpenSim::StationDefinedFrame, which has now been added to OpenSim and should become widely available with the release of OpenSim 4.6. It also adds more options to the Calculate - primarily so that the Fit Analytic Geometry to This can be used to extract similar values to external scripts (e.g. the shape fitters from 10.1017/pab.2020.46).

It also fixes a scrolling bug in the mesh importer that slipped into 0.5.9 - sorry about that

Notes:

  • Updated opensim-core to a version which includes StationDefinedFrame support:
    • Upstream feature: opensim-org/opensim-core#3694
    • They let you define an OpenSim::PhysicalFrame from stations/landmarks/markers. This more closely matches ISB standards and the way in which people tend to build anatomical models.
    • Because they are an OpenSim::PhysicalFrame, they can be used a joint frames, offset frames, etc.
    • BEWARE: EXPERIMENTAL FEATURE:
      • Upstream OpenSim (+GUI) have not yet released this feature, so models that use it cannot be opened outside of OpenSim Creator (yet), which is why it's only shown in the "Custom OSC components" section. It will become widely available in the next OpenSim release (v4.6)
      • OpenSim Creator's tooling support for the feature (visualization, documentation, etc.) is currently limited, but we plan to improve it over time
  • The Calculate menu for Ellipsoids and Frames now contain additional options, such as being able to ask for the axis directions, so that users can get similar information out of shape-fitted geometry as they would from external scripts
  • The warping algorithm used by the mesh warper and model warper (TPS) now lerps between "not warped" and "fully warped", rather than recomputing the warp kernel based on blended input data:
    • Practically, this means that setting the blending factor to zero guarantees that the warped mesh is exactly the same as the input mesh (previously, it would try to solve for the input positions and sometimes produce a non-identity solution when given a small number of input landmarks)
  • Fixed mesh importer scrolling calculation for the new camera manipulator widget causing unnecessary (+annoying) scrolling
  • Fixed muscles not casting shadows after the surface rendering change
  • There is now a minor delay when mousing over entries in the Add menus in the model editor
  • Internal: google/benchmark, ocornut/imgui, sammycage/lunasvg, nothings/stb, marzer/tomlplusplus, and martinus/unordered_dense were all updated to their latest releases

0.5.9: improved rendering, camera manipulation, and socket assignment

28 Feb 06:01
Compare
Choose a tag to compare

0.5.9 is a minor release that:

  • Makes rendering more consistent with OpenSim GUI (wireframe support, etc.)
  • Adds support for smooth-shaded normals, giving model builders some control over shading
  • Puts the camera axes top-left and makes them clickable, which is similar to Blender/Godot
  • Adds better socket documentation when adding a component to the model

It also includes a Graphviz (.dot) exporter for the model's socket/ownership graph, which is handy for inducing anxiety. You definitely shouldn't use it to export a complicated model to https://dreampuf.github.io/GraphvizOnline/ . If you do that (you shouldn't), don't delete lines to get over the memory limits, and definitely don't zoom in 😉

See CHANGELOG.md for a more comprehensive list of changes.

0.5.8: Custom components, easier PoF translation, and other fixes

14 Feb 16:50
Compare
Choose a tag to compare

0.5.8 makes moving PhysicalOffsetFrames a little bit easier when they're the child of a Joint, and adds user-facing support for OSC-specific OpenSim::Components (explained below). It also contains a few minor bugfixes, plus a variety of internal engine changes.

  • Editing the position of a PhysicalOffsetFrame that's a child of a Joint now behaves more intuitively (rotation still sucks, though)
  • OSC-specific experimental OpenSim components are now exposed to the user via the model editor. So, as a user, you can now (e.g.) manually add a PointToPointEdge to your model in order to measure the distance between two points (previously: PointToPointEdge was only available through the Frame Definition UI)

Beware: OSC's custom/experimental components are incompatible with OpenSim. The intention
of this feature is to provide users with a way to test rapidly-developed OSC components
that may, with enough interest, be upstreamed to opensim-core.

  • The available socket options when adding a new component to the model should now show all valid options, rather than just showing frames in the model (#820)
  • The camera's location/fov is now editable in degrees
  • The camera's panning behavior is better when viewing a 3D scene via a viewport with a very skewed aspect ratio (e.g. when the model visualizer is tall and narrow, or short and wide)
  • Updated Sphinx to version 7.2.6, and the associated sphinx-book-theme to 1.1.0, which makes the documentation look a little nicer
  • Internal: the engine now uses strongly-typed angles (osc::Radians and osc::Degrees) to reduce unit mismatches in the source code
  • Internal: the test suite now automatically exercises all available UI tabs (mesh warper, model editor, etc.) tabs to ensure they are always working
  • Internal: all header files are now suffixed with .h to match most libraries etc. (previously: .hpp)