Two New Tools

I finally got around to publishing two new tools, ml_convertRotationOrder, and ml_lockAndHideAttributes. They’re pretty straightforward, nothing too fancy, but I’ve found they can be useful to have wrapped up like this. Head over to the tools page if you’d like to check them out.

ml_convertRotationOrder.py is for changing the rotation order of an object that has already been animated. Sometimes you start animation without considering the rotation order, or the needs of the animation changes and you realize a different rotation order would be better. One way to preserve your animation is to bake it out to locators, but this tools goes through and uses the xform command to change the rotation order on each keyframe without affecting the orientation. It’s a faster and more accurate process.

ml_lockAndHideAttributes.py also does pretty much just what it says. It’s a wrapper for quickly being able to lock and/or hide attributes by selecting them in the channel box, and then unlocking and unhiding attributes without having to open the obnoxious channel control window. Unhiding will show all default and user defined attributes on a node. I have these commands set as hotkeys, which makes it easy to troubleshoot rigs when you need to quickly look at hidden attributes or move locked nodes. You can create hotkeys easily by right-clicking on the buttons in the UI.

Posted in Maya, Tools | Leave a comment

One More Tintin Trailer

The newest international trailer for Tintin has been released online. No more teasing, this one shows off a lot and gives you a better feel for the movie:

Posted in News, Tintin, Weta | Leave a comment

I’m Alive!

Tintin is mostly finished in animation now, so hopefully I’ll have a little more time to post. There’s a couple more tools I want to work on, I’d like to put together a concept for a quadruped foreleg, and pretty soon I need to start drawing, gathering reference, and modelling my dog. Stay tuned!

Posted in News | Leave a comment

Two Photos

These are two photos that I took from the plane during our trip, I thought they looked neat and abstract stacked together like this:

Posted in New Zealand | 3 Comments

New Tintin Trailer

I haven’t been posting much, we just got back from a quick California vacation, and work is really getting busy. But I had to post the new Tintin trailer!

Posted in Tintin, Weta | Leave a comment

The Hind Leg

The hind leg of a quadruped is quite a bit different from a standard biped leg. Technically the anatomy is similar, but for a dog, unlike a biped, their “heel” doesn’t rest on the ground. For riggers and animators, this is kind of like having an extra knee to deal with. Most rigs, I’ve generally found, just treat this setup the same as an inverse foot, locking the orientation of that last joint to the ik control and supplying an attribute to rotate it manually. That’s not a bad solution, because for animators it’s consistent with other types of rigs, and for riggers it can usually be built quickly with existing tools. So it works, but I’ve never been completely happy with that type of setup because the ankle requires a lot of attention just to get it moving properly with the rest of the leg. Many running quadrupeds, including dogs, have a pretty tight relationship between the knee and ankle, and I wanted a setup which automated that motion as much as possible, without sacrificing control.

So I laid out some goals for how I would want a hind leg to behave:

  • Effects of the IK should be evenly distributed between both the knee and ankle.
  • Pulling the IK control away should result in a perfectly straight leg before breaking, stretching or pulling away from the foot.
  • Pole Vector twists the whole leg, not just the knee, which is another byproduct of a standard inverse foot setup.
  • The ratio between the knee and the ankle, which I’m calling “pitch,” should be controllable as an attribute.
  • Possibly other attributes for twisting non-uniformly, or breaking the plane of the leg to bow it in and out.

One of the key component in getting all of this to work is the ikSpringSolver, which for some reason is a super secret IK solver in Maya. It doesn’t have a front-end, so you have to create it from the command line. But basically it’s a nice solver for chains longer than 2 bones, which need to collapse evenly and alternately, kind of like a spring, but more like a long strip of folded paper or something.

Anyway, best just to jump right into it. Here’s a basic joint chain for a hind leg, the hip, knee, ankle, foot:

Assigning just a regular IK handle to the whole chain might be the first instinct, and it’s worth trying out. At first glance you standard IK will appear to work fine, but when you compress this chain, you may begin to see its limitations as the joints rotate past eachother:

Furthermore, there’s nothing we can to do in the ik system to fix this pose.

This is where the ikSpringSolver comes in. To use the ikSpringSolver, you first have to initialize it by typing:

