Advanced Computer Graphics, Fall 2020

Final Project: Line-based Musculoskeletal Simulation and Control

Click here for source codes!

Date updated: 5 Nov 2020

Ying Wang

Project Description

Project Proposal



The goal of this project is to simulate and control the muscle line system with complex routing constraints in a more efficient and accurate way.


Most simulators in animation and biomechanics use algorithms for chains of rigid bodies connected by joints. It is very important to account for muscle mass in those models. A widely used method is "Segment Lumping" which combines muscles and bones in a segment. This method is easy but it also introduces large error during dynamic simulation. The proposed project will generate motions which are more natural by accounting for the underlying muscles and bones.

Previous works:

Biomechanical Simulation and Control of Hands and Tendinous Systems
Large-Scale Dynamic Simulation of Highly Constrained Strands
Musculotendon Simulation for Hand Animation:
This paper proposed a new method for simulating thin strands such as tendons and muscles with complex routing constraints. However, the rigid bones are simulated using maximal coordinate and they need a lot of constraints (joint constraints, surface constraints, fixed constraints etc). We want to further reduce the system using new Jacobian matrices.
Muscle Path Wrapping on Arbitrary Surfaces:
This paper can generate the massless and elastic strand for arbitrary wrapping surfaces. However, in our case, we want the muscles to have mass, and the mass of muscle lines should be comparable to the mass of bones.

What I am planning to do:

I plan to simulate the cases where we approximate the muscle geometry as a polyline (via-point model) and also different obstacles such as spheres, cylinders, and eclipsoids (wrapping surface model) in the reduced system, by deriving different Jacobian matrices based on the constrained quasistatic condition.

List of Goals

Intermediate goals:

I plan to finish muscle line simulation with different wrapping surfaces (obstacles), with the correct energy plot by the update point. During this stage, everything is implemented in MATLAB for easy testing.

Final goals:

For the final goal, I want to port everything from MATLAB to C++ and generate some interesting demos which can showcase the advantage of this method.

Additional goals:

If I have more time, I will implement this with a higher order implicit integration such as Backward differentiation formula BDF1 and BDF2 to improve the accuracy.

Project Update

Summary of Work to Date

I have finished the via-point muscle model integrated with the REDMAX articulated rigid body framework. And I also tested all the Jacobian matrices in our method. Now both the simulation and energy plot are correct. I have also finished the muscle model with stationary wrapping surfaces and did all the testing with that model. However, I have some energy drifting problem with the moving wrapping surfaces. Therefore, I am currently working on solving those energy issues.

Analysis of Work

My original plan for the intermediate goal is to finish all the wrapping surfaces with the correct energy plot. Up until now, the goal is partially met. But I still need to find out what is causing the energy drifting problem in my code (or math). My hunch is that I missed some terms in the equations or my Jacobian time derivative is not correct.

Plan for Completion

I think I am slightly behind my schedule because I spent more time than I expected in figuring out why the energy is drifting in the via point model. Before I assumed that the energy was correct in the via point model, but the problem became worse when I moved on to the next part of the project. It took me sometime to go back and check it again using the simplest test case that I can possibly use. The good thing is, after all the checking and testing, now I have created a lot of test functions for my code and did more writeups in different methods. Therefore, I think I can finish my goals during the rest of the time.

Final Report


Previous Work