Rigging a 'Reverse FK' rig

Hey hey riggers,

I’ve been trying to figure out a rigging solution for my animator where he wants a chain of bones to be rigged so that it can work on FK mode towards both directions, about a dynamic joint in the middle. So for example, if he sets the 3rd bone as the ‘pivot’ out of a chain of 10 bones, the hierarchy of the controls would go somewhat like this:

1<2<3-4>5>6>7>8>9>10

This way he can animate rotation follow through outwards, about that custom point in the middle. In the middle of animation, he should be able to switch that custom point to say the 7th bone, and now the new hierarchy would be something like this:

1<2<3<4<5<6<7-8>9>10

The switch should be seamless (like an FK-IK switch) and keep the existing transform of the bone hierarchy.

I’ve been trying to figure this out the past week. and I’ve tried two approaches to do this. One uses 2 sets of bone hierarchies, one going forward and the other reverse and the rig switches the orientation influence. This works, but i can’t get the two hierarchies to match up in the middle of animations without getting cyclic hierarchy errors. In the other approach I used link constraints (yep, i’m using max) but the links just wouldn’t let me switch to the correct controls. Max doesn’t give me an error, but my best guess would be that its running into the cyclic hierarchy errors again.

It would be cool if I could get some pointers in the right direction from the awesome people in here :slight_smile:

I would have thought that you would bake the anim out to locators, reparent the hierarchy, bake the animation back?

[QUOTE=ldunham1;23534]I would have thought that you would bake the anim out to locators, reparent the hierarchy, bake the animation back?[/QUOTE]
I’ve never seen rigs which changed actual node hierarchies in the middle of animations. Is that a thing? It sounds pretty cool at first thought.

For my case, the hierarchy of the joints needs to be consistent, since its a game rig. Also, Max doesn’t allow changing hierarchies while in keying mode. I’ve tried re-parenting using link constraints, but the hierarchy change that i showed in the OP doesn’t work with link constraints while in animation.

You can do this without changing the actual hierarchy - you just target to either a spline IK or a series of one link IKs. Those are driven off of locators for position and rotation. The locators , in turn, are driven by constraints (usually parent constraints) on some other skeleton(s) with the control layout you want. You can blend between multiple setups by crossfading the constraint weights. The main issue is handling the twist rotations along the chain , especially in Maya where euler issues will drive you crazy.

It’s not that different from the old ‘divine spine’ layout that (I thnk that was a Jason Schlieffer rig from the early 2000’s but I may be misremembering).

^ much better idea ^

Agreed, Idunham1, this is the approach that looked most promising when I tried as well. Although, I used floating joints as the skinned skeleton and crossfaded the position and orientation constraint weights of the control setups.

[QUOTE=Theodox;23538] You can blend between multiple setups by crossfading the constraint weights.[/QUOTE]

The control setups that I’m trying to blend between are two separate bone hierarchies:

Hierarchy A: (child) 1<2<3<4<5<6<7<8<9<10 (parent)

        and

Hierarchy B: 10>9>8>7>6>5>4>3>2>1

The main trouble I’m having now is with with matching these two hierarchies when a switch is made in the middle of animation. The matching causes annoying, unwanted micro-offsets. I’m assuming this is happening because i built the rig by hand and must have made some errors in positioning the bones correctly. I’m going to try this approach a few more times this week with IK+joints instead of floating joints as the skinned skeleton.

Another reason for the micro offsets would be that once i have all this set up, it gets really messy with all the nodes and connections, which makes it very error prone. This solution just doesn’t feel clean and elegant when I’m doing it, at least in 3ds Max.

Oh, and thanks for all your suggestions, really appreciate it! :slight_smile:

In Maya you’d use ‘maintain offset’ on the locators to keep the blending clean; in max you might need to make duplicate the locators and link-controler them to the control skeleton. Ideally all of the locators share identical positions and orientations in the rest pose.

That said, the limitation of this setup is that interpolation between radically different poses will cause artifacts. The spine targets will lerp betwen the pose of skeleton A and the pose of skeleton B, if A and B have a lot of curvature the positional lerps shorten the length of the interpolated chains (in this regard it works almost like linear skinning around an elbow or knee, if you can visualize that).

There’s not an easy fix for that one. It’s not unlike a reverse foot setup where the blend between a foot posed up on the heel and one posed up on the toe is wonky because the spaces don’t line up. It’s more of a ‘use A for this move, B for that move’ kind of thing

i would try to do something similar as this: http://vimeo.com/49353110