![]() |
Creating an Accurate Muscle System Tutorial using Shape Animation By Michael Malinowski | |
| Sample file: muscle_Nulls.zip Brief : This tutorial will go through the process of setting up a simple yet highly effective and accurate muscle system for a biped character, although the process can be easily adapted to any object you desire. The tutorial was designed for Softimage|XSI 3.0 but should work in most other versions, though some process changes may be apparent. We will use shape animation on pre-modelled muscles to gain an automated muscle bugling and breathing effect. Note. This is a slightly different process to the standard scaling of an object to get a bulge, as this gives more accurate results, however it does take a bit more time. Note. Before you start this tutorial you will need to have the mesh of a character already created and a rig for your character already created as this only runs through the process of setting up the muscles. Lets begin! | ||
![]() |
First of
all we need to model our muscles, they don't need to be highly detailed
objects, but it is good working practice and will gain you more realistic
results to shape the muscles in such a way that they resemble the real
thing. Also keep the muscle object inside the arm, it will work with the
muscle outside the arm, but it is not clean and not good working
practise. You don't need to build all the muscles in the body, just the main effecting ones, heres the ones I chose to model: Biceps Flexor Group & Extensor group of the forearm deltoideus (A shoulder muscle) Pectorial Muscle Trapezius Gastrocemunus If for most people (me
included) you don't know what each of those muscles actually are, then
take a look at the diagram below to see what areas I gave muscles to,
again its you choice as to how many you create and how much detail you put
in. Remember though, ultimately these will be the start in a chain of
deformers, so the more detail you have the slower you may find it is to
work in. | |
|
So now we have some muscles surrounding our skeleton, this may be a good time to link them into the skeletons hierarchy, so they stay attached to the bones we want to keep them with. So all you have to do is select the bone nearest to the muscle you want to link, then press the "/" key and select the muscle, this then parents the muscle to the bone. Voila, that muscle should now follow the bone. Repeat this step for each muscle,
| ||
| So we have
a skeleton which seems to have some muscles attached to it, but the
muscles don't move when we move our skeleton, so lets sort that out.
Choose one muscle to start with, select the muscle, and in the Animate
toolbar choose Deform / Shape / Store Shape Key . This will then have
stored that shape, which you can access later from the explorer or through
insterting into the mixer. So we have stored its default state, name it
something like MuscleName_Default , just so you know that this is the
default position of this muscle. Now deform the object to show its most
extreme position, for instance as shown in the image below, we stored our
default state of the bicep, now we have to deform it to make it look how
it would be in a bulging state. Once you have deformed your muscle to the
preferred state once again we must choose Deform / Shape / Store Shape Key
whilst in the animate toolbar. Repeat this step for each of the muscles attached to your skeleton. | ||
![]() ![]() ![]() |
Now we have
stored all the shapes we need for our muscles, lets put them into action.
Select a part of the skeleton and open the Animation Mixer. We need to
create a few Shape tracks to insert our stored shapes into, so just press
"shift + S" until you have enough tracks as you have muscles. The right
click in the top shape track and select " Insert Source" , this will list
all the stored shapes you have made choose the bicep muscle for now, as it
will be easier to follow the tutorial. Remember to choose the shape that
is the most extreme position, not the default one. Spread your shape bar
across the entire shape track, or the desired length you want the muscle
to work for. I must just remind you at this point to make sure that the
Normalize option in the shape properties is turned Off, otherwise this
exercise will not work. Now if you move the slider up and down you should
see your muscle bugle up and down. However we do not want to have to hand
animate our muscle ever time our character moves his arm….
Note, at this moment of the tutorial your characters arm must be in a relaxed position and your muscle slider should be set to zero. Right Click on the key
button next to the slider, this is where we will create a link between the
bulging of the muscle and the rotation of the arm, Choose " Link With".
This can be a tricky part depending on how well you named all the parts of
your rig, you need to find the lower arm bone (as this is the one that
creates the drive effect), once you have that you need to go into its
local transform (through the kinematics icon) and choose "Ori.Euler
Z". Now if you move the
arm around your muscle will simultaneously bulge depending on how much you
move the arm. However if you were to just envelope you characters mesh to
the rig and the muscles they would have no effect, as a deformer deforms
through the center of the object, and by using shape animation the center
of the object is never deformed. Leaving you with a moving muscle with now
deformation on the skin. | |
| This method
is somewhat time taking, but it works, if anyone knows of another way of
gaining the same results feel free to email me at mailto:hejherbert@hotmail.com
To Deform the mesh we need to attach nulls to the main points of the muscles, this is where you may struggle if you put lots of detail in the muscles, however there is no need to cover the entire surface in nulls, just the primary effecting areas. So, to start with we
need to get close to our muscle, the bicep in my case, and look at what
areas will effect the skin, then individually select each point around the
effecting area and create it into its own cluster. | ||
![]() |
This is
most certainly the most boring part of the tutorial, simple but
repetitive. Create a Null then move it somewhere near the muscle for ease.
Then Duplicate the null, make sure you have the explorer open showing all
the clusters you have just created, then with the null selected choose "
Constrain / object to cluster and select the desired cluster, the null
will the snap to that point. However this only constrains the position of
the null to the cluster and not the orientation, which is just as
important, so select the null again, and choose Constrain / Orientation
and select the same cluster. Now the null will follow both the position
and the orientation of the muscle. Heres the boring part, repeat that process until you have nulls covering the main points of your muscle. | |
![]() |
Finally we
are nearing the end of our muscle tutorial, hopefully you will have some
kind of rig with muscles attached that all bulge or move the way they
should.
Note. You will need to have your muscles on a separate layer to you mesh and nulls, preferably the nulls should have there own layer, the mesh have its own etc etc. To envelope you mesh
to the rig, hide your control objects, and also hide the muscles too,
leaving the deformers from the rig visible and all the nulls visible, as
these are what will directly deform the mesh.
A great thing for this
is to create an automated breathing effect, by adding an expression
similar to " sin ( Fc * -5 ) * 1" (creates a sin wave effect) to the
slider of the chest deformation, the character will appear to always be
breathing. | |
![]() |
I hope you
gained the results you desired from completing this tutorial, or at least
you learned something positive from it. I would love to hear some feed
back, bad or good. There may be more efficient ways of doing what I have
done here, if so let me know! But this method most certainly worked for
me. Thankyou Mike Malinowski hejherbert@hotmail.com hejherbert@hotmail.com |