Global Enveloping
&
Weight Modification
by Adam Sale
________________________________________________________________________
Objective: To study the various ways in which characters can be linked to their skeleton systems. To understand how modifying the weighting of points can help your character to stay "glued" together.
Synopsis: Through the use of the ACTOR module, as well as an intricate understanding of parent - child relationships, this lesson will aid you in understanding how the Global Envelope works in helping to create living, breathing organic characters. Once your character has been enveloped, we will explore various weighting techniques that will help you keep each vertex moving appropriately with its respective skeleton structure. Weighting techniques and aids examined in this tutorial will include; Modify Weights, Bounding Models, Ressigning Manually, Reassigning Automatically, Showing Vertices.
________________________________________________________________________
You've constructed your character, and have built a skeleton that you wish to link to your geometry. There are many ways that you can go about this. Each method, of course, dependent on a number of questions you must ask of your character.
· Is my Character completely organic?
· Is my Character a robot?
· Is my character composed of Ball and Socket shoulders and Hips?
· Does my character have any non-deforming accessories?
· Is my character inorganic? · Is my character composed of Meta-Geometry?
· Does my character need to perform a significant amount of cartoon style squash and stretch?
· Will my character need to perform Lip Sync, or feature a full range of facial expression?
Each of these questions will invariably yield a slightly different enveloping technique. This tutorial is going to focus on the first question; Is my character completely organic? In later tutorials, I will cover the techniques required for the other questions. However, as a modeler, skeleton builder and animator, you must get in the habit of asking yourself these types of questions. Critically analyzing any situation will most always show you the most efficient way to deal with any problems that tend to appear later on in the production process. It is far better to deal with these problems now, than when you need to be animating under a deadline that is far to close for comfort.
Global Envelopes
Before beginning to blindly envelope your character, it helps to understand just what is meant by the term 'Global Envelope'.


If you look at the hierarchy structure in the schematic viewport, notice that the geometry becomes the parent of the skeleton structure. This is why this enveloping method is called 'Global'. A primitive sphere has a global reference; the origin or the 0,0,0 coordinates of 3D space.A globally enveloped skeleton has a reference point as well, the geometry; its parent.
By nature, a Global Envelope is a Flexible Envelope. This is what allows us to simulate the organic movement of skin tissue flexing over a bone.


Weight
Before exploring these two options, you should have a solid understanding of what is meant by the term Weight.
Weight simply means Influence. If I were to tie a length of rope to the end of a tree branch and pull, the area where the rope and the branch tip are connected are being influenced by my pulling. I could go so far saying that the branch tip is being influenced 100 % by my pulling. Now, as I'm pulling this rope, the branch is going to bend under my influence, however, not all of the branch is going to bend 100 % with my efforts. The base of the branch that is connected to the tree is not going to bend much, if at all. I could then deduce that my pulling the rope has 0 % influence over the base of my bent branch. If I had enough strength left to keep pulling I would notice one more phenomena. The middle area of the branch looks to be partially affected by my pulling and partially affected by the fact it is closer to where it joins to the rest of the tree.
Now, using all that I had learned about influence, ropes and branches, I would make one final deduction. The middle area of the branch is being influenced 50 % by my pulling and 50 % by the fact it nearer where the tree and branch meet.
Take this same principle and apply it to the 3D world. We are trying to simulate these very principles. Re-create that branch and put a 2 joint skeleton inside of it. Apply a global envelope. You will not wish the points or vertices near the base of the branch to move, so they would likely be given a weight of 0 %. The points near the tip of the branch would be given a weight of 100 % to the bone closest to them.
What of the points lying halfway between the first and second joint? If we assign them a 100 % weight to either joint and then rotate that joint, the bend in the branch will look downright horrible. Some of the points will move 100 % with one joint and those unassigned points directly beside them would not move at all. The best solution would be to assign these middle points or vertices 50 % to each joint. Each row of points that lie directly beside the middle row would then be gradually assigned a weight that tapered off from the joint it was located further from. This is known as a falloff. Falloff weighting systems give your characters the realism in movement that you are looking for.


