Skip to content

Releases: ComputationalBiomechanicsLab/opensim-creator

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)

0.5.7: Fix disabled geometry pathpoint editor popup

11 Jan 15:39
Compare
Choose a tag to compare

0.5.7 is purely a bugfix release. The main fix is that the GeometryPath editor popup has now returned. It dissapeared because opensim-core now supports function-based muscle paths.

  • Fixed PathSpring components ignoring the scene scale factor (#816)
  • Fixed a bug where the property editor for a muscle's geometry path was not rendering the customized muscle path point editor popup (#815)
  • Fixed PathSpring not using it's GeometryPath's color correctly in OpenSim (#818, upstream: opensim-core/#3668)
  • Internal: ImGui now renders its content via the oscar graphics API, rather than via its own internal OpenGL backend
  • Internal: oscar pure-virtual interface classes are now prefixed with I (e.g. ITab, IPanel, etc.)
  • Internal: OpenSimCreator pure-virtual interface classes are now prefixed with I (e.g. IOutputExtractor, ISimulation, etc.)

0.5.6: CSV point import/export and mesh warper improvements

23 Dec 09:34
Compare
Choose a tag to compare

Happy holidays!

0.5.6 tries to make it easier to get 3D datapoints in/out of various workflows. This improves interop between mesh-based workflows (e.g. the mesh warper) and model-/scene-based workflows (osim editor, mesh importer). Alongside those changes, the mesh warping workflow was improved with better UX and more data import/export options.

0.5.6 also includes QoL changes that (e.g.) make .osims load faster, tooltips less annoying, and filepaths easier to copy+paste.

Highlights

  • Added Tools -> Import Points to the osim editor workflow
  • The Import Stations from CSV popup in the mesh importer is now more permissive in what it accepts
  • Fixed a bug where muscle points could not be selected via a 3D viewport if the user is rendering muscles with tendons+fibers (#706)
  • Fixed meshes being double-loaded, which should cause .osim files should load faster
  • Many QoL changes to the mesh warping workflow

See CHANGELOG.md for a detailed list (approx. 22 items)

0.5.5: MacOS crash hotfix

21 Nov 19:55
Compare
Choose a tag to compare

0.5.5 is purely a bugfix release that fixes a crash that can happen when booting OSC on MacOS (see #811, thanks @SAI-sentinal-ai for reporting it):

  • Fixed a crash on MacOS where a std::sort algorithm usage did not strictly comply with Compare (thanks @SAI-sentinal-ai, #811)
  • osc::App now writes the osc executable's directory and user directory to the log (handy for debugging, #811)

0.5.4: Shape fitting and mesh importer utils

03 Nov 11:20
Compare
Choose a tag to compare

0.5.4 adds support for basic shape fitting into the model editor, some nice-to-have orientation/translation actions in the mesh importer, and some bugfixes.

  • Stations are now selectable when using the Translate > To (select something) and Reorient > $axis > To (select something) actions in the mesh importer (thanks @emmccain-uva, #796)
  • The mesh importer now has an option to Reorient > $axis > Along line between (select two elements), which is sometimes useful (esp. in conjunction with importing stations, #149) for defining joint/body frames (thanks @emmccain-uva, #797)
  • Right-clicking a mesh in the model editor now shows an Export menu, enabling re-exporting of the mesh w.r.t. a different coordinate system (#799)
  • Right-clicking a mesh in the model editor now shows a Fit Analytic Geometry to This option, which will fit the chosen analytic geometry to the mesh's vertices (#798).
  • If a popup in the editor window throws an exception then the editor window will now try to close the popup, rather than fully erroring out to an error tab (thanks @AdrianHendrik, #800)
  • Fixed a bug where trying to add a ConditionalPathPoint, Marker, PathPoint, PhysicalOffsetFrame, or Station component via the Add menu would crash the tab with a frame-related error message (thanks @AdrianHendrik, #800)
  • Internal: the codebase now contains shape-fitting algorithms for fitting a sphere, plane, or ellipsoid analytic geometry to mesh data. The algorithms were written to closely match the shape-fitting codebase that came with "P.Bishop et. al, How to Build a Dinosaur, doi:10.1017/pab.2020.46" (#798)

0.5.3: Persistent viewport settings and import stations from CSV (+other changes)

09 Oct 08:16
Compare
Choose a tag to compare

0.5.3 adds support for persisting 3D viewport options between boots of OSC, which is handy if you have preferred visualization options that you typically always toggle on/off. It also adds support for importing stations into the mesh importer from a CSV (File > Import Stations from CSV in the mesh importer workflow), which is useful for importing (parts of) a muscle path into a mesh importer scene.

Change highlights:

  • 3D viewport settings (e.g. muscle styling, show/hide the floor, background color) are now persisted between boots of OSC via a per-user configuration file (thanks @tgeijten, #782)
  • The right-click step size menu for scalar property editors now includes suggestions for masses (it assumes the property is expressed in kilograms)
  • Added Import Stations from CSV to the mesh importer's file menu, which provides a way of importing stations into the mesh importer scene from a CSV file (thanks @emmccain-uva, #149)
  • Hovering over a recent or example osim file in the home screen now displays the full name of the file in a tooltip (thanks @AdrianHendrik, #784)
  • Editors for component double properties (almost all scalar properties) now have - and + stepping buttons (previously: the steppers were only available for Vec3 properties; thanks @tgeijten, #781)
  • The Show, Show Only This, and Hide buttons in the component context menu are now disabled if the clicked component, and all its children, have no Appearance property (#738)

See CHANGELOG.md for a full list of all changes.