Page MenuHome

Unparenting after transforming in an operator fails to update the depsgraph when using Redo Last
Closed, ResolvedPublic

Description

System Information
Operating system: Linux-4.13.10-041310-generic-x86_64-with-debian-stretch-sid 64 Bits
Graphics card: GeForce GTX 1050/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 390.67

Blender Version
Broken: version: 2.80 (sub 60), branch: blender2.7, commit date: 2019-05-07 19:17, hash: rB3dc9da3a74ee
Worked: 2.79

Short description of error
I have a plane and a cube being parented to it. I have an operator, that rotates the plane utilizing *Redo Last*, to tweak the amount.
After the rotation, the operator unparents the cube.
The expected behavior would be that the cube is rotated with the plane(as it is parented to it), and is unparented only at the end, after the rotation. This works fine in 2.79, as long as a scene.update() is done in between the rotation and the unparenting.
In 2.80 however the rotation(and likey any other transformation) of the plane doesn't carry through to the cube, if you use *Redo Last*.
There is a video demo, so you can better vizualize what I'm talking about.

Exact steps for others to reproduce the error

  • open in Blender 2.79
    • notice how the cube is parented to the plane
    • run the script to register the Rotator operator and run the op in the 3d view
    • bring up the *Redo Last* panel to change the amount of the rotation
    • notice how the cube is rotated with the plane, but is unparented at the end
    • comment out the scene.update() to break the op
      • without the scene.update(), the depsgraph(?) doesn't know about the rotation when unparented, this is expected
  • open in Blender 2.80
    • notice again that the cube is parented to the plane
    • run the script to register the Rotator operator and run the op in the 3d view
    • bring up the *Redo Last* panel to change the amount of the rotation
    • notice how the cube is NOT ROTATED with the plane this time, DESPITE the scene.update()
      • it still is unparented but it looks like at the time of the unparenting, the depsgraph is not aware of the transformation done previously
    • reset the scene and change the default value of self.degrees
      • notice how the op works fine on its initial run, but as soon as you use *Redo Last* it breaks

I think this is one for @Sergey Sharybin (sergey).

Event Timeline

MACHIN3 (MACHIN3) added a comment.EditedMay 8 2019, 12:00 PM

FWIW, if you rotate an object and then parent it, you will have the same problem. The object won't be parented in it's new rotated orientation, as you'd expect.

Sebastian Parborg (zeddb) triaged this task as Confirmed, Medium priority.May 8 2019, 2:47 PM

I just note that this might be a duplicate of T64307 but I'll not merged them as I am quite uncertain.

The issues persists, even after the recent depsgraph changes.
I have update the blend:

@Sergey Sharybin (sergey)

@MACHIN3 (MACHIN3) thanks for the updated file!

Re-assigning to me, think it's nothing to do with Campbell.