When I’m animating a high-res plane, I need several joints to be able to bend it smoothly, in this specific example I’m using 50 joints to control a plane. The thing is, I want to control all of these 50 joints with 10 controllers as it’s really hard to animate with 50 joints.
So here’s what I’ve done so far:
[ul]
[li]Created an EP Curve with 10 points[/li][li]Created a chain of 10 joints along the curve (animation joints)[/li][li]Created a chain of 50 joints along the curve (joints that will be skinned to the plane)[/li][li]Skinned the 10 joints to the EP Curve[/li][li]Created an ikSpline on the chain with 50 joints with the EP Curve as a input curve[/li][li]Skinned the plane to the chain with 50 joints[/li][/ul]
This works great, however as I’m using the ikSpline to control all of the skinJoints, I don’t have the standard FK functionality, I can’t twist the joints without using the advanced twist control. Rotate Y/Z works as if it were an FK chain, but rotate X won’t do anything.
The chain with 10 joints deforms the chain with 50 joints nicely until I get the flipping. If I define any kind of advanced twist control, it will flip if I the entire chain goes past 180 degrees. If I turn off the advanced twist control, it seems to work fine, but it still flips at some angles.
i would go for a ribbon setup instead of hte ik spline,
use 10 joints to drive a nurbs plane
attahc 50 follicles to the nurbs plane and let them drive 50 joints
only flipping that will occur is the limit of the joint rotation
to fix this you can add a nurbsplane with the same length as a blendshape to the first created nurbsplane (make sure its the first deformer in the stack)
drive this new nurbsplane with a twistdeformer
The spline IK solver is (unforgivably) very sensitive to local joint orientations in the underlying bones. If you use aligned on x, xyz rotate order for the underlying joints it works much more predictable.
if you want FK behavior with with fewer controls, you could try a variant on the2+1 spine, with the additional refinement that you only FK animate every 3d or 4th joint and drive the in-betweens with SDKs or expressions. That gets your down from 150 degrees of freedom to around 25.
Yeah, I’d say best bet is to do a ribbon spin. It tends to work well for controlling a dense chain in a stable and smooth way. If you’re married to the Spline IK idea, then you could split the spline in to 5 or 10 splines so you can get individual advanced twist localized to each area. If you want to have a ribbon spine with x twist beyond 180 without flipping, if you stick to a certain rotation order, you can swing it using a variation off Marin Petrov’s site (which is down right now, or I’d link directly to the tutorial) to use rotation to hook up to the simple base and end twist values on the handle. You could instead use that same setup and instead hook that up to base and end twist on a twist deformer applied before the skin (though you’d have to take care to make it not have twist from the joints that are controlling the spline) It’s a bit complicated to set up, but I’ve used it for arm mid twist joints pretty successfully.
You can also use a spline that is skinned to a simpler skeleton. That lets you have some simple FK control facing the animator, but lots of bones under the hood.