Skirt Rig with Drivers not working

The rig looks like a typical rigify setup with 8 arms with 2 bones each sticking out to form the skirt. The way my skirt rig works is that the upper skirt bones use drivers to copy the rotation of both legs and add together the results with an additional bone in the center to control the flowing of the skirt. There are some Limit Rotation bone constraints on the skirt bones that I use for the back and front rotation to prevent the skirt from bending inwards and causing clipping issues with the pelvis and other leg.

So far, I have managed to make my rig work when

-Left leg only moves side to side
-Left leg only moves back and forth
-Right leg only moves side to side
-Right leg only moves back and forth
-Both legs move together side to side
-Both legs move apart side to side

But I start to experience problems whenever I try to make

-Both legs move back or forth simultaneously
-One leg moves back, other leg moves forward

On the first problem, the bones copy the rotation of both the legs and add them together, which causes the skirt to rise twice as high when they both move. The limit rotation also prevents the back of the skirt from bending, which I designed so that when one leg is down, the back of the skirt doesn’t clip with the leg, but is unnecessary when both legs are up.

On the second problem, both legs clipped through the skirt as the bones try to factor in the result of the rotation of both legs and not match up with either.

My theory for a solution is to adjust the drivers so that when I bend the leg forward, it would follow a different set of rules than if I were to bend the leg backwards. For example, the back of the skirt would copy the rotation of the leg when it bends backwards, but be a lot more subdued when the leg bends forward, but I am not sure how to make this happen or even if such a solution would work properly. Another theory I had was to apply drivers to the Limit Rotation constraints to be more dependent on the rotation of the legs, but I’m sure it wouldn’t fix the second problem and may not even fix the first.

Blend file:
http://pasteall.org/blend/index.php?id=43503

Preview:
[ATTACH=CONFIG]452690[/ATTACH]

Sounds like a repeating circle of Hell with a lot of double and conflicting transform issues.

Perhaps a more simple method would be to use shape keys driven by the leg bone rotation angle for the displacement movement of the skirt as it is effected by the legs. Just position a leg and model and sculpt the skirt around it. These can be subtly adjusted for both right and left leg. So that when they move together the skirt can still make a shape of the combined left and right leg shape keys that will look convincing. It can be a lot easier than wiring up so many interdependent rotation drivers

Then just use the skirt bones for the secondary movement such as bounce and swish. Layering the two methods might look quite effective.

Thank you for the reply, but I’m still having trouble trying to fix the skirt. The problem with shape keys is that it still relies on an additive formula, so when both legs go up, it will add up both the left leg and the right leg shape key to rise twice as high.

The result using shape keys:
[ATTACH=CONFIG]453107[/ATTACH]

You can get it to adjust by taking off the offset on the skirt bones and then adjust the influence as the leg moves. You may need to use a script in the driver to get it where you want.