Bone Constaint | Before Original, After Original and Add looks broken

People how to use Before Original, After Original and (Add with World Position)?
After Original looks strange. It should create impact for childs, not for target.
World Position looks good only on replace.
Before Original has no effect. For it i create a test. Look
I have bone in end of line that doesnt get affected by parents of parented bone. However, if parented bone move the end bone rotates. (First column of picture)
After i create copy rotation constraint with “before original mix”. It means, i guess, bone target has no affect of bone constraint, only his phantom parent. However while moving copied rotation bone, the end bone move as if constaint was as “add or replace”. How to use this mix? I have no idea.

Hi @Frayme what is it you are trying to achieve or are you just trying to understand how bone constraints work in Blender?

Hi. Those are ‘Mixers’. Very hard to use or understand; possibly bugged.

The best one in my experience, and very powerful one, is the Mix: Before Original (Full).
Yes, you can use it for just a Copy Rotation Bone Constraint… basically it allows, a bit like the Mix: Add (but sometimes more reliable than it), to stack multiple Transforms, one after the other.

However, the most powerful use of that Mix Option comes from the Copy Transforms Bone Constraint, where it can become a ‘Fake-Parenting-FK-behavior’ Copy Transforms Bone Constraint* (see 2 videos with timestamps); mimicking the behavior of an Offset/Disconnected Parenting Relation, while at the same time, allowing (because it’s a ‘Mixer’), a Parenting Relation to exist for the Bone-Constraint Bone in that way --differently from a Child of Bone Constraint or an Armature Bone Constraint, which cannot have their Owner Bone Parented, otherwise it would cause Double/Stacking Transforms.

2 timpestamped videos:

When it comes to just the Copy Rotation Bone Constraint, because that one doesn’t immediately involves any Location Transforms (Pivoting for ballistic Rotation of the Owner Bone won’t occur), a similar configuration of the Bone Constraint should work for ‘Faking’ a Parenting Relation but just for the Rotation in place, but it’s not like this cannot be achieved through something like a Mix: Before Original (Full), a Target: Local Space (With Owner Orientation) and an Owner: Local Space configuration. To be fair, you’d need to test both configurations, in the Copy Rotation Bone Constraint, as there might be differences.

Many of those Transforms systems in Blender are limited (if not deprecated or underdeveloped unfortunately; I think they deserved a complete, clear, advanced revamping). Rotation Transforms, however, is probably the worst of all. Scale is pretty bad too. And Location is a bit like… pairing with Scale in the problems it causes almost as much as it solves.

Mix: After Original (Full); on rare occasions, I was able to find a use for that one; like, if you couple two Bone Constraints of the same configuration, but the previous one Before Original (Full), and the next one After Original (Full), they (sometimes) combine well; otherwise, just use 2 Before Original (Full).

As for all the other four remaining Mixes, as much as I have tried, I’m unable to currently state any pratcial use for them; if it ever exists, it is really, really niched.

Hello. I think constraint does phantom calculations which will be sum after baking none animation.
I try to understand mix “before original”.
Description says its affect as target is parent and the bone doesnt get transformation of its own(no phantom parent). But it gets.

Its really great you answer to me. I wonder you wrote so more. I really need time to understand this complex system.
But i think i understand the core.
-Before Original is to mix a lot of constraints and get (sum result) before the main transform.
-Constraint system need some fix.
P.S. i really looking for implementing geometry node to constaints. We have Mantis addon, but its only for rig generation for now(.
I just want to create BONE-CHAIN and some bones can be bone-constrainted. But all constaint effect should not affect to the rest of bones.
I mean. if constained bone move by its own- rest bones will be rotate(global) with the constrained bone. If the constrained move with target constraint- rest bones wont rotate.
For that i need to create real-Fake-Parent and it makes my rig more complex. I just need, the constrained bone rotates by phantom parenting transformation, no its own rotation, because other bones have to rotate only when the constrained bone has local transformation.
Im sorry, its maybe complex also.
I thank you!

I think if I knew what you were trying to achieve I could help you but I think this behaviour you are getting is to do with a combination of things such as the fact that you have disabled inherit rotation from the parent bone but then added a copy rotation constraint that is copying the rotation of the parent but it’s in local space so if the parent bone doesn’t get rotated directly then the child bone won’t rotate but its location will update.

Synopsis from the end

Blockquote
A lot of that Bones may be expensive. It would be great just to code custom constraint to just ignore rotations, scale of RefBones in Parent and rotates only when parent moves by its own.

I want to show you last thing i tried. I know its not good think.
I created pre rig coat to animate it during body animation.


IDEA: i created BONE CHAIN to animate sides of coat. Lets name: CoatBones.
And i have bones that parented to body. Its name: RefBones.
I wanted that scale, location and rotation of RefBones transfers to CoatBones but without changing local transformation, because it leads to uncontrol moving of CoatBones while animating.

And it should has worked like this
Purple Bones is CoatBones
Pic0: Base state

Pic1: body moves

Pic2: CoatBones Moves. It works like FK

I wanted rest CoatBones moves(global) when previous bone Moves by its own(not by constrain). While constrain movement they doesnt move at all.
I need that all transformation of RefBones transfers to CoatBones
not like localTransformation but like parents transformation, because rest ChainBone copy rotation of previous Bone.
For that i created MCH bone that gets all rotation of RefBones and moves CoatBone like a parent.

A lot of that Bones may be expensive. It would be great just to code custom constraint to just ignore rotations, scale of RefBones in Parent and rotates only when parent moves by its own.

Okay so just to be clear, you want the coat bone chain to copy the transforms of the reference bone chain that is a child of the body but then be able to make additional transform offsets to the coat bone chains?

I guess you understand me right.

Like this?

Little bit complex


Each Ref Bone parented with body. And stretched to next bone/
And CoatBone copyTransformations from RefBone.

So it’s not what you want? I’m sorry I’m still not sure what you want to do. You have animated the ref bones ahead of time to represent the coats movement and now you want the new coat bones to copy the transforms of the already animated ref bones. That is what my demonstration does.

Are you trying to create stretch and pinch between the chest and hip bones in the reference bone chain and now you want the coat bone chain to imitate that?

I thought it would be easy to understand rig system. It start to be difficult. No need to worry so i think.
I just wanted to optimise rig, and make calculations simpler.
There is local transformations and transformations from constraint. I wanted to allow childrens use only local transformation ignoring constrains transformation of parent. Before original doesnt work like that i guess.
Person above said me that is cant be made by constraint limitations.

Okay well I still don’t know what you want but I’m sure it can be done with the right setup. I have done many complex rigs in Blender but I can’t do it if I don’t understand the application. I can keep trying to help you but if not then I wish you best of luck finding a solution.

CoatRig.blend (331.0 KB)

I’m leaving this here in case someone else finds it useful.

Thank you for help. Im really sorry. But im glad you talked to me about this problem.
You re great guy

Please don’t be sorry. I would like to help and I still believe I can but maybe someone else has an idea.

Maybe if you upload a video of the rig in motion it might be easier to see the problem.