Preventing Compositor Output Node overwriting existing images

Hi,

would like to try the method described on this video to use multiple machines connected to a network to render an animation.

quick explanation of the method :

I save the blend file that i want to render on a network shared storage and use a relative path on the same shared storage as output.

if i use the standard output in the render output tab, i can uncheck the “Overwrite” flag and check the “Placeholders” flag.

image

I this way i can manually open the blend file and ctrl+f12 to start animation on every available computer . Since overwrite is unchecked, it will skip the already done frames (rendered from other machines) and render the first available frame, creating an empty placeholder file.

now, the problem is that i don’t want to use the standard output, i want to use the compositor output nodes, but there is no “overwrite” and “placeholder’s” flag!!!

I need to render through the compositor because in this particular case I need to use the denoiser and output just the denoised and noisy output. But in general I would need to output additional passes like vector and mist using multilayer EXR frames.

Someone asked here and get the answer to sync the render output path (in the properties editor) with the output node’s path:

https://blender.stackexchange.com/questions/127573/how-do-i-stop-the-compositor-output-node-from-overwriting-my-images-on-each-new?atw=1

I tried that but it seems to save only the properties editor’s output in the folder, and not the compositor’s custom outputs.

If i use a different path, it will render the compositor’s output, but every machine will just render the same frame again and again since the unchecked “overwrite” flag, seems not affecting the output node behaviorur… that’s sick…honestly!

The whole point is to use a bunch of local network machines as a render farm. I’m considering rendercrowd, but it looks like it doesn’t support compositing output nodes, can you confirm that? (I have to try yet)

Any tips or workarounds? Maybe a script before every frame rendered to check for existing frame files and creation of placeholder empty file? any tips on link on how to do it in python?

Thanks in advance!

Dealing with the same issue , surely there must be a way to do this ?

Hey, thanks for the answer. I eventually ended up just doing the following setup as a workaround:

put the blend file on nework storage and setup the output paths as follows:

node ouptuts (multilayer exr custom passes) : //exr
properties panel output (jpg with lowest quality, just as a place holder): //jpg\

in the properties panel output uncheck overwrite and check placehoder

It worked, every machine first checks for the jpg placeholder of the current frame, if there is none, renders, otherwise skip and check for the next. It’s a kinda of a hack but it works, using the compressed jpg in the proprerties output minimize the waste of storage, and when you are done, you can simply trash the jpg folder.

It looks like it’s an area of blender that is kinda unfinished. I hope the dev eventually complete the output nodes with all the options and allow the user to completely disable the standard output. Right now everithing looks a little bit confused.

1 Like