Read Paper

We propose significant simplifications in muscle modeling and simulation to facilitate real-time anatomical skin deformation for full-body articulated characters. The muscle shape is a function of an animated quadratic Bezier action curve and control rings derived from it. The action curve is uniformly sampled to derive control rings driven by a scaled sinusoidal equation to model fusiform shapes. A single spring is attached between the central control point and the midpoint vector between the extreme control points of the Bezier action curve...

[ Read Full Abstract ] [ Download Full Paper ]


Run Demo >> Quick Reference

[ Run Demo ] [ View Underlying Representations of Muscles ]
[ Adjust Attributes ]


Run Demo >> Quick Reference

[ Muscle Dynamics ] [ Characters With Different Muscle Settings ]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Read Paper

We propose significant simplifications in muscle modeling and simulation to facilitate real-time anatomical skin deformation for full-body articulated characters. The muscle shape is a function of an animated quadratic Bezier action curve and control rings derived from it. The action curve is uniformly sampled to derive control rings driven by a scaled sinusoidal equation to model fusiform shapes. A single spring is attached between the central control point and the midpoint vector between the extreme control points of the Bezier action curve. Care is taken to stabilize local coordinates for each muscle vertex to enable glitch-free skin deformation. The character’s polygonal mesh is smooth-skinned using a two-layered approach: first to the joints, and then to the muscle vertices. Lastly we show how different prominent muscles can be reasonably approximated with the proposed fusiform model. A typical 4000-vertex character skinned with sixty four 72-vertex muscles is able to run on an average CPU at 60-80 fps. Intuitive tools have been developed to aid the process of muscle creation, muscle shaping, dynamics simulation, as well as assignment of skin weights for joints and muscles. Our main contribution is the simplified dynamics driven curved action-axis, which enables economical and expressive muscle animation. This opens up new levels of realism for real-time characters in games and interactive media.

[ Download Full Paper ]

Back To Top

Read Paper

We have created a demo program for you to have a better understanding of how the system described in the paper works and also to have a good feel of the performance. Here is a quick reference for the Demo Section to help you navigate:

[ Download Demo ] [ View important notes ]
Please execute bin\release\StaffFighter.exe when you get into the directory.

 

To view:
Section in full paper
Keys to press
 
Quadratic Bezier curve with dynamics
3.1
F2
Up-vector axes
3.2
F4

 

To change:
Section in full paper
Keys to press
 
Size of muscles
3.3
1: Decrease
2: Increase
3: Reset
Stiffness of muscles
3.5
Q: Decrease
W: Increase
E: Reset
Damping of muscles
3.5
A: Decrease
S: Increase
D: Reset
Weighting to muscles (vs joints)
4.2 and 4.3
Z: Decrease
X: Increase
C: Reset

Back To Top


Download Demo

Please execute bin\release\StaffFighter.exe after extracting the compressed files.

System requirements

  • Windows XP
  • Screen resolution of 800x600 or better
  • 2.0 GHz CPU or better
  • 1.0 GB RAM or more
  • GeForce 6800 Series (or equivalent) or better

Things to note

  • When you run the program for the first time, you will see a warning that the driver name has changed since the last time you ran OGRE. Just click ok.
  • It takes a while for the program to load in the data, so do not panic when you see the initial black screen for a while

Back To Top


This section is intended to give you a better understanding of the underlying representations of the muscles, as explained in the full paper.

1) To see the quadratic Bezier action curve with dynamics simulation
(For Sec. 3.1. of full paper)

  1. Hide the skin mesh (Press F5)
  2. Hide the muscle meshes (Press F4)
  3. Show the Bezier action curve and control points (Press F2)

NOTE: Simulation will slow down in this mode because line/curve drawing is significantly slower than polygon drawing.

These are what the spheres represent:

  • Red spheres: Pmid
  • Green spheres: Pconst
  • Yellow spheres: Porg and Pins

Notice how the red spheres move towards the green spheres when the Fighter is moving.

2) To see the up-vector axes
(For Sec. 3.2. of full paper)

  1. Hide the skin mesh (Press F5)
  2. Hide the muscle meshes (Press F4)
  3. Then show the up-vector coordinate axis (Press F3)

For each coordinate axis shown, the red arrow represents the local x-axis, the green arrow represents the local y-axis and the blue arrow represents the local z-axis. The local y-axis is taken to be the up-vector used in the calculations of the local coordinate frame for each control ring of on the Bezier action curve.

