Releases: ComputationalBiomechanicsLab/opensim-creator
0.5.12: `CustomJoint` support, better output handling in simulation tab
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
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 anAdd
menu that includes the ability to add geometry, offset frames, and wrap objects. Previously: wasAdd Geometry
andAdd 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 anAdd
menu that includes the ability to add aPathWrap
to theGeometryPath
, 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
andPageUp
/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 emittingstring
,float
, andVec2
outputs (previously: only string/float) to facilitate 2D plotting
0.5.10: Add StationDefinedFrame, fix scrolling bug in mesh importer
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 includesStationDefinedFrame
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 forEllipsoid
s andFrame
s 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
lerp
s 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
, andmartinus/unordered_dense
were all updated to their latest releases
0.5.9: improved rendering, camera manipulation, and socket assignment
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
0.5.8 makes moving PhysicalOffsetFrame
s a little bit easier when they're the child of a Joint
, and adds user-facing support for OSC-specific OpenSim::Component
s (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 theFrame 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 toopensim-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
andosc::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
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'sGeometryPath
'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
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 .osim
s load faster, tooltips less annoying, and filepaths easier to copy+paste.
Highlights
- Added
Tools -> Import Points
to theosim
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
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
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)
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 forVec3
properties; thanks @tgeijten, #781) - The
Show
,Show Only This
, andHide
buttons in the component context menu are now disabled if the clicked component, and all its children, have noAppearance
property (#738)
See CHANGELOG.md for a full list of all changes.