Recent Releases of muskemo
muskemo - v0.9.75
This release introduces a few new features, and addresses a few bugs
New features
- Enabled Logarithmic per-segment expansion. Equations from Macaulay et al. 2023 and Coatham et al. (2021) are implemented.
- Added a switch for turning off the bias correction in the logarithmic expansions.
The expansion panel is documented in the manual. I will make a tutorial in the future.
Bugfixes
- Fixed a bug where expanded convex hulls would sometimes be moved to a new position during expansion
- Fixed a bug where deleting muscles and recreating them would result in conflicts (also during reflection)
- Fixed incorrect dynamic button labels in the new Frame panel.
Full Changelog: https://github.com/PashavanBijlert/MuSkeMo/compare/v0.9.7...v0.9.75
- Python
Published by PashavanBijlert 9 months ago
muskemo - v0.9.7
This release introduces a few new features, and addresses a few bugs
Special thanks to Max Herde and Yuting Lin for pointing out some of the bugs.
New features
- Added a "Convert to simple (tube) visualization" button. Muscles can now be switched to volumetric muscles and back
- Added support for OpenSim PlanarJoints
- MuSkeMo now checks whether OpenSim models have non-unique frame names, and renames them if required
Bugfixes
- Undoing reflections and or volumetric muscle conversions no longer causes a crash
- OpenSim CustomJoints with arbitrary rotation-orders are now treated correctly (instead of assuming x-y-z if the axes were principal axes).
- Model root joints that are not aligned with the global reference system in OpenSim models are now treated correctly.
Full Changelog: https://github.com/PashavanBijlert/MuSkeMo/compare/v0.9.6...v0.9.7
- Python
Published by PashavanBijlert 10 months ago
muskemo - v0.9.6
Two major additions and some minor bugfixes.
- The biggest change in this update is the overhaul of the "Anatomical and local reference frames panel". This panel is now much more flexible, allowing the user to define either the X, Y, or Z axis as the primary axis, and any of the remaining two as the "temp" axis that defines a plane. The behaviour is documented in the manual.
- There is now a "Reset to default pose" button. This button resets the model component(s) to their default pose. Select any joint/body/contact in the body, or any number of meshes with inertial properties, and hit the button.
- Joint reflection now also correctly reflects the coordinate names.
- Fixed a small bug in the .sto trajectory importer that caused an error when importing a trajectory for a model that has no muscles defined.
Full Changelog: https://github.com/PashavanBijlert/MuSkeMo/compare/v0.9.5...v0.9.6
- Python
Published by PashavanBijlert 11 months ago
muskemo - MuSkeMo sample dataset 1
This folder contains sample data to be used in MuSkeMo. It contains two OpenSim models, originally created in MuSkeMo, and accompanying simulation trajectories. These models and trajectories can be imported into MuSkeMo.
It contains the emu model and one simulation trajectory from the following publication: van Bijlert PA, van Soest AJ, Schulp AS, Bates KT. Muscle-controlled physics simulations of bird locomotion resolve the grounded running paradox. Science Advances (2024) 10, eado0936. doi: https://doi.org/10.1126/sciadv.ado0936 More simulation trajectories, and simulation code, and model variants can be downloaded here: https://simtk.org/projects/emily_project
It also contains the horse model and one simulation trajectory from the following publication: Pasha A van Bijlert, Thomas Geijtenbeek, Ineke H Smit, Anne S Schulp, Karl T Bates, Muscle-Driven Predictive Physics Simulations of Quadrupedal Locomotion in the Horse, Integrative and Comparative Biology, Volume 64, Issue 3, September 2024, Pages 694–714, https://doi.org/10.1093/icb/icae095 More simulation trajectories, and simulation code, and model variants can be downloaded here: https://simtk.org/projects/shadowfax
- Python
Published by PashavanBijlert about 1 year ago
muskemo - MuSkeMo Validation Scenes 26-2-2025
This release includes all the (model) files, Blender scenes, scripts, and outputs required to generate the data and plots referenced in the "Validation Tests" section in the MuSkeMo manual.
It includes the emu model from "van Bijlert PA, van Soest AJ, Schulp AS, Bates KT. Muscle-controlled physics simulations of bird locomotion resolve the grounded running paradox. Science Advances (2024) 10, eado0936. doi: https://doi.org/10.1126/sciadv.ado0936" and a CT-based mesh of a cheetah from "Coatham SJ, Sellers WI, Püschel TA. Convex hull estimation of mammalian body segment parameters R. Soc. Open Sci.8210836 (2021). http://doi.org/10.1098/rsos.210836"
- Python
Published by PashavanBijlert about 1 year ago
muskemo - v0.9.3
The two most important changes for v0.9.3 are: 1) The panels now work via object selection. Object names still need to be typed in when creating a new component, but after an object is created, all the panel functionality works by selecting a correct combination of objects and pressing a button (e.g., a BODY and a MUSCLE, after which "Add muscle point" can be pressed). The panels now have a live display of which relevant MuSkeMo objects are (or should be...) selected. There are more extensive error-checks as well as more potential incorrect situations that are now caught by MuSkeMo and warned for. This was the last major update before I will start recording the tutorials. I will still be adding some features and extending existing ones, but now the core features and behaviour of MuSkeMo are mostly complete for the full release (v1.0).
2) MuSkeMo now tracks 'defaultpose' of most objects, when a computation is performed that is only correct in a specific pose (combination of position and orientation). See the documentation for details. This is particularly relevant to inertial properties (which are initially only represented with respect to the global reference frame), but has been carried over to joints and contacts as well. This is an important addition to prevent incorrect exports from MuSkeMo (since amongst other things, inertial properties are not dynamic). However, this breaks compatibility with earlier Blender/MuSkeMo scenes (everything will still work, but the exporting will throw errors because the objects don't have a 'defaultpose' state). The safest way around this is to unparent all the objects, recompute all the inertial properties (this adds a 'defaultpose'), and then to reparent everything. Because this would be very time consuming, it is possible to run a Python script in Blender's script editor to generate 'defaultpose' states for all the objects. Ensure the model is actually in its default pose (i.e., nothing moved since model construction and object parenting) before running the code. The script is attached as a separate .zip file ("adddefaultposetoscene.py").
Full Changelog: https://github.com/PashavanBijlert/MuSkeMo/compare/v0.9.2...v0.9.3
- Python
Published by PashavanBijlert about 1 year ago