Armature: Select a Custom Space for Bones that don't Inherit Rotation
Picture this: You have a character with rigged hair.
You want the hair to fall naturally, without being subject to the head's rotation, so you uncheck Inherit Rotation
You also want to have a bone that lets you rotate the character around their center of gravity.
You set that up and oh no! You can't- because the hair doesn't Inherit the Rotation of the head, it also ignores the Center of Gravity bone, so you end up having to move it manually regardless.
You try giving each root hair bone a Copy Rotation Constraint and have them copy the rotation of the Center of Gravity bone. That doesn't work either- you discover that there is no combination of settings that makes it behave appropriately.
You could give each root hair bone a helper bone and attach them via a Copy Location Constraint, then parent the root bones to the Center of Gravity Bone. This works! ...But then you have twenty extra bones cluttering things up- especially if you have several other similar character parts that need the same treatment.
Solution:
Instead, imagine if you could set a Custom Space via an object when Inherit Rotation is deselected- it would function much like the Copy X Constraints' Custom Space option, and operate such that the bone treats the assigned object as the World Space that it would normally be subject to when not Inheriting
Thanks to this, we can parent the hair to the head, uncheck Inherit Rotation, and then just set the Custom Space to our Center of Gravity bone. The hair stays attached where it should, rotates as it should, and you didn't have to make dozens of extra helper bones.
1 Comment
Hi. I think the whole system of Spaces for Bone Constraints, would require a revision. But I cannot tell right now if your proposition is the way to go in that direction.
As for a Rig feature that solves that issue you described, I believe there is a Rig Setup, simple to achieve, but complex to conceive, which can do the job.
Unfortunately, the forum here doesn't help, otherwise I would have posted an image or video about that already.
A plausible solution in current Blender, revolves around the concept of "Transforms Pathways" as I call it. The main intricacy is that a Bone on Pose Mode will respond to Transforms in different levels (or "Pathways"); the Parenting Relation Transforms Pathway is NOT equivalent to the Bone Constraint Transforms Pathway for example. In this sense, it is possible, for a Hair Bone, to avoid the rigid Parenting Relation to an immediate higher hierarchy Bone (such as the Head Bone), instead Parenting it Offset to an even higher hierarchy Bone (maybe the CoG Bone), so that the Hair Bone will respond to the Head but only through more versatile Bone Constraints, corresponding then to a Bone Constraint Transforms Pathway. These Pathways will clearly operate in a 'splitted' way, hence it would be possible to integrate the desired Rig behavior of the Hair in relation to the Head Posing and the overarching CoG Posing. However, a Head Buffer Bone, Parented Offset also to the CoG Bone, would be necessary, so that it would 'transfer', through Bone Constraints Pathway, ONLY the Location of the real Head Bone to the Hair Bone, and for that, the Head Buffer Bone must employ a Copy Location Bone Constraint Targeting the Head Bone.
As for the Hair Bone(s) (the basal ones at least, for each Hair Strand if applicable), it (they) need to have a very specific Bone Constraint Setup, which is another concept that I call a: "FK-behavior for Arc of Motion F-Curve Interpolation Fake Parenting Copy Transforms Bone Constraint". Essentially, it is a Copy Transforms Bone Constraints which can often substitute a Child of Bone Constraint or an Armature Bone Constraint, as it mimics a Disconnected/Offset Parenting Relation in terms of Pivoting Point (thus, 'FK-behavior for Arc of Motion F-Curve Interpolation'), while NOT implementing a Parenting Relation (thus, 'Fake Parenting'), AND while allowing (because of the "Mix" employed) for an actual Parenting Relation to exist (in addition the Copy Transforms Bone Constraint itself) without causing the typical Stacking/Double Transforms (which occurs structurally with Child of Bone Constraint and Armature Bone Constraint, which should avoid Parenting Relation).
This Copy Transforms Bone Constraint works as follow:
Target: [Armature]
Bone: [Head Buffer Bone]
Head/Tail: 0.000
Mix: Before Original (Full)
Target: Local Space
Owner: Custom Space
Object: [Armature]
Target: [Head Buffer Bone]
Influence: 1.000
I've been trying to popularize this Copy Transaforms Bone Constraint technique and those concepts, but it is not that easy.
There might be other alternatives, but this one seems to work, according to the some theorertical understanding and the quick tests I've made.
I hope this helps.