Back To Top


We have included some global multipliers in this demo so that you can change them to see how exactly each attribute affects the overall look of the muscle dynamics and skin deformation.

1) Change the size of the muscles
(For Sec. 3.3. of full paper)

Increase or decrease the size of the muscles to see how the skin is affected by the muscle size.

  • To decrease the stiffness, press 1
  • To increase the stiffness, press 2
  • To reset the stiffness, press 3

The image on the right is taken from a character with muscle size multiplier increased to the max.

2) Change the stiffness of the muscle jiggle
(For Sec. 3.5. of full paper)

Increase the stiffness of the muscle jiggle to see muscles that vibrates faster. This can be used for more creatures with very strong and tight muscles. Lowering the stiffness will cause the muscles to oscillate slower and lag behind in motion. This could be used for ghostly/fluid creatures.

  • To decrease the stiffness, press Q
  • To increase the stiffness, press W
  • To reset the stiffness, press E

We could have made the muscle jiggle for the Fighter a lot more obvious but we decided to tone down the jiggling effects so that it looks more natural for a human being. For characters such as dinosaur or dragon which has huge muscular thighs, the jiggling effect can be exaggerated much more.

3) Change the damping of the muscle jiggle
(For Sec. 3.5. of full paper)

If you increase the stiffness multiplier to the max, you will probably notice that the muscles vibrates continuously, even when the Fighter has stopped moving. This is where the damping comes in handy. Increasing the damping multiplier will result in faster rate of energy dissipation, thus stopping the continuous vibration faster. Decreaing the damping with low stiffness will cause the muscles to lag behind.

  • To decrease the damping, press A
  • To increase the damping, press S
  • To reset the damping, press D

The image on the left is taken from a character with low damping and stiffness. You can see the thigh lagging behind in action.

4) Change the weighting to the muscles
(For Sec. 4.2 and 4.3. of full paper)

In the demo, the muscles overshoot the skin sometimes but that is expected. The skin is only partially weighted to the muscles and thus will not follow the muscles entirely unless the weights to the muscles are 1. Change the weighting to the muscles to see how it affects the skin deformation.

  • To decrease the weighting to muscles, press Z
  • To increase the weighting to muscles, press X
  • To reset the weighting to muscles, press C

The image on the left is taken from a character with very high muscle weight (thus very little joint weight).

Back To Top

Read Paper

We have created this video section to show you some of the settings and results that are obtained in our system. Here is a quick reference for the Video Section to help you navigate:

 

We have prepared a muscle dynamics video which shows our muscle system with and without dynamics for comparison.

 

To view skin deformation for:
Global multiplier settings
 
Normal Character With Only Skeletal Deformation
N.A.
Heavy Muscular Character (The Hulk)

Size: 2.6
Stiffness: 1.0
Damping: 2.5
Muscle Weight: 6.7

Skinny Character (Gollum)

Size: 0.1
Stiffness: 1.5
Damping: 3.0
Muscle Weight: 4.0

Elastic Character (The Jellyman)

Size: 1.0
Stiffness: 0.4
Damping: 0.2
Muscle Weight: 3.0

Back To Top


This video shows our muscle system with and without muscle dynamics for comparison. The skin of the character jiggles realistically when the dynamics are turned on.

Back To Top


These videos are recorded to show you the different deformations that our system can achieve by changing the muscle settings. You can try out these settings yourself in the demo to see the effects in real-time.

1) Normal Character With Only Skeletal Deformation

This shows a normal character without using our muscle system. The skin is only smooth skinned to the animated joints.


2) Heavy Muscular Character (The Hulk)

This is what this system is all about: muscles! This shows a hulky character all beefed up with huge muscles.
  • Size: 2.6
  • Stiffness: 1.0
  • Damping: 2.5
  • Muscle Weight: 6.7

 

 

3) Skinny Character (Gollum)

This shows a skinny character with really thin underlying muscles.
  • Size: 0.1
  • Stiffness: 1.5
  • Damping: 3.0
  • Muscle Weight: 4.0

 

 

4) Elastic Character (The Jellyman)

We decided to have fun with the system and adjusted the dynamics settings to bizarre values. This caused the muscles to lag behind and restore its shape slowly. This rubber-band deformation can be used for fluid-like monster creatures.
  • Size: 1.0
  • Stiffness: 0.4
  • Damping: 0.2
  • Muscle Weight: 3.0

Back To Top