Sunday, September 28, 2014

Papa Construction Theory

Papa Construction

Let's break down how Papa's Face works and how it looks SO DANG GOOD

Curve Deformation

Papa's face takes a lot of turns, especially around the mouth area, so this character would almost not have been possible without this solution.


Clusters are driven across distinct paths along the mesh. Each spline curve designates a separate avar.



 The cross hairs you see are the locators that are moving up and down these paths.

Here is a basic view of the node network for the mouth corner that goes Left to Right


You see the the motion path information filters into the locator. The cluster is parent constrained to the locator. The nodes on the left manage the math and speed at which the locator moves across the spline path.

Not everything moves along a drawn curve, though. Some clusters are deformed through rotation, or bending.


A cross section of Papa's Eye - the clusters of points moving his eyelid rotate perfectly around the center of the eyeball geometry. This ensures that the eyelid makes a nice rounded path around the eyeball, rather than using blend shapes giving a linear look. It's subtle, but important to the overall look.


To show this principle in action, you have to pull Papa's Jaw WAAAAY open!
You can see that his jaw wraps into a circle. That's because his jaw pivot point is actually located far back in his neck!  Putting the pivot of the jaw far back allows for the jaw to still open with rotation, but not look like some kind of muppet with a hinge in his mouth.  This was a creative way of making Papa's forward facing mouth look natural.


*YAWN*

The Three Curve Principle and Football Shape

An important part of the addition theory is the use of the three curve principle in Papa. Certain parts of the face need at least 3 different avars to be complete. The brows for example have an inner, mid and outer control. When they add up together at a value of 1 or 100, they will make a BEAUTIFUL arc. It's all about balancing the points between all the avars you've set up.


The Left, Mid and Right avars fire together and look pretty nice.


The lips should lift into a football shape. This helps balance with the Jaw UD as well.


The eyelids have inner, mid and outer controls. When used together, it can shape the eyelids to how you need. This keeps the eyelids feeling fleshy and responsive to the information around the eye like squints and brows.

Sculpts

It's great that movement happens in arcs and splines, but sometimes you can lose volume due to the nature of weighting points. That's when we introduce a sculpt to push those points back to retain volume.


The mouth corner moves in a nice fashion, but once it takes that turn around the front of the mouth those points are going to collapse.


The sculpt fires as the control goes further towards the center of the mouth. The points no longer collapse into his face. Retaining volume is key.

Sculpts are should be used on every avar, but with papa only the most important ones were dealt with since we got into crunch time pretty quickly.

You want to avoid doing too much with a sculpt, because its the clusters that should be doing the moving. The sculpt just pushes info in and out as necessary.

Lattices

Go get more appeal out of our character, I needed his long muzzle to be able to turn, bend, squash and stretch.  This was done by making an expression that deforms a joint chain. Said joint chain was able rotate and scale lengthwise.

I set up clusters along every "rung" of this lattice. The joints in the joint chain affected these clusters. Doing so modified the lattice. 



Eyeballs were tricky, because I needed them to react to the head geo. I put the eyeballs in a lattice, and had that lattice wrap deformed to the main head lattice.  The eyeballs were still able to rotate, but within their respective lattices. Teeth and tongue were a little more complex, but followed the same principles. This took a lot of problem solving to get right and work with everything else.


The main head lattice could only affect the head. Unfortunately in maya lattice assignment is a little finicky. I took a copy of papa, assigned the lattice to the vertices that I needed, then I used the paint blend shape weights tool to smooth out the influence of the lattice. That copy of papa was blend shaped into the final body. This copy is what receives all the other face movers.



This shows papa's face being scaled up. I wanted the eyes to scale up - but to do that the sockets needed to  follow exactly. All while the Eyelids and brows are working right. Layering up deformations was the key to solving this problem. I found a script that allows me to to add objects to a lattice, and I used that to add these verts to the eyeball lattice that scales up and down.  I used the paint blend weights tool to smooth out this scaling.



The tricky part of this is that the deformations of the eyelids had to happen BEFORE this scale function happens, otherwise points will move unpredictably in the eyelid area. Layering up deformation allowed for me to have a non destructive setup where I could go down a level to troubleshoot specific problems.

Obviously making a rig is a lot more involved than just doing step A then B.
This is a shortened version of different techniques used to build the rig.










Monday, August 18, 2014

DQ, Linear and Blend Weights

So Papa's back bendy legs don't work properly when using the Dual Quaternion weight method. This method is usually better than classic linear because it tries to preserve volume during deformations like elbows and knees.  Papa has a lot of skin to him, so this is ideal especially in his shoulder area. I don't know why papa's back legs freak out when DQ'd, but I figure it might be the thickness of the leg or the placements of the bones not being exactly centered around the mass.

