How does compositing an animation with render layers work?

Hello everyone!

I have a question (obviously). I haven’t really understood how the render layers node works; is it normal that the render goes away when I close blender and reopen it? I can only use that node if the render is just done and I leave blender open. The problem with that is that I’m working on a very slow laptop, so it’s impossible for me to render out an animation in one go without shutting down the laptop once in a while. Does that mean it’s impossible for me to work with render layers? And if so, is there any other way to use cryptomatte and all the other stuff?
Also, I’m not really sure how compositing works when it’s an animation. It worked fine for me in Eevee, but when it comes to cycles and its render times, do the single renders get stored somewhere so the render layers node can use every frame, even if I interrupt the rendering and close blender once in a while? I don’t want to wreck my laptop, but I also want to be able to work properly on my animation in the compositor.

Sorry if my post is very confusing and sounds stupid, I’m relatively new to blender and my English is bad.

Thanks!

What I often do is render out single frames. You have to name them properly. I put a hyphen at the end of the name so that the frame numbers can be added to the frames. Then you can stop the render anywhere and restart, as long as the overwrite toggle is off. Also as far as I know blender doesn’t save the render unless you save an image, or a video.

1 Like

If you want to composite then render to multilayered openEXR files. These files can store all the passes, layers and whatnot you want in one single file per frame.
They also keep the bit depth so you don’t lose any information that is necessary for certain compositing tasks.

1 Like

That’s what I’m doing, but the issue I’m having is that render layers doesn’t work anymore if I close the project. If I go to rendering and click on “render result”, the render is gone.

Of course I can always get the saved image into the compositor (if I do save it), that’s actually how I did the eevee animation (I rendered out a normal image sequence and then brought it into the compositor), but then I can’t use render layers. There’s just the image and nothing I can work with, or at least I haven’t found a way to make this work. I would like to use Ambient Occlusion, Cryptomatte, Mist etc., but that only works with the render layers node …

is it normal that the render goes away when I close blender and reopen it?

Yeah all renders are supposed to be diplayed on the user screen. However you can save them to hard drive in any of these ways.

  1. By default threre are the “Output Settings” as shown in the Properties window.
    you can set the output path to a location you need and then select “Render Animation”. However this is somewhat manual (by going through the GUI).

  2. In the compositor window you choose this node “Output > File Output” and it will automatically send the received input to a location. That way you can have multiple outputs in parallel (thus having diffuse + cryptomatte at the same time). However that way you might actually not need “Output Settings” at all (leave it blank) because that way you get double the render result. (Unless you want to encode your animation as video , but for plain image frames leave the output settings blank).

  3. With command line arguments
    https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html

    You can for example create some batch files (.bat) and split the render procedure into bits.
    C:\blender28\blender.exe --render-anim --frame-start 0 --frame-end 10
    C:\blender28\blender.exe --render-anim --frame-start 10 --frame-end 20
    C:\blender28\blender.exe --render-anim --frame-start 20 --frame-end 30
    C:\blender28\blender.exe --render-anim --frame-start 30 --frame-end 40
    etc…

    So for example you render first bit today. Then you render the second bit tomorrow, and so on up until you have all of the bits rendered.

    Though I haven’t tested this, setting the parameter --render-output I think it will result to override the output properties but not the “File Output” nodes. However try it first quickly in 10-second-renders to make sure how it works.

And if so, is there any other way to use cryptomatte and all the other stuff?

Having multiple File Output nodes will allow you to get many parallel outputs as mentioned.

how compositing works … renders get stored somewhere

If you open a totally new blank document and go right into the compositor window. Check “Use Nodes” and then delete the “Render Layers” node. Add new node “Input > Image” then go to the previously rendered items and open the first one, then make sure the image node is “Image Sequence” and number of frames is good to go.

2 Likes

Didn’t know that but yeah, they do.

edit: although they are bigger files

1 Like

Note that openEXR does not store any kind of color managment from the render properties panel. You have to apply that when compositing and then save to some “normal” format like matroska, quicktime or png.

2 Likes

Thanks, that did the job! :blush:

I didn’t want to start another thread as this one is closely related to my question.

Suppose I already rendered image sequence for animation and after that decided I want to composite every single image.
I load image sequence into compositor, do my compositing and click on Render Animation.
Blender now renders from the beginning every single image and does compositing afterwards.
My question is, is there an option where Blender would take already rendered images and save them with applied compositing on them without re-rendering as that would save a lot of time?

I had this question too, and I thiiink I figured it out. Usually I would render and a separate window would open (which is the same as in the rendering tab when you click on render result). I would save this image, then composit and then render again. But while workink last week, I realised that if I do the compositing and connect the composite note correctly at the end, the still open render tab would have updated and I could simply save it again. This means that if you work with render layers and you hit render, it will render the whole scene again instead of just going through the compositor, since the render layers node tells you computer to use the last rendered frame and not an existing image (because render layers is not an image node). So if you want to composite an animation without rendering twice, you need to first render out an image sequence in the format open exr multilayer, then import this sequence with an image node and choose View layer or whatever layer has the information you need to composite. Hope that wasn’t too unclear, my English isn’t that good.

Yes, I know that. That is not the problem. The problem is you would have to manually save every single image. What interests me is doing that automatically on the whole image sequence. Like a standard video editing.

To use Blender just as a compositor, load the (preferably) MulitlayerOpenEXR files in the compositor by adding an Image Sequence Node and do your work there. Make sure to have an output node and set where you want the final render to go to, and in which format.

Now, here’s the important part. To avoid Blender from re-rendering all of the frames that are already rendered, simply delete the Render Layers node, or, select it and press M, for Mute. That way the compositor will only look at the Image Sequence Input node and process from there.

1 Like

I mean, just pressing Ctrl F12 and selecting a video format works fine for me … Or doing it with the output node, as @Nitram_2000 suggested

No, what @rashomon is saying is that he doesn’t want to re-render the whole thing. So, if the initial render has an output of MultilayerEXR’s (or any file format, but it’s good to get into using EXR’s. They’re super useful for compositing.), that image sequence is saved to disk.

By using the import sequence node, he can then bring that saved sequence back in (even to a new, clean Blender file) to the compositor, do whatever grading and stuff he wants to do, then, by disabling/deleting the Render Layers, he can hit Ctrl+F12 and the sequence will render to his new output directory set in his output node.

Oooooh, I get it now! The problem was I was working in original Blender file with the animation, and Render Layers node wasn’t muted. Thanks guys! :metal:

1 Like

Exactly my point