ikSpringSolver;

into the MEL command line. Then you create an ik handle by using the ikHandle command with “ikSpringSolver” as the -solver argument. Select the first and last joint, and then run this:

ikHandle -solver ikSpringSolver;

Now for some reason that I haven’t really narrowed down yet (maybe someone else has some insight on this), sometimes the chain will flip when you create this solver. I think it’s just a case of the pole vector being in the wrong spot, so assigning a pole vector constraint seems like it might be the only thing you need to do to fix it. I’m not sure if that will turn into a bigger issue or not.

So the ikSpringSolver is half of it. If you go into the ikSpringSolver attributes, you’ll find it has its own section where you can adjust the weighting of the joints in the system using a ramp, but while this is a cool feature, it doesn’t give you quite enough control. If you play around with it, you’ll find that it only has a subtle affect, and only when it’s not in the default pose:

It’s cool, but not quite the solution we’re looking for. But what you can do is nest another ik system underneath this one. Nesting IK systems is a very simple and useful technique, all it means is building another chain and IK handle that is a child of this system.

So we’re going to make a new rig to control the pitch of the leg. Duplicate the whole chain, and then create a regular ikRPSolver from the knee to the foot creating a basic two-joint ik chain. The result would look something like this when you move the new handle by itself:

Parent the duplicated chain under the hip of the primary chain, so that the top joint inherits the hip motion from the ikSpringSolver. Finally parent that new ikHandle under the ikSpringSolver handle. Now when you move the parent handle, the secondary chain follows the primary one exactly.

The benefit is now is that there’s one joint which isn’t being directly controlled by an IKhandle: the secondary hip. Rotate it and you’ll be changing the pitch of the leg:

This is the most basic example. Depending on the functionality you want, you can also do the same thing but with an inverse IK setup for the secondary chain. In either case, the rotation can be hooked up to an attribute to control pitch from the foot control. For additional clean-up, create a pole vector control for the spring chain, and then make the secondary chain follow along by setting its pole vector to the be the corresponding joint in the primary chain.

So here’s a short clip of the hind leg as I have it currently set up. In this example there’s another fancy thing going on. I’ve created a distance node, set up like you would for a stretchy system, but instead it’s hooked up to a remap value node to feather off the influence of the pitch effect as the leg gets stretched or compressed. That way you can’t pitch the leg when it’s completely straight, and a pitched leg will still stretch and compress evenly.

So, I hope that was interesting! I’ve been working on a foreleg as well, hopefully post that one soon.

UPDATE:

As the resourceful commenters discovered, the ikSpringSolver behaves a bit differently from the ik solvers that we’re used to. Whereas a regular ik handle will respect a pole vector constraint regardless of where they each are in the hierarchy, the spring solver inherits twist from its chain’s local space, which can lead to double transforms. A solution is to keep the ikSpringSolver chain (not the handle) outside of the local hierarchy, in worldspace, and point constrain it so that it doesn’t inherit rotation.

Posted in Devo, Rigging | 10 Comments

Tintin…The Game

I guess it was bound to happen:

Posted in Tintin | Leave a comment

Reel Feedback

Some friends from Tippett have started a new service called Reel Feedback, where students, new graduates, and animators looking for work can get their reel thoroughly critiqued by industry professionals. Check out the site, I know the guys and they’re all fantastic animators (you can find some of them in the links to the right). If you’re looking for practical feedback on your reel, especially creature stuff, I reckon you’ll find it from them.

Posted in Animation, News, Tippett | Leave a comment

New Apes Trailer

Posted in Weta | Leave a comment

New Jay Clay Short

Timothy Hittle released a new short starring Jay Clay and his dog Blue. A couple years ago I bought a Jay Clay DVD directly from Timothy after I saw a clip online or at a festival or something, I can’t remember. Anyway, it feels like a long time since then so it’s great to see the character again. I love the simple found-object sets and props, and the basic monochrome characters, because it really emphasizes how good the animation is. I think it’s some of the best examples of weight, fluidity and posing that you can find in stop motion. Every pose looks sculpted, and it’s hard to believe it’s just clay sometimes.

The Quiet Life from Timothy Hittle on Vimeo.

Posted in Animation, Stop Motion | 1 Comment