I found out there is a way to use a combination of both. It is called Blend Skin Weights.  This allows you to paint on a map signaling the mesh to use either DQ or Classic Linear binding methods.  Make sure to click below to learn the way you can use it.

Blend Skin Weights in Maya Help

When you mirror skin weights, it also mirrors the Blend Weights map. So no need to worry about symmetry.

Tuesday, August 12, 2014

Pixar Style Pickables

GREAT NEWS

Some really smart people have found ways to create an equivalent to Pixar's Pickable system in Maya. Often, too many controls floating around on a character can distract from the overall acting and can be annoying to grab and handle. Less visual complexity gives animators a better idea of the silhouettes the face shapes are making.

These videos show how we can allow our controls literally be part of the mesh. Want to move the lip? Grab the characters lip. Simple as that. So simple and intuitive!


and this one

Tool Demo- Deformable controls from Raveen Rajadorai on Vimeo.

By the way, if you copy-paste the call instructions for the script, you may end up copying some unintentional spaces, which will give you a syntax error.  Simply delete the spaces to give python its valid syntax.

Wednesday, July 23, 2014

Lattice Power

Here is a script to add an object to an existing lattice.

http://www.fuse-design.org/blog/tutorials-cg/how-to-maya-add-object-to-lattice-tutorial


Monday, June 9, 2014

Thursday, May 29, 2014

Spring Solver Global Problem/Solution

A problem that we didn't test up till this point was that if our quadrupeds were rotating on their global control, at times the pole vectors of the legs seemed to drift away from their targets at the knee.  This could previously be compensated by animating the kneeAim but that was not an accurate portrayal of where the knee was pointing.

After a bit of research we found that Springsolvers inherit a hidden twist from their parents.  Before our solution was to directly pump the Y Rotation of the Global Control into the Twist control of the Spring IK. This prevented weird twisting while the character was perpendicular to the ground, but as soon as you start rotating the global control in other ways, like forward and around, innappropriate twist would once again be introduced.

To fix this problem, the spring solver chain must be outside of the local heirarchy and point constrained to the place it needs to be.  Keeping it in world space avoids a double transform, but behaves exactly the same.  The solver doesn't inherit rotation from what is above it.

This posed another problem with our front legs. The spring solver chain starts in the middle of the leg. I separated the top joint from the rest of the chain.  I put the SS chain in world space.  I placed a locator where the top of the SS chain was.  I made the locator a child of the original parent joint.  This has seemed to fix all the problems, and I will report any side effects this has.

Updated Character Models

Papa Ram by Susan Hatton on Sketchfab

Rambo by Susan Hatton on Sketchfab

Andre by Susan Hatton on Sketchfab

Wednesday, May 28, 2014

Reverse Lock Setup

Reverse Lock setup - For rememberin.

Point constrain IK to RL ankle
Point constrain bn ankle to RL ankle
Orient constrain bn ankle to RL ball
Orient constrain bn ball to RL toe

Saturday, March 29, 2014

Character Models

SketchFab is a great way to explore models without having to swap .obj files.
Left mouse to rotate, mouse wheel to zoom, right mouse to pan.

 

Friday, March 21, 2014

Connections for the Front Legs

Jacob mentioned a great option for our Ram's front legs.  Because the scapula is not an actual joint, but more of a shock absorber, we can macro in a different type of movement to give a nice subtle rotation to it.

Here is a screen of how we plugged in the Front Leg


Using a multiplyDivide node, we were able to take the value of the Z translation of the foot control and connect it to the Z rotation of the scapula joint.  This value in the MultDiv node can be easily adjusted to get the right amount of rotation in the scap as the foot is translating forward in front of him.

For our "all range mode" I orient constrained the scap to my shoulder control.  Now that the scapula had two influences affecting it's rotation, it automatically created a BlendNode to average the movement of both influences.  I was able to create an Avar that controls the value of this blend.  This avar has a value of 0 to 1, 0 being auto rotation is off, and 1 meaning the shoulder control has full reign over the rotation value of the scap.

The avar can be munged from 0 to 1 on purpose.  A switch will create jarring effects if keyframed, but a float value can blend, which will be better for the animators.

The reverse node that you see was for visual clarity in the controls.  I needed to reverse the 0 to 1 value that was being fed into the blend node so that when you look at the control "auto rotate" 0 means "off" and 1 means "on".

