I am trying to figure out the most optimal way to rig things like hair strands, cables, tentacles, etc. I am looking to make a strand that is moved with a controller at the tip, but then has multiple control points along it's length. Essentially, I'm looking for the same sort of effect you can get from editing a multi-point curve with proportional editing, but on bones.
Another way to state it would be a bendy bone rig that uses a single deform bone (with head and tail) as described in this tutorial, but that then has more control points along it's length.
Spline-IK with multiple hooks controlling a bone chain is close, but does not have local Y roll, and I can't get it to properly copy rotation.
Here is my current rig:
This rig consists of: - A root bone that does nothing - A bezier curve with only 2 control points(pictured but occluded) - 4 bone chain spline-IKed to the curve (not pictured but in same place as bendy bones) - 4 tweak controller bones that are children of the 4 spline-IKed bones (the spheres) - 4 deform bones that are constrained to stretch to the 4 tweak bones (the visible bendy bones) - A hook bone that controls the tail curve control point and has Limit Distance on the rig bone - A master controller bone (the 5th sphere) that is the parent of the hook bone.
All of this works great. I can use the hook bone or master controller bone to move the curve's control point, and the whole strand follows. I can then manually go in and use the Tweak bone to add waviness, as shown in the picture. The problem is that I've got no local Y rotation.
My plan was to get the needed Roll by having the Deform/bendy bones copy rotation of the local Y of the Hook bone (probably at diminishing amounts). The problem is that they misbehave badly.
When the strand is straight, they behave fine. When i move the hook/controller and the strand starts to bend, they cease to properly copy rotation. Sometimes they'll copy a bit, sometimes none, and sometimes they'll twist 180 degrees and kill the mesh. If I'm rotating the control bone instead of the hook, they don't get the hook's rotation, unless I set them to Local with Parent, but then they still do various odd twisting (just different forms of it.)
I've tried changing the order of the copy rotation and stretch to constraints, but both have problems (but slightly different ones, so I'm wondering if the Stretch To is killing the Roll.)
I'm looking for a way to solve these copy rotation problems, or any alternative ways to build a rig that will do something similar.
Try putting it in some bend poses and then rotate the hook bone or controller on local Y and you'll start seeing problems.
UPDATE 2: This answer has solved the copy rotation problems. What now remains is issues with the stretch bones. When rotating at extreme angles, the stretch bones start flipping 180deg on local y, causing horrible twisting.