Maniphest T78893

Drivers don't update while rendering an animation
Closed, Archived

Assigned To
Richard Antalik (ISS)
Authored By
ogierm
Jul 13 2020, 7:26 PM
Tags
  • BF Blender
Subscribers
ogierm
Richard Antalik (ISS)

Description

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce GTX 970/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 451.48

Blender Version
Broken: version: 2.90.0 Alpha, branch: master, commit date: 2020-07-11 18:41, hash: rBee5c2f6ead37
Tried: 2.83 releases, 2.82, 2.81, 2.80
Worked: 2.79 (had to recreate the file, but loading that one into 2.8 shows the same behaviour)

Short description of error
When using drivers to for example keep the scaling of an object proportional, the value change will be updated during

  • viewport playback (with a slight lack, implying stretching that isn't actually there)
  • single frame rendering (F+12)
  • viewport animation rendering

However when rendering an animation the drivers will not update and the object will appear stretched.

Frame 17 of an animation render (it happens on all, 17 is just as an example)


Frame 17 rendered by rendering a single frame when the playhead is on frame 17

Exact steps for others to reproduce the error

  1. Animate the x-axis of a cube to scale (two single keyframes)
  2. Copy that property as a driver and paste it to the y-axis and the z-axis
  3. Render the animation (CRTL+F+12)

Only the x-axis will change, the others will have the value they had in the viewport at the time you've started the render.

Event Timeline

ogierm created this task.Jul 13 2020, 7:26 PM
ogierm updated the task description.
ogierm updated the task description.Jul 13 2020, 7:49 PM
ogierm added a comment.EditedJul 13 2020, 8:02 PM

I got a friend to try this out and he faced the same issue.
(video link)

His system configuration:

v2.83.1, win10 2004, latest studio driver version
gtx 1080, ryzen 2700x, 64gb ddr4/2933mhz
Richard Antalik (ISS) closed this task as Archived.Jul 14 2020, 11:49 PM
Richard Antalik (ISS) claimed this task.
Richard Antalik (ISS) added a subscriber: Richard Antalik (ISS).

This is probably due to dependency cycles. You can see this error in console:

Dependency cycle detected:
  OBCube/Transform Component/TRANSFORM_INIT() depends on
  OBCube/Parameters Component/DRIVER(scale) via 'Driver -> Driven Property'
  OBCube/Transform Component/TRANSFORM_FINAL() via 'RNA Target -> Driver'
  OBCube/Transform Component/TRANSFORM_SIMULATION_INIT() via 'Simulation -> Final Transform'
  OBCube/Transform Component/TRANSFORM_EVAL() via 'Transform Eval -> Simulation Init'
  OBCube/Transform Component/TRANSFORM_LOCAL() via 'Eval'
  OBCube/Transform Component/TRANSFORM_INIT() via 'Transform Init'
Dependency cycle detected:
  OBCube/Transform Component/TRANSFORM_INIT() depends on
  OBCube/Parameters Component/DRIVER(scale) via 'Driver -> Driven Property'
  OBCube/Transform Component/TRANSFORM_FINAL() via 'RNA Target -> Driver'
  OBCube/Transform Component/TRANSFORM_SIMULATION_INIT() via 'Simulation -> Final Transform'
  OBCube/Transform Component/TRANSFORM_EVAL() via 'Transform Eval -> Simulation Init'
  OBCube/Transform Component/TRANSFORM_LOCAL() via 'Eval'
  OBCube/Transform Component/TRANSFORM_INIT() via 'Transform Init'
Detected 2 dependency cycles
ogierm added a comment.Jul 15 2020, 4:04 PM

Alright, I wasn't aware that these even exitst. I found the option to use single channels now.
These dependency cycles should put a warning inside the info editor & the status bar and bpy.ops.ui.copy_as_driver_button() should use the corresponding transform channel instead of "single property", if available.
Blender makes it too easy to make this mistake and pretty much hides it from the user until they try to render.
Is there a design task for drivers?

ogierm added a comment.EditedJul 15 2020, 4:56 PM

It's more complicated. Even transform channels only works in render when set to "transform" space. "local" and "world" space will not work.

The manual doesn't mention any of this and it's not happening in 2.79. Is this desired behaviour?

And the console isn't showing anything on dependency cycles when using any of the Transform Channel options, so it's either not detecting these as self references or the issue of the render looking different than the viewport is not directly related to dependency cycles, I guess.

ogierm added a comment.Jul 23 2020, 7:11 PM

@Richard Antalik (ISS) Can you have a look again re the unreported (?) dependency cycles? See my comment above

Richard Antalik (ISS) added a comment.Jul 24 2020, 5:07 AM

@ogierm Sorry I have missed your comment. I don't have clear or deep knowledge what these spaces really mean. Googling for at least brief explanation resulted in T39393. So I guess you could make new report, I am not really sure if it's a bug or not.