This setup is visually simple, but gives a great movement under the hood, and will be easy for the animators to use. Simplifying all four legs is really important, as too many controls and doo-dads can get confusing and frustrating really fast.  This will also allow for flexibility and good movement.

Friday, March 14, 2014

Ram Reference and Thoughts

As I was looking at reference of ram's walking I saw that their scapula moves a lot with every step. Our leg rigs are giving us beautiful movement, but the scapula is left out. The animator has to animate it separately. So
So I took the leg rig we have and plus'd it a little. We now have a tertiary joint chain in addition to our bind, primary, and secondary. This allows the scapula to move with the main ik control, but also allows us to rotate the scapula and humerus independently like we had before.

Leg squash without scapula or humerus rotated.



Rotation of scapula and humerus.


And here is some reference for your enjoyment. :) Rams are soooo cute!!! 






Update: The polevectors put up quite a fight, and after much heartache I had to trash this idea because in certain positions it become unpredictable. It moves beautifully on one plane, but once you go 3d it starts to get crazy. And then if you move the thorax weird stuff really starts to go down.

We still want the scapula movement to look super natural, so we are looking into other methods. 

Thursday, March 13, 2014

Orient Joint Tool

Hey Guys!

Today Landon mentioned the orient joint tool and I did a little testing. Up to this point I have been using a locator and aim constraints to orient my joints, and it works great. But this works greater! You still need to manually orient your end joint, but it makes the process of orientation a lot faster, which is probably why they invented it. Glad I finally know about it!

We have our rigs oriented globally down the z axis. Locally, the x faces down the joint and the z faces out, or in the -x globally. To set it up put the primary axis as x, the secondary as y. and the secondary orientation in the direction of our rig, or z. Here it is with the results.

Wednesday, March 12, 2014

Awesome example of facial rigs

https://vimeo.com/74014970

These faces totally have the flexibility we are looking for

Monday, March 10, 2014

Ram Leg Challenge

I was conscious of the pieces of a Ram's front and hind legs, but once I started rigging up the overall motion of the leg, I really had to study the walk cycle of bighorn sheep. Their bone structure moves like a spring, with many joints inheriting rotation at once.  After some searching, I came across the ikSpringSolver, which is a special type of IK that is unnecessarily hidden from us.

The ikSpringSolver can be accessed by typing in ikSpringSolver; in the MEL command line, then accessing the ik tool options, changing the ik type.

This is great for characters with multiple knees or more joints then a normal quadruped.  All joints under this solver will rotate at an even amount, getting a really natural effect with incredible range of motion.

There was a problem with this, though, as I needed a greater amount of control over the scapula and radius so the animators could work with a few more poses.  I found a solution in Morgan Loomis' Blog that suggested to nest an Rotate Plane Solver chain into the primary Spring Solver chain.  This allows for the overall motion of the Spring, but with additional control added in the Rotate Plane.  I made the Spring Chain the primary chain, which was the parent of the RP, or Secondary, Chain. I then had an overall Bind Chain being driven by the secondary.


For the front leg, the yellow is the primary chain, the pink is secondary, and the purple is the final bound chain.

Each set of joints had individual twist and pole vector values, though, so I point constrained a locator to the metacarpal (above the ankle) of the primary spring chain. That locator was then used as the pole vector of the secondary chain - preventing some different results outputting from each chain.  

The additional movement given to the front leg was especially exciting. I placed the primary chain under an additional joint, allowing to push the scapula forward, and rotate in any direction, giving great movement with one simple control.



A similar movement can happen at the knee of the ram, but I put that as a value avar under the foot control object.

I also discovered a fun node called the annotation node, which creates a visual arrow to a determined point of your choice.  I noticed it has ALWAYS been really hard to keep track of your Knee or Elbow Pole Vector controls because they often get lost in the scene, or into the character model itself while you are animating. Simply give the annotation node your World Matrix info of the object you want to point to into the annotationShape node and done!  You can then move the origin of the annotation where you want, or constrain it, or whatever.  I have my annotation pointing to a locator at the knee that is bending. The annotation is parent constrained under my control object.


The yellow line is the annotation object.

Remember that joint objects can have different drawing styles.  In the attribute editor, change your drawing style from Bone to None to get rid of visual clutter.  Or to perhaps clear things up, apply a drawing override to a joint chain so they are colored a little differently from the rest.

I also wanted that shoulder blade action we see so often in quadruped characters, so I have two joints, with a simple IK handle applied to the base so it can get some unique sliding action. 


The base moves freely, but the end joint (which will be a bound joint) slides around the ik handle where the arrows are pointing.  A nice simple control for the shoulder blade.

