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