Blendshapes can be very difficult to create if you don’t understand the rules. As many of the modellers I have worked with can attest they’re are many to create convincing blendshapes so here is the list that I preach:
Continue Reading!
Things to remember while creating blendshapes:
- The kinds of operations your allowed to do are drastically limited!*
No freezing transforms
Good habits aside, this can create a ton of more work for yourself. Before you say that’s not true: While blendshapes can be successfully done with frozen transforms it requires you to have all you heads stacked on top of each other, almost an impossible workflow when editing. To fix this it would require you to duplicate all your blends from the active base shape – why bother when it’s just one less step to begin with.
Don’t alter the mesh
No deleting faces/edges/verts or creating new ones unless you want to start over. If your worried about performance there are other ways to control that eg edit membership on the blendshape node itself. This will tell maya which verts to evaluate the blendshape on and which to ignore. While the there is overhead to tell it which to ignore, it’s really not all that bad, really it isn’t.
Don’t alter the mesh (again)
No combine/seperate/extract/mirror geo. To mirror a shape from the left to the right use a blendshape script like ijUtils which can be found in the downloads section or one of the other handfull on highend3d.com
Don’t alter the mesh (still? – yep)
Never work on the original head – make a duplicate of that which should be named base to create additional duplicates/targets from. More often than you’d like to think I have found people with many blendshapes but no original head because they edited directly on it, this is a safety step that will cost you a few KB of space to the file, but perhaps hours of time – sounds like a steal to me.
Duplicate with transform to create new targets
ONLY use duplicate with transform (default hotkey shift + d ) to
create duplicates of the head this will insure vert order matches. While you can set the options on duplicate to do this aswell, shift + d always has the correct settings and can even speed up making a bunch of copies and spacing them out to work on. Again one of thoose prevent the forest fire things while it’s easy rather than try and put it out once it’s a 5 alarm blaze.
Motion test, motion test, motion test
Remember to motion test your blendshapes and be aware of the issues that animating multiple blends together creates. Thinking to yourself that made no sense, just keep reading and I’ll touch on that next.
Things to watch for while testing your blendshapes:
Verticies slippage:
With blends you are basically making ONE keyframe and every vert tweens to that ONE frame over the same amount of time. So if vert A moves farther than vert B… it also has to move faster to get there at the same time that ver b reaches its destination. When vert A and B are belong to the same muscles and this occurs it BREAKS the belief that they are driven by the same forces.
Double Transformation:
Test L and R shapes together – observe the results this should be
apparent in definition. If you are unable to grasp why it happens refer to verticies slippage for conceptual background.
Poor Deformation Falloff:
When animating the blend from 0-1 the border of the blend is too
aparent, or is too regional, or isn’t regional enough. It’s common to see people NOT touch the R side of the face when creating the L
Many motions on the L will effect the R. That said be SUTBLE and be warry of double transformations. If your succesfull your blendshapes will come to life!
Anatomical awarness:
We are recreating a physical form, muscles/bones/tendons all have roles and effects on how things move. Clearly define that for yourself and then test if your blends obey the priciples you laid down
Maitaining volume:
While animating a blend from 0-1 do you maintain the volume of the head?
Okay you made it this far now for some tricks/advice
You can use the paintable attributes in Maya 7 to artistically create the left and right blends from a single (and avoid generating double transformations too!) Simply generate a full smile, add it as a blendshape, make it active then go to deform >paint blendshape weights tool. Then replace the whole head with 0 for the smile influnce and paint in the left or right side. Then when you have it at a point you like – shift + d and you have it, or you can just add the full head again and paint the other side. You used to need a plugin or a complex script like joBlendTaper for that kind of stuff horrary for paintable attributes on blendshapes
It can be hard to generate proper shapes for things like jaw open because of it’s rotation. I advise using a joint/skinning to help aid you in generating your arcs/inbetweens. Then making slight modifications to them.
PERMALINK :: Share your tricks/rules and save everyone some headache! [2]
No matter what you call it: enveloping, weighting, skinning, binding is a tedious and slow process or is it? I’ve been using a technique that has allowed me to weight characters at ‘break-neck’ speeds for over a year and I think it’s about time I share my workflow.
Continue Reading!
Prerequisite knowledge:
When I first started getting into rigging I spent some time taking a hard look at how Maya reacts to different workflows for weighting. I came to realize by watching the component editor in Maya while painting weights – stray or loose values could/would be caused by numerous tools available to you while painting weights. Below is a review of the discoveries I found as a result.
- 1)Many of the tools/options available are present because they were easy to implement and add – not because they aid or increase the functionality of the toolset. For example:
- a.Radius (L) – I always have that set to 0. In fact is it’s above 0 I have found that it interferes with my ability to use the ‘b’ hotkey to control the size of the brush on-the-fly.
- b.Opacity: This is always set to 1, why not just use the hotkey ‘n’ to control the value.
- 2)Every paint operation but ‘add’ has the potential to create stray values.
- a.Replace with any value other than 1.
- b.Scale with any value.
- c.Smooth with any value and more than 2 influences.
As a result I have limited my painting toolset to radius (U), value, add, mirror, smooth. I’ve also discovered some rules to increase the reliability of various functionalities. For example any weight I/O process (export/import/mirror) works best with normalized (all influences add to 1) weights.
Now for the good stuff – Overweighting:
As a result of that knowledge I found it extremely important to find a way to skin a character and avoid stray and un-normalized values. The workflow I came up with, and have since dubbed ‘overweighting’ is simple and requires some practice but once your used to it is the fastest way of weighting a character I’ve seen and has allowed me to weight characters in a single pass to more than acceptable quality. The concept is this – never add weight to an influence twice. Rather overweight an influence and go down chain till you run out of influences to weight.
But if a picture is worth a thousand words, than a video must be a box set of novels so here you go:
Overweighting (h264 codec/qt7 req)
So the general workflow:
Paint all your weights using the overweighting method (add only) then mirror to get the best data for an optional smooth/mirror pass.
The execptions!
Like all methods/workflows there are exceptions, however I find this methodology works on almost all models I recieve. That said, my early warnings on replace/scale don’t hold when painting cluster weights. I find scale helpful during that operation. Unforutnatly I never use replace – add is far less likely to redistrubute values.
PERMALINK :: Share your knowledge - leave a comment! [1]
A budding new forum, the Animation Lounge is off to a great and active start. Could this be what cgchar used to be? I surely hope so and I’ll be checking in and doing my part to help and so should you!
Oh and animators they have started a very nice collection of free rigs (and not just mine =D ) definatly worth a look if you want to mix things up a bit.
Ian
PERMALINK :: Leave your mark
Ever wanted an attribute in two places, that would act as one. They’d have one animation curve shared between them and one shared output that you could feed off somewhere else. I’m not talking about adding the attribute to both and adding them together to get a result cause that’s just nasty to maintain. Rather a solution that if you alter the attribute to 3 here it’s changed to 3 there and can be used to drive a connection over there as 3 just like that.
Continue Reading!
K sure you could have an expression or possibly a scriptJob, maybe even write a plugin to do it but even that’s not ideal. Luckily for us here’s one possibility:
Now those that know me and my rigging style understand just how much I love to abuse the parent -shape command in maya, and here is just the latest reason why the -add flag. This can create an instance of a shape node on two transforms+ eg if the attributes are one the shape node they are available to any node that the shape is associated with.
Follow me that far? Here’s a demonstration of the concept:
//Start MEL – copy paste to script editor and execute
polyCube -n CubeA;
move -r -os -wd -2 0 0 ;
polyCube -n CubeB;
move -r -os -wd 2 0 0 ;
polyCone -n Cone;
select -cl ;
select -r CubeA ;
duplicate -rr;
select -r CubeA1Shape ;
select -add CubeA ;
parent -r -s;
delete CubeA1;
addAttr -ln Hide -k true -at bool -dv on CubeA1Shape;
select -r CubeA1Shape ;
select -add CubeB ;
parent -add -s;
setAttr CubeA1Shape.v 0;
connectAttr CubeA1Shape.Hide Cone.v;
rename CubeA1Shape Visibility_Config;
//End Mel demo
Now this has some large complications. First the shape node with your attributes must be the last one connected to a transform (eg planning ahead required) so that it’s visible by default in the channelbox. Secondly you’ll probally want to add a visible control shape and hide the instanced one if your controls should appear different. Third, because the attributes are on the shape the default key all doesn’t get them, so a custom hotkey must be made.
I’ve already applied this on the rigs for ik/fk blending etc Please post a comment if you can think of other possible uses – keep the sharing going!
PERMALINK :: Did you think of another possible use? [7]
Thus begins a new series on maya hotkeys as I am consistently asked. Thanks goes out to Dan for the inspirational aim message!
So some background for new users. How to create a custom hotkey:
1. Open the hotkey editor ( window > settings > hotkey )
2. Select the user category from the left hand side of the UI.
3. Press New
4. Enter information into fields
5. Press Accept
6. Select the new user command in the center of the UI and assign the hotkey as per norm.
Okay, now some examples: WOS (Wires on Shaded):
proc ToggleWiresOnShaded (){
string $panelFocused = `getPanel -wf`;
string $isWired = `modelEditor -q -wos $panelFocused`;
if($isWired) modelEditor -edit -wos 0 $panelFocused;
else modelEditor -edit -wos 1 $panelFocused;
}
ToggleWiresOnShaded;
Next example: Xray
Now given the flag for xray is -xray can you figure out how to apply the code above to the find a working solution?
See the answer!
proc ToggleXray (){
string $panelFocused = `getPanel -wf`;
string $isWired = `modelEditor -q -xray $panelFocused`;
if($isWired) modelEditor -edit -xray 0 $panelFocused;
else modelEditor -edit -xray 1 $panelFocused;
}
ToggleXray;
PERMALINK :: Leave your mark
Earlier posts |
Newer posts