Michael asked me to rig his dinosaur skeleton, so I started on that last week.
At first I thought it would be a fairly simple affair – IK spline in the neck and tail, standard IK/FK limbs, you know.
At first I tried parent constraining them to the joints, but that meant having a joint for each bone which seemed unnecessarily heavy. It also meant I’d have to place the joints perfectly in order to get the right orientations to each bone when the joints rotated. Needless to say it didn’t work out quite as expected.
I ended up basically setting up a ribbon, but instead of joints parented to the follicles, I constrained the bones to ’em. That gave a much nicer orientation down the chain and allowed me to take down the joint count.
Then came the problem of finding a way to nicely control the neck. Like I said, I thought a simple spline chain would make for a simple control system. The problem with that was that unless I had about 5 control joints, and therefore 5 controls for the animators to flounder about with, it didn’t give a very nice falloff between the controls. What’s more, it would require way too many controls to get what should be a very simple affect. Since this character is really more of a set piece, the animation of it shouldn’t require very much effort.
I tried a couple of other things, but ultimately I’ve gone for a single control. The rotates are plugged (through a multiplyDivide node so the effect isn’t so drastic) through a plusMinusAverage node into the joints.
(You’ll notice there’s one joint out of whack there – I’ve fixed that issue since. That was an artifact from when the rotates for this went to a separate joint chain than the aim rotates mentioned below.)
There’s also a cone hidden at the base of the neck which is aim constrained to the control. The rotates from the cone are slapped through a multiplyDivide node into that same plusMinusAverage node. They’re multiplying by a positive number for the first half joints and a negative number for the second half, so that the neck gets a nice ‘S’ shape.
I was going to set up the ropes on the neck with dynamics using nHair, but it turns out that the connections on the neck bones were so close together that the dynamics were barely noticeable. Instead I slapped a bone at each connection (I know, I know) and bound the ropes to the bones. The joints are parent constrained to the geo. Looks great, and it’s no where near as heavy as the nHair. Still might use that on the tail rope though, which is a lot looser.
I spent most of the lab time today setting up the leg joints (to which the geo is just parent constrained) and figuring out how the movement should look for those. Michael wants the toes to splay slightly (kinda like an elephants’) as the foot falls, so I’m gonna have some fun setting up set driven keys that look nice.
After that, the main challenge will be sorting out the clavicles – since I’m dealing with the actual bones and not skin, it’s not just a matter of getting nice deformation (which I could kinda fudge together) to fake the movement. I actually have to get the movement to look realistic and be easily controlled. So that’ll be fun.