Daily rigging puzzle: How can I get rid of that double transform?

Hi again!

So I have this green bone screen top-right that I would like to follow only 50% location of the empty.
Both the bone and the empty share the same parent which is the middle grey bone.
When I move the bendy bone extremity I get the result I want.
Problem is with when I move the parent I get double transformation…
I tried with childOf bone constraint and with location bone constraint but both give double transform/odd result.

What is the proper way to do this in blender?

I linked the file and a video, if video doesn’t work please tell me I will try encode it another way:


cloudRig_childOfBug_005_alt_004.blend (2.0 MB)

Well I kinda solved it by adding more bones:


cloudRig_childOfBug_005_alt_006.blend (2.0 MB)

If there is a simpler way to do this without creating extra bone/constraint that would be nice

Hi; you’re making a ‘Proportional Posing’ automated system for Pose Mode as I woud call it (something analogue to Proportional Editing Option on Edit Mode).

The setups for those are rather complicated and there aren’t a lot of valid possibilities so far I’ve check (I hope I’m wrong about this); nonetheless you seem to have succeeded in the end (Note: I’ve just seen there are files actually, thanks for providing them; you may jump to “PS:” in the end for this message update).

Child Of Bone Constraints are very delicate to be used for that matter, because a Bone that has got this Bone Constraint should not be Parented to any other Bone or it would, in principle, just ‘Stack Tranforms’, which relates to the ‘Double Transforms’ you were experiencing before.
However, the problem with Child Of Bone Constraints is that, without being able to Parent the Bones in a Rig, this can sometimes pose new problems to the Rig structure.

The big picture is much more critical though for a Proportional Posing Rig feature. For example, if it is made for a Facial Rig, the feature must also be tested in relation to Head Bone Transforms and even to the Root Bone Transforms on Pose Mode; to be sure the Proportional Posing Rig feature is valid globally and not only locally.

The method I’m currently using for Proportional Posing Rig feature, implies the following, simple rules:
All the Bones affected by a local Proportional Posing system (e.g., Deform Bones for the Skin Mesh surrounding the Eyes, or Orbicularis Oculi Mesh Region), they should have exactly the same Parent Bone (usually Offset Parenting; could be towards a Head Bone for example, or anything higher enough in the hierarchy), to avoid complications of inadequated translations of Bone Transforms; moreover, these affect Bones all possess a Copy Transforms Bone Constraint(s), on varied Influence (ranging from any Value between 0.000 and 1.000, according to the desired results) towards one, or even more than one, interesting Bone Target (good Targets could be Main/Control Poseable Bone for example).

The ‘pathway’ of Transforms in Blender is rather complicated to graps spontaneously: the Transforms pathways through Bone Parenting, are not in the same category as the Transforms pathways through Bone Constraints. This means that, ultimately, Transforms made on a Bone which are higher on the hierarchy (example: Head Bone), depending on the pathways (Parenting line, and/or Bone Constraints) leading to the lower Bones in the hierarchy (e.g., the Bones on a local Proportional Posing Rig feature), might sometimes fail: either receiving Double Transforms, either missing certain elementary Transforms! The pathways must be organized in non-chaotic ways: so it’s a good idea to focus on logical Parenting strategies, to start with; and then build up Bone Constraints that, should make additional contributions (this is where Child Of Bone Constraints become very complicated to be used in Rigs, because they are one of the easiest ways to conflict with the base Parenting systems).

I have a video here that presents certain valid and invalid possibilites, but it’s not really a tutorial unfortunately; and it’s a bit older (I’ve been finding ways to improve the system since then, towards the instructions that I’ve made in this post).

In this more recent post, I’ve presented information on how to set up that particular system that I’ve mentioned here (Offset Parenting for everyone + Copy Transforms Bone Constraints with varying Influences), on a Bendy Bone Splines Rig case; so, maybe this can help too in confirming ideas:

PS: I believe it’s not required to use Empty Objects.
It can be simplified: if you have Copy Transforms Bone Constraints, instead of Copy Location Bone Constraints, but set to Target: Local Space (With Owner Orientation) and to Owner: Local Space.
But do keep Enabled the Follow B-Bone Option (it also exists for Copy Transforms Bone Constraint).
I cannot test it right now for you, but I believe it is possible. I think the only thing that could go wrong, is that the ORG-Bone.001.left.001, that need to Follow B-Bone with Copy Transforms Bone Constraint set that way I described, might be converging too many Transforms in the same fashion (not too analytical thus), and so that this might require a simple fix by splitting of functionalities: instead of a Copy Transforms Bone Constraint, a Copy Location as you did (with Follow B-Bone), and then perhaps in addition, if that matters to the Rig, a Copy Rotation (and even a Copy Scale) set in specific ways that would match desired effects; this would be therefore a more analytic reconstruction of the Copy Transforms Bone Constraint.

2 Likes

