Page MenuHome

Evaluation issue when driving a parent's transformation by the opposite of its child's transformation.
Closed, ArchivedPublic


System Information
Operating system: Windows 10
Graphics card: GTX 1080

Blender Version
Broken: 2.80, 93c19a5a2cf5, master, 2019-04-21, as found on the splash screen

Short description of error
As shown in this video, blender freaks out a bit when a parent's local translation is set to its child's opposite local translation.

In this video, I'm moving suzanne around, the cube is the suzanne's parent and set to have its translation values to the opposite of suzanne's translation via drivers.
When I stop moving the mouse, suzanne moves back in place. I also need to pres alt + G twice to have everything back in place properly.
It feels like Blender tries to answer the first request (moving suzanne) and then remembers that she shouldn't actually move and puts her back in place.

Expected Result
The child object should look like it's not moving at all since
Here's how it should look (in maya) I'm moving the sphere which is the child of the locator:

Exact steps for others to reproduce the error

  1. Create two objects.
  2. Parent one to the other one.
  3. Add Drivers on the parent translation attributes so that they evaluate to the opposite of the child's translation attributes.

for clarity's sake:

parent.localTranslateX = -child.localTranslateX
parent.localTranslateY = -child.localTranslateY
parent.localTranslateZ = -child.localTranslateZ

Here's a blend file with the setup already done.

Additional notes
This kind of setup is useful when attaching controllers to the surface of a deformed mesh like in this video
The controls objects don't really move according to their translation values since they are cancelled out by their parents. Another parent node on top of that is then attached to the mesh which in turn makes the controllers follow the mesh.



Event Timeline

Loïc Pinsard (Muream) renamed this task from Evaluation issue when driving a parent's transformation by the inverse of its child. to Evaluation issue when driving a parent's transformation by the opposite of its child's transformation..
Sebastian Parborg (zeddb) closed this task as Archived.
Sebastian Parborg (zeddb) claimed this task.

This setup creates a dependency cycle (you can see it in the output terminal window). We do not support cycles like these currently.