Page MenuHome

Missing preview image in compositing file output node
Closed, ResolvedPublicTO DO

Description

System Information
Operating system: Windows-10-10.0.19041-SP0 64 Bits
Graphics card: GeForce GTX 1060 6GB/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 460.89

Blender Version
Broken: version: 2.93.0 Alpha, branch: master, commit date: 2021-01-17 07:30, hash: rB14bb9f09ab98

Short description of error
The compositing file output node does not show a preview image when expanded.

Exact steps for others to reproduce the error

Open Blender.
Switch to Compositing Layout.
Render image.
Activate use Nodes.
Add a File Output node.
Expand it.
The place where the preview image should be shows empty.

Event Timeline

Falk David (filedescriptor) changed the task status from Needs Triage to Confirmed.Jan 18 2021, 10:50 AM
Falk David (filedescriptor) changed the subtype of this task from "Report" to "To Do".

I can reproduce the issue, but it seems that even in 2.79 the output node did not have an image preview. I think this is a limitation for now.

Hi, I am starting my journey to contribute to Blender and got curious about this issue as it would help me understand the inner working of nodes. I have recreated this issue and have been going through the code.
From my understanding the File Output node's preview should behave in the same way as Viewer node does. In COM_OutputFileNode.cc, I see converter.addNodeInputPreview being used the same way as in the COM_ViewerNode.cc but it doesn't seem to work in the former. In the Viewer node we are passing just the image socket to it, while in File Output node we are looping through and passing the inputs. Is this what should be done if we have just Png format instead of OpenEXR and there is only one input image socket?
I need to go a bit deeper into NodeConverter class and NodeOperation. The code comments do help but where can I find more about them.

Hmm a bit of a one off issue.

File output node is only executed when doing final composite.
Previews are only updated when editing.

This could be changed by changing the OutputFileNode::convertToOperations

if (!context.isRendering()) {

Hi, just submitted a possible fix T84815 : Missing preview image. I would be interested to know if I could have submitted the diff in a better way.

In file node_edit.c in method compo_startjob() we set value of rendering, and use it in OutputFileNode::convertToOperations, that is why

if (!context.isRendering()) {
}

is false in all cases.