1) Full Weight (Old Method) - The Fully Weighted method is one that I rarely touch. When assigning geometry to a skeleton, Full weighting will assign each point a 100 % weight, or a Full Weight to the joint or skeleton object nearest it. This can be useful, because you can be certain that each vertice is only controlled by one joint from your skeleton system. It leaves a lot to be desired, however when dealing with a fully organic character.
2) Weighted - When working with an organic character, I would highly recommend using the Weighted option. As with any 3D software tool, it cannot be completely relied upon to do all the your work for you, but I find it gets me infinitely farther along in my weighting than the Full Weight Method. The weighted option is a powerful enveloping tool in that it allows Softimage to assign the weight of vertices to more than one joint or skeleton object. (See the Branch Example Above) The Fully Weighted Method allows you to do this as well, however, the assignment of a full weight makes more work for you later on. Usually the weighted option leaves me with a minimal amount of tweaking.
The Organic Character
The Global Envelope is by far the most common method modelers and animators use to 'bone' their creations. It is extremely flexible in that it allows you to create separate distinct envelopes for such pieces as arms and legs. This is great if you are creating a ball joint type character where the arm joints should have no influence over the chest. Think of the G.I . Joe toys you used to play with, or at least the ones your brother used to play with if you weren't inclined to megalomanic battles of good and evil. The arms were very distinct pieces from the chest, and had no bearing upon the deformation of the chest. The term 3 character "Slippy" is a Ball Joint type character who is composed of separate Global Envelopes.



When your geometry has been parented together, Globally Envelope your entire character to the entire skeleton system. Just like Mickey Mouse said in Mickey and the Giant "I killed 7 at one blow." Now, you will never have a problem weighting vertices on any part of your character to a particular bone within that skeleton hierarchy. Actually, let me re-phrase that: You will have a lot of challenges in weighting your character, but this envelope will allow you to weight any vertice to any combination of joints in your hierarchy! You have, in effect, created a giant global envelope. Pretty cool stuff. We're not through yet though!
For the rest of this tutorial, I will demonstrate vertice weighting principles using a small villainy cartoon character.

Select any effector on your character; an arm effector, spine, leg, It doesn't really matter which. Move the effectors taking your actor through all of the positions that you can possibly imagine it being posed in. Take your poses through the ridiculous to the sublime. You'll probably notice that some geometry you hadn't intended to be partially controlled by a joint in fact is.
These are some problem areas that you'll need to patch up before you can move on to animate. I usually find that these spots tend to be little areas all throughout the character. Move an arm effector and you'll probably find that some vertices in the lower torso will pull away and try to follow the arm. If your character's default position has been modeled with its arms by its side, this will happen almost every time.

"But Adam!" you may be saying, "Why don't you build the character with its arms straight out from it's sides like wings?" A valid point. My reasoning has to do with my skeletons. I like to build my skeletons for arms and legs from the right view. It has to do with the way I think I guess. If my character's arms are extended like wings, it means that I have to build my arms from the front view or the top view, and the way I work is just not conducive to that.
Whatever the case, find the best way that works for you. In any event, back to point weighting.
There are a number of ways to can handle these 'rogue' vertices. The bottom line is that they must be properly weighted back to their appropriate joint or joints. In our case of the torso vertices, they need to be weighted back to the lower torso joints. The first method we will examine is using the Skin > Envelope Assignment> Modify Weights tool.
Before beginning to weight points select your envelope and click on Skin> Envelope Assignment à Show Vertices. This is a handy aid when weighting points. It colors vertices the color of the joint that has the most amount of weight influence on it. This color can be altered by changing the color of the joint itself. You can do this by selecting a joint and clicking on Skin> Envelope Assignment > Color Joint
Skin > Envelope Assignment> Modify Weights
With the arm effector still extended out to the side of your character, tag the torso vertices that have pulled away. In the Actor module select Skin >Envelope Assignment> Modify Weights.


