I’m developing an add-on to write logos and additional information on rendered images. This is an important need for our current and upcoming productions.
In order to have it as little intrusive as possible I don’t want to introduce a new Render button anywhere (cause we already have several renderer add-ons) so I base it on the handlers. I then set up a small compositing graph that is evaluated at every rendered frame and produces the final image. In code (see add-on below) I change the overlaid image of the Input Image node at every frame in the pre render handler.
Note that I can’t use an image sequence in my final script since each of these overlaid images would be created in script (with Pillow) in the same handler. So having an image changed in the handler is mandatory.
… But it appears that when we do so there is a kind of “latency effect” (or very possibly a bug) that makes each overlaid image appear… too late! They are pasted on the next frame, not on the one they are supposed to be.
When we activate the Metadata information on the rendered images we clearly see the offset (text in red is from the overlaid image, metadata frame index is at the left bottom of the image):
So the issue is that the image set at each frame in the Input node is not updated / taken into account at the right time.
- Does someone know if there is a kind of “update graph” function to call somewhere?
- Is it a bug?
I provide here a whole repro context (script / scene / data): https://www.dropbox.com/s/3edj3ogfvjta68t/BugRenderHandlers.zip?dl=0
To use the script and see the issue:
- Open the provided scene, load the script, in the 3D View go to the Debug_BugRenderHandlers addon and press Create Handlers. Then press Ctrl + F12 to do the rendering.
Operating system: Windows 10
Graphics card: GeForce GTX 860M (also tested on 960)
Broken: 2.82, 2.83 alpha 8751af6d1902
Worked: not found
Thank you very much for any tip or help