Page MenuHome

Copy Attributes copy visual transformation (e.g. location/rotation) problem with Child Of constraint
Closed, ArchivedPublic


Blender Version
Broken: 2.79

Short description of error
I'm trying to use the "Copy Visual Location" and "Copy Visual Rotation" functions from the Copy Attributes addon to get around a problem in rigging a character.
(BlenderArtists post:

Normally, copying visual transformation works perfectly fine. But when the bone having the visual transformation applied to has a Child Of constraint, the result is always offset. Demo:

Example file attached.



Event Timeline

You just have to press Set Inverse button of Constraint to obtain desired result.

Thanks for the quick reply, @ronan ducluzeau (zeauro).

While what you suggest is true, this is actually a part of a bigger system that will be animated where I can't be clicking on the "Set Inverse" button whenever (Refer to the BlenderArtist post:

Unless there's a way to keyframe "Set Inverse"..?

I re-read your thread on Blenderartist. And I don't think this case was anticipated when constraint was made.
The idea was to use influence slider as a posing tool and only insert visual keyframe to finally don't use constraint at all while playing the animation.
So from this perspective, it looks like a bad idea to add a driver to a second Child of constraint.

I am not so experienced in animation and rigging.
So, it would be better to wait from @Joshua Leung (aligorith) 's opinion.

Thanks, @ronan ducluzeau (zeauro), I appreciate the feedback.

Ultimately, my problem is what's in the forum thread, but one solution to it is if I could get what I reported here resolved.

If @Joshua Leung (aligorith) has a way to resolve this, or could suggest how to tackle the original problem, that'd be awesome.

Sergey Sharybin (sergey) triaged this task as Needs Information from User priority.

Please follow bug report guidelines and provide steps to reproduce localized problem.

Reading forum discussion is something we can not do in a reasonable time. So please isolate the problem and make it minimum required steps to reproduce.

Hi, @Sergey Sharybin (sergey). The forum discussion is just to contextualize my problem, but reading it is not necessary to replicate the problem in this report.

To see the problem, you can download the .blend file and copy the steps as in the animated .gif. Here're written steps if needed:

  1. Enable the "Copy Attributes" addon.
  2. Create a bone (Bone A, let's say) with a Child Of constraint to another bone (Bone B).
  3. Move Bone B.
  4. Create another bone (Bone C).
  5. Select Bone A (The one with the Child Of constraint), then shift select Bone C.
  6. Press [Ctrl]+[c] to bring up the Copy Attributes menu.
  7. Select a visual transformation (e.g. "Copy Visual Location")

You'll see that it doesn't do the expected behavior (snapping Bone A to exact location of Bone C), but is offset due to the Child Of constraint.

Christopher Anderssarian (Christopher_Anderssarian) raised the priority of this task from Needs Information from User to Needs Triage by Developer.

Additional information has been provided.

Brendon Murphy (meta-androcto) closed this task as Archived.

hi, archiving this for now, task is over 1 year no activity.

You'll see that it doesn't do the expected behavior (snapping Bone A to exact location of Bone C), but is offset due to the Child Of constraint.

The behavior (snapping Bone A to exact location of Bone C), is offset due to the Child Of constraint bone a to bone b seems correct? whilst not working as you expect, I would have expected an offset as bone c is trying to take into account 2 positions?
feel free to submit a new task if the issue still exists in Blender 2.8

As a user, I expect it to literally copy the visual transformation, not copy visual transformation but still offset based on constraint. If I wanted that, I might try to copy local transformation, but not visual.

In contrast, doing a similar thing with objects (like cubes), produces an expected behavior.

  1. Create Cube A.
  2. Cube B.
  3. Make Cube B a parent of Cube A (Not Child Of constraint).
  4. Create Cube C.
  5. Select Cube A (the child) and shift select Cube C.
  6. Press [Ctrl]+[c] and select "Copy Location".

You'll note Cube A will snap to Cube C's exact location regardless of having a parent with offset location, which is the expected behavior.

And, yes, the issue still exists in Blender 2.8. I guess I can create a new task just to simply link back to this one, but isn't that unnecessarily redundant? You sure you don't want me to just edit the original post to include Blender 2.8?