I've been discovering new things everyday, and its really exciting piecing this all together from other people and personal knowledge.  I'll show more progress soon!






Saturday, March 8, 2014

Awesome Troll rig

https://vimeo.com/17613699

Its amazing to me how much this guy was able to do with so few polygons.

Thursday, March 6, 2014

Sculpt Mirroring Tool

We've been trying out a lot of script driven tools that allow for the mirroring of sculpts or blend shapes.  Lots are broken, or are pretty confusing. This one is pretty simple and works great.

Here is the Python Script - Credit goes to Seamus O'Hearn on Creative Crash.

1. Put the .py script in your documents/maya/scripts folder
2. Put
import MirrorBlends
reload (MirrorBlends)
MirrorBlends.gui()
into the script editor in a python tab.
3. That should pull up the GUI. For convenience, simply make the command
MirrorBlends.gui()
Into a shelf button. This way you have easy access, and the GUI is really easy to follow.
4. This only works if the Blendshape mesh you are trying to mirror is NOT already a Blendshape of your original mesh.  As long as it is a plain mesh, it should zip right along and save a TON of time.

Quadruped Build Tips

This post is mostly to try and document all the cool things I learn as I go through the process of Quadruped rigging.  Digital Tutors often gives you little gems of information that are useful in the future.

-Spine System looks deceptively easy but has some great things going on under the hood.  The bound joints that are in the spine system are parented to maya's hair folicles that are attached to a mesh 10 units long.
- When a hair folicle is made, it comes with a few extra nodes to deal with, but eliminating those will give you an object similar to a locator, but it is pinned to the mesh - specifically in the middle of the face it is applied to.  They stay pinned to the mesh very well.  The bind joints are children of individual controls, which are then children of the folicle objects.  The folicle objects are scale constrained to the global control.
- The system is only able to twist due to a blend shape that is being manipulated by a twist deformer.  Three joints also are bound to a wire deformer on this same mesh to allow for secondary movement.
- The twist of the end controls controlled the twist attribute of the deformer - acting on the blend shape.  Unfortunately because the movement was reversed, plusminusAverage nodes and multiplyDivide nodes were used to make the proper visual movement of the twist.
- The volume network was setup using the RBG channels of a condition node.  The actual plugging in went a little over my head but I understood the overall concept. Depending on the value of the "volume magnitude" channel that I set up in each sub control of the spine the multiplyDivide nodes would affect the scale of the X and Z of the joints beneath said sub-controllers. If the condition node was false (when I turn the global volume channel "off") then no volume deformation would happen and the joints would not scale inward nor outward.
- I learned that it is also helpful to correctly name input nodes - especially if you are creating a complex setup like a facial rig. They will help visually in the Node Editor when manipulating those input nodes that you don't always see in the Outliner.
- It is important to Bookmark specific Node Networks to allow easy access to certain systems of your rig.  You know it can get virtually unreadable if you simply select ALL input and output nodes.
- UC nodes, or Unit Conversion Nodes were not visible in previous versions of Maya. They still existed, but in no visual form whatsoever.  The Unit Conversion Nodes are often automatically made when a connection is set. They help maya interperet numerical data to feed into another node.
- The start, mid and end control of the spine are actually translating the three joints that are bound to the wire deformer that is applied to the blendshape.  Maintain offset is used, so the master spine can be located anywhere and still affect the hidden blendshape properly.
- When positioning joints for the main skeleton, make sure to add the Display>Transform Display>Local Rotation Axes tool to your shelf. Instead of going into component mode to see your local joint axis, you can simply toggle this tool to view them.
- To make sure joints are aiming precisely down the chain you wish, use aim constraints. Make sure to have a locator to let the aim constraint know what the up vector is when you constrain.
- The top right of the maya window has a dial down that allows you to select components by name.  If you are wise with your naming convention, you can select many objects through your whole scene.  For example, if every one of my bind joints had _bn_ in it, I could wildcard search using *_bn_* and maya will select every object that has a bind joint.  I can then simply bind my mesh without having to shift select every single bone to be bound.
- Hold right mouse button and click "select hierarchy" to select everything under a joint.  Great for selecting long chains without going into Outliner.
- Rather than going into the Move Tool settings to change the move axis, hold the W key, then left mouse click to access a menu of all your move axis. Works with all your translation tools.
- Mirror Paint Weights tool can often be more helpful than the reflection settings in the paint weights brush.
- Remember to have easy access to the Weight Hammer.  While dealing with a bound mesh that has some rogue points that aren't being weighted properly, simply select them, and click the Weight Hammer.  It will bring it's weight to that of it's neighboring points.
- Although the Weight Hammer only works for joint bound meshes, the Paint Cluster Weights tool will allow you to do a smoothing or averaging function to your selected points, making that averaging process a little easier than walking the points down.


