Facial Bones (aka Muscle
Bones) | The setup for
strechy facial bones is pretty much similar to the
technuiqe for the arm bones. However they are slightly
different, but not by much. And now it's very important
that you use my puppet object (the puppetmaster addon)
or use a similar way of using control objects (with a
zero null).
I've prepared a scene which you can use.
It has a simple head mesh in it, made with the facemaker
in XSI (not fancy but will illustrate our practicing
good enough). So download the scene below and put it in
your 'scene' folder in any database that you have for
Softimage|XSI.
You can see that I have already placed the
bones correctly where I want them. Also these placements
might not be anatomicly correct, but it's just a
tutorial on how to use this technuiqe. I recommend that
you buy a Anatomy book if you would like to study
that... if you really feel like you need that... if you
are into that kind of perfection...
The chains
that are lightblue are rigid, the red chains are the
strechy ones (or rather the one that will be strechy).

First
of all we need to position out our control objects.
We'll start with the left eyebrow first. Since the chain
consists of the chains we need four control objects. So
simply create 4 puppet shere's which you name LEB_1,
LEB_2 etc. For radius you can use 0.1. Then take the
"ZERONULL_LEB_1" and align it so it matches the
translation of root for the eyebrow chain. Then take the
ZERONULL_LEB_2 and align it to the second chain (again
only position). The third controll object will align to
the third bone, and the last one with be aligned to the
effector (position only).
Now it should look like
this...

Don't
worry about the size of the ZERONULL's they will be
hidden later on. Now do the same procedure for the right
eyebrow. But name them REB_1, REB_2 etc.
Now that
we have them all in the right position we should start
adding the expressions. And also some position
constraints. Select the Left Eyebrows root and position
constrain it to the LEB_1 sphere. Select the second
chain for the eyebrow and position constrain it to the
LEB_2. And I think you can figure out what you are
supposed to do with the third bone and the effector? :)
And you should repeat the procedure for the right
eyebrow. Your schematic should look like this if you
turn off "links of selected Nodes Only" (ok, I did
re-positioned the objects...).

Now
select the first bone in the left eyebrow chain. Press
enter to bring up the properties. Under the "Chain Bone"
tab you should find the lenght slider. Right click on
the green key icon and chose "set expression". Delete
the number that's in the text window (no need for it
anymore). What we are going to do now is the same thing
as we did with the arm chains (if you read that
tutorial). But I can explain it again. We want the bone
to be the lengt of the distance between our two control
objects. In this case between LEB_1 and LEB_2. So we'll
chose an expression called ctr_dist(. You can
find it by pressing the button Function ->
Distance -> Center to Center. We should replace
the <elem1> & <elem2> with our two
control spheres LEB_1 and LEB_2. So your expression
should read:
ctr_dist( LEB_1. , LEB_2.
)
Press
validate and then apply. Close the expression editor.
Now open up the second chains properties and apply the
same expression but now use LEB_2 and LEB_3. Your
expression here should now be:
ctr_dist( LEB_2. , LEB_3.
)
You
understand the concept by now?. In that case you can
complete the last one by yourself? And then perhaps even
complete it on the right side? Now whe you have done
that you should be able to pull the sphere's and the
chains should strech them selfs to the correct lenght.
And since we were smart enough to use the puppet spheres
you can select the sphere and type in 0,0,0, in the XYZ
translation. It will then pop back into the default
position.
Now for the mouth. We'll make some more
objects, we need eight of them this time. The nameing
convetion here is a little more tricky. Since a few of
them are going to share sides. We have the middle and
the sides and objects in-between. So here's how I
named them (looking from the front).
[MMU]
[RMU] [LMU]
[RMS] [LMS]
[RML] [LML]
[MML] There was no
easy way of explaining that :) So Now start and place
the control spheres just like you did with the eyebrow.
When you are about to place them for the sides of the
mouth it doesn't matter which effector you chose, as
long as you pick the "same" on each side. ex. if RMS is
aligned to eff8 the opposite one is
eff5.And if you have been a good student your
image should now look something like this:

And
now you do the same with the chains as you did with the
eyebrow. Start with the root and then work your way
up.
And now that we got our objects in place we
should start parent them to their collective chain... or
something like that. So all ZERONULL's that is for the
Eyebrows should be parented under the head bone (named
bone1 in this case). Also the upperlip ZERONULLS shold
be parented to the head bone (not the side controls).
And the lowerlip and the side controls should be
parented under the jaw bone (called bone2). And again...
if you have been a good student your schematic can look
like this.. if not... redo...

Now
we are almost in our envelope phase. Just a tiny few
more things to do before we are finished. First is to
hide all our ZERONULL. Do this by typing in ZERO* in the
MCP object selection (see image below).

With
the all the nulls now selected press down the GROUP and
name the group ZERONULLS. And select View Visibility
- Hide Members. Now we need to select all the bones
in a similar way. So type in bone* in the MCP
object selection. Name this one CHAINS_ENV don't
change anything else. The do the same again, but
unselect the rigid bones (meaning head, neck and jaw
bone). Again make a group and call this
CHAINS_MUSCLE and set the Selectability - Do
not allow selecting members. Last but no least, hide
all the roots and effectors. Type in eff* press H
to hide, and ro* press H to hide. Now your head
should look like this:

Finaly
time to envelope! Select your mesh, chose Envelope -
Set Envelope then middle click on the
CHAINS_ENV group, then right click to end the
selection. Now you ofcourse need to paint your weights
correctly. But if you try and pull some of the objects
you'll notice a nice deformation. So there is lot's
of stuff to do, but now you've learned the basics on how
to make those bones strechy.
So what is the
benefit of using chains instead of objects? It's how the
envelope reacts to chains or objects. If you have an
object it will use the objects center to create
deformations and not have as much gradient falloff as a
chain will have. At least this is what I've heard and it
seems to be like that. I DO recommend that you
use shape animation for your facial animation, but use
muscles as secondary animaition. I'm sorry that I
couldn't provide a cooler model, but I didn't have
anything in my library that I could share at this point.
So to end off this little session I give you a bad pose
for the head we just used.
![]()
©2003, Stefan
Andersson
|
| |
|
|
| |
|