Releases: ComputationalBiomechanicsLab/opensim-creator
0.5.17: High DPI support, smaller installer, and various other fixes
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 alwaystrue
. - 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
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
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'sPreview 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
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
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 eachOpenSim::Force
in the model applies its linear/angular force component to each body in the model. This can be useful for debugging model creation orExternalForce
s - 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 hasOpenSim::PhysicalOffsetFrame
s 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
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
)