Hi.
You seem to have explored that question a lot!
I remember I had the same problem 3 years ago when I tried do bit of the same but I went back to Maya and forgot about it… Now I re-learn and same problems come back… In those times I remember I saw Ton explaining it in some old thread, I found this, it seems to be related but I don’t understand Matrix stuff:

I see you mess around with the “Local, Local with Parent, Before/After” stuff, all this is very counter intuitive to me, I tried it myself and I just don’t understand the mechanics behind…
I also tried that Invert thing in the location constraint, what I am looking for is exactly that but for childOf constraints. It would cancel the parents transformation.
Like an active “Set Inverse” that refreshes instantly… I don’t know if that could be done.

But Like you seem to be saying, it seems for now I should just parent things to one parent and for mix like thoses, just create extra empties/bones and mix locate/rotate, armature or copy transform between them and just avoid childOf constraints totally.

By the way, I use empties mainly because I HATE having to mess around browsing/typing trying to find the correct armature bone sub-target…
If you or anyone have a way to make it one click when using the picker it would be amazing…
With empties I just use the picker once, click, done.
Problem is Empties are another class of objects and I need to switch modes and stuff like that…
I just don’t understand why there is no picker for bones, maybe cause specific bones can’t be picked in object mode… Whatever.

I don’t think I will try optimize this for now as it seems Blender is just not simple when it’s question of parenting.
I tried again with your copy transform solution but I get loss with the Local/Before/After stuff…
For now I will keep it Parent/MultipleBones/Mix of constraints…
That is nice to know other people like you are into this type of stuff.

2 Likes

Maybe you can try the rbf nodes add-on https://www.braverabbit.com/braverabbit/tools/rbf-nodes/#:~:text=RBF%20Nodes%20is%20a%20node,at%20any%20defined%20sample%20point for setting up a relationship like that?..

I try not to use those cause they are not integrated into Blender and things could break on other versions.
I guess I prefer use more objects and constraints…
I tried that one to create some kind of joystick controller but didn’t quite understood how it interpolated between extremes, had some residual values here and there.
I wasn’t thinking of using that to counter-transform but I guess it’s possible

1 Like

Sorry, I forgot to mention that detail, of the Mix Mode for use of Copy Transforms Bone Constraint.

In my experience, Replace is usually the default when Target & Owner are both set to World Space. However, for this case of Proportional Posing I propose with Target set to Local Space (With Owner Orientation) and Owner set to Local Space, the Before Original (Full)Mix Mode is reliable, and it will grant also freedom of Posing for these Bone-Constraint Bone.

In this timestamp (check the link, not the thumbnail), there is an example:
timestamp

However, I’m presenting this just as an improvement of the method explanation, I’m not sure exactly if that can be conjugated with your particular Rig (because it has got this Follow B-Bone condition problematic).

To a relative fundamental extension at least; I figured out there weren’t many references on that subject; I never required this kind of technique before (I knew it existed though), until I’ve reached certain Facial Rig problematic (presented on my first posted video). And from there on, I started to investigate different possibilities. In the end, I just found out certain good setups can be rather simple to achieve, but they are certainly not that easy to figure out spontaneously in Rigging.

Your intuition regarding the idea of “Inversion” of Transforms is accurate. This is a set of techniques that can work well, especially for Rotation Transforms only Bone Constraints (as it is simple to just Add more Rotation Transforms inputs with different Influence setting, or ‘subtract’, using Inverse inputs with different Influence). However, when it comes to Location Transforms, it usually gets much more complicated to get things functional, also because of the interference of (usually required) Parenting Relation. My experience suggest that dealing with Inversion of Locations should be avoided unless there is a very special reason for that; but it should be safer playing with Inversion of Rotations (but also, not necessarily easy). Spaces matter a lot, and it can get really messed up; if ‘De-Rotations’ or ‘Re-Locations’ of Bones don’t find exact matching of the proper Gizmos Space that were used for the original Transforms inputs, the countering effect will become, logically, disruptive. And sometimes, matching Space is very messy, and requires the creation of properly Aligned, intermediate, ‘Mapping’ Bones, that just would serve as reference for Space. But Custom Space can also be used, but sometimes even that is not enough.
Maybe, there exist interesting cases where Inversion for Location Transforms can be used properly, although I’ve made some experimentation, I currently cannot remember any particular use for this approach: in a great deal, because some of the seamless Proportional Editing features, can be set up with such riskier approach.

This is a Request I think already exists in Blender.Today site; it’s annoying that the Target cannot be found.
But workaround exists:
I usually Select the Target Bone > F2 > Ctrl+C to copy its name > then Ctrl+V on the Bone Constraint’s Bone Target.
Another well-known method, is the Ctrl+Shift+C Operator (found in Armature Menu on Pose Mode); basically there’s are correct order of Bone Selection: Select Target Bone > Multi-Select Owner Bone (or Owner Bone must be Active element in the Selection) > Ctrl+Shift+C and choose a Bone Constraint from the Context Menu which should popup.

If you find the ideal solution for that Rig part (before I take more time to make tets), or something about Inversions use cases, that would be interesting. Good Luck!