1) The name of the object whose tag points are being weighted.
2) Each number corresponds to a tagged vertice that can be weighted on its own or as a part of the group (see 4)
3) Select a joint in (6) and modify its influence on a tag by dragging the slider or typing in a number.
4) Toggle between modifying all vertices, or modifying each vertice one at a time. (See 2)
5) Absolute- Enter a value in the weights box and the selected joint or skeleton object assumes that weight Add- Enter a value in the weights box, and whatever the weight of the selected joint was before will be added to this number Add Percent - enter a number in the weight box, and that percentage will be added to the joints weight
6) The weights box allows you to select a joint so that you can modify its weight.
7) Keep this box checked to interactively view the effect of your weighting
In the Joints box, scroll down through the joints that are located within your envelope. If you named your joints using Info >Selection , you will find that the names make a lot of sense. If you haven't named your joints, you'll see a lot of cryptic looking names such as jnt49_2 in the above example. If this isn't incentive enough to begin naming your joints, I don't know what is.
Look beside the names of the joints and notice that there are a lot of zero's and the odd positive value. This is the weight that we were discussing using the branch example earlier. Notice in your own modify weights box how the vertices have split their weight amongst a number of joints. In our example the stomach vertices had partially assigned themselves to the forearm joint. In the joint box, scroll down and select the forearm joint that is holding the weight of the stomach vertices. This will activate the weight box (6) above. Interactively, you can drag the slider down to zero to remove the forearm joints influence over the stomach vertices, alternatively, you can type the number in the box. If you drag the entire Modify Weights box to one side so that you can see your character, drag the slider again. You will see that the stray vertices return to their proper spots. Now, go back and reassign the vertices to the proper joints.
There is one rule when weighting vertices. The combined weights from all influential joints must equal to 100 %. If the values don't total 100 %, the points will tend to wander when the entire character is animated.
All the vertices need to be given the same amount of attention. If you start treating some points different than the others when weighting, they tend to rebel by refusing to pull their share of the load.
In cases when vertices don't need 100 % weighting to any number of joints, assign the difference in weight to the dummy object. The dummy object is really just a skeleton that never gets animated. See the skeleton tutorial for more information on dummy objects.
Continue weighting vertices and moving your character's effectors until you are satisfied with the deformation results of your entire envelope. It is good practice to save your scene a lot during this process.
The Modify Weights option is the most local kind of vertice weighting that you can perform on an envelope. I usually envelope my character and proceed straight into the Modify Weights box. It gives me precise control over the kinds of deformation I need my character to perform.
Should your character be in dire need of a major overhaul, there are two more methods to explore in this tutorial.
Skin >Envelope Assignment> Bounding Model

In order to re-assign the vertices to the new bounding model parameters, you must select the character as a tree and click on Skin >Envelope Assignment> Re-Assign Automatically. A pop up menu appears warning you that all the points will be re-assigned. Click on OK. Your envelope will reflect the parameters you specified when you constructed the bounding model.
There are three bounding types to choose from before you decide on making the model a cube, cylinder or sphere.
Inclusive - All vertices that fall within the boundaries of the bounding model will be assigned 100 % weight to that bounding models joint. This can be likened to the Full Weight Option in the Global Envelope Menu.
Inclusive Limits - The most useful option in my opinion. All points within the bounding model are assigned to that bounding models joint, however they are assigned with a falloff. (See branch example)
Exclusive - All points that lie within the bounding model have no weight to the models joint parent. Bounding models are a great global method of assigning points, but you must still go in and fine tune the vertice weighting using the Modify Weights tool.
Skin > Envelope Assignment >Re-Assign Manually

A Final Word on Weights
At times, weighting will not solve all of your envelope issues. You may require a certain look that weighting just can't give you. You may require an arm to flex with bulging muscles. Definitely not a job solely for weighting points. Remember; Softimage is a toolbox with all the tools you can imagine. One tool will not always do the trick. Sometimes, a combination of tools is the only answer. In many cases, you will need to write expressions to get the effect you're looking for. This is why you need to do the preparation before you begin a project. A lot of valuable production time can be wasted if you don't understand what is needed. In later tutorials, we'll be experimenting with shape animation and expressions, as well as numerous deformation tools. The movie "Godzilla" was an excellent example of CGI artists using a lot of tools to achieve a certain feel for their gargantuan beast. Weighting, Shape Animation, Expressions and numerous in-house custom plug-ins were written to bring the radioactive lizard to life.
As mentioned earlier, weighting is not a glamour job. It is definitely a grunt job, but like everything someone's got to do it. Careful weighting is very much a trial and error task. There are no real tricks, to this task, just patience. In the end, however, when your models behave themselves, and you have no envelope issues in the middle of production, it will definitely have been worth it.