Twist Network


Volume Network


Tuesday, March 4, 2014

Blue Sky Presentation

Here is the image we'll be using to present our Rigging Goals to Blue Sky today.


Saturday, March 1, 2014

Naming Convention

Hey Guys!

Sorry I didn't post this earlier. These are the naming conventions we settled on.


    1. _01 as suffix for EVERYTHING
    2. Bound Joints = bn
    3. Joint no bind = jnt
    4. End joints (don't need binding) = be
    5. Control Curve = cc
    6. Group = grp
    7. Cluster = cl
    8. locator = loc
    9. IK Handles = ik_Rp
    10. Lattices = lat
    11. Lattice Base = lat_B
    12. Blend Shapes = scpt
    13. Corrective Blend Shapes = scpt_C
    14. Deformer = dfm
    15. Hair Folicle = fcl

Friday, February 28, 2014

Layered Deformation

While testing out making the BrowUD of Hippydrome, (which was super successful, I rigged a cluster to translate on a curve) I made sure our method would work in a layer based format, meaning the deformation order allows us to add a cartoony lattice to the head, but without affecting the movement of points on the mesh. Enjoy.

Basic Avar visual layout

A visual layout of how a basic avar is hooked up.  It probably makes no sense and I will eventually revamp this for you.  This just mentions some pointers I wanted to remember while I was testing things out.


Broad Instruction for building an Avar

I've been tinkering a lot with Clusters, the Component Editor, weighting methods, and other tests to see if this idea will work.  Basically we are going to be using weighted clusters to get the main movements of our faces.  Using our new way of weighting (rather than painting, dialing down points rows at a time) we will be able to create great movement, but then on TOP of that add sculpts that will add or subtract volume as needed.  This way our characters will feel nice and fleshy - which is exactly what studios want to see from us.  This should make enough sense to you guys. Don't worry if it doesn't cause we're going to hit it hard on Monday at dailies.






Wednesday, February 26, 2014

Osipa Gui Troubles Maya 2012

Hey Guys!

In an effort to figure out some nice gui's for the face I discovered that maya hypershade is the worst. It is EXTREMELY hard to hook things up nicely, and in the end I couldn't figure it out.

I did find a rig online that has an osipa facial gui that he created with expressions though. Here it is.Blake Rig

Monday, February 24, 2014

Comet Scripts

 Michael Comet is one of the most revered riggers in the industry.  He is currently the head of Rigging for The Good Dinosaur at Pixar and was a really friendly, knowledgeable guy.

He has an old webpage that has some fun assets. I came across it when several rigging videos mentioned it.  I was like WHOOOAAAAHH I met this guy! 

Comet Scripts

We might be using these a lot so take a look at some of them and try them out, please.


Master Rigging Thoughts

Well, here are some of the topics that I want to cover with you guys.  I learned a lot of things over the weekend and lots of it is valuable to our success in the next two months.

Deadlines
Component Editor and Slider
Display-Polygons-Component IDs-Vertices
Approaches for Curve based deformation in Eye - how should we solve using part of Pixar's theory
Scripting for squash and stretch head
Clusters, Cluster Painting tool
Mirroring Blend Shapes
Paint Nonlinear Weights Tool
Wrap Deformers
JLCollision Deformer used for eyes to fit in skull - can we recreate this?
Installing Studio Library
Art of Moving Points - Big 5, understanding deformation order, zones of the face, Avars and their purpose and naming, macro muscles - volume sculpts and translation of movers, one to one zone, x factor, consistency in controls.
Shift+Ctrl and dragging
walking, growing selection, hiding selection, and sculpting points
Multiple Window Technique for Blends

Secondary Rig

We have seen how the Cenk rig gives us the option to visualize a whole bunch of secondary points to manually adjust right on the face.  This is called a Secondary Rig.  This part of Stop Staring explains the hierarchal relationships and what you need to do to pin the secondary points to the moving face.  These controls are for fine tuning and not broad ranges of motion.






Ram Anatomy

Here are some pictures from the anatomy book Jorge had checked out from the library.  Sorry if the pictures are a little fuzzy. Lets keep in mind that we are not trying to emulate muscles for our characters.  We want believable (not realistic) movement of the motion for every part of our characters. Lets take caution when rigging up our ram's legs so they behave in a way that is recognizable as a large quadruped.