114
$\begingroup$

I would like to pause a render that I have started, with the intention of resuming it at a later time (but during the same Blender session). How can I do this?

$\endgroup$
3
  • 2
    $\begingroup$ Are you talking about an animation, or a single picture? $\endgroup$ Jun 3, 2013 at 5:05
  • $\begingroup$ @KyleWilley, mostly a single picture, although if I could get a method for an animation as well that would be nice. $\endgroup$
    – fouric
    Jun 3, 2013 at 16:50
  • 3
    $\begingroup$ Animations can be paused just by clicking the X on the render, then setting the start frame to the last completed frame. CharlesL wrote an answer that covers this. $\endgroup$ Jun 3, 2013 at 18:28

11 Answers 11

56
$\begingroup$

Blender Internal and Cycles lack such functionality (but we'd love to have that for Renderfarm.fi)

$\endgroup$
5
  • 1
    $\begingroup$ I'm not tech guy but if is used tile rendering there could be chance to resuming rendering from last finished tile theroretically $\endgroup$
    – Utas
    Jun 3, 2013 at 8:33
  • 2
    $\begingroup$ Yes, theoretically. But the functionality itself doesn't exist (as in pause and resume buttons, without further need for user interaction). $\endgroup$
    – jesterKing
    Jun 3, 2013 at 10:55
  • 2
    $\begingroup$ This could be implemented, hypothetically, by saving the data of the scene, then continuing with samples. AFAIK this could happen easily between samples by saving the image and the random seed parameters the raytracer uses. $\endgroup$
    – nanofarad
    Jun 3, 2013 at 14:12
  • 2
    $\begingroup$ @jesterKing, just a small note, avoid excessive self-promotion (not coming down on you, and I appreciate your work, but on SE self-promotion can be frowned upon). $\endgroup$ Jun 24, 2013 at 18:17
  • $\begingroup$ Doesn't Renderfarm.fi render at lower sample counts with various seeds? If so, could you stop after rendering the current seed, and then resume later? You would still have to wait for that seed to finish. $\endgroup$
    – wchargin
    Aug 11, 2013 at 20:48
79
$\begingroup$

On Mac OS it is not necessary to have started Blender from the command line. You may use the "kill" command to send a stop and continue signal...

$ ps -ax | grep Blender
3554 ??       750:42.18 /.../.../Contents/MacOS/Blender
$ kill -s SIGSTOP 3554
$ kill -s SIGCONT 3554

There is a way to 'pause' Blender (or any software for that matter), but it relies on the operating system rather than Blender itself.

Mac OS X and Linux:

  1. You must start Blender from the command line or terminal.
  2. At any time, you can completely suspend Blender by pressing Ctrl+Z from the terminal window.
  3. The terminal should say something like:

    ^Z [1]+ Stopped /Applications/blender.app/Contents/MacOS/blender

  4. You cannot interact with it until you you type fg in the terminal. Which will bring Blender back to the foreground.

Windows:

$\endgroup$
5
  • 2
    $\begingroup$ Great tip! I always used this to simply kill the application, can't believe this was there all along. $\endgroup$
    – ideasman42
    Jun 3, 2013 at 17:04
  • 12
    $\begingroup$ Ah, if we go the OS way, then you can get the Process Explorer from technet.microsoft.com/en-us/sysinternals and suspend your Blender process using that. $\endgroup$
    – jesterKing
    Jun 5, 2013 at 5:58
  • 12
    $\begingroup$ There's no need to start Blender from the terminal. You can simply send the signals to the process. kill -s SIGSTOP $(pidof blender) to stop it and use -s SIGCONT to resume it. On KDE you can do this using the system activities(Ctrl+Esc). $\endgroup$
    – Bakuriu
    Oct 20, 2013 at 18:20
  • $\begingroup$ Linux option works like a charm. Windows version does not work anymore. $\endgroup$ Sep 20, 2018 at 19:23
  • $\begingroup$ This does work. Just tried it with v2.91. It doesn't pause immediately. But it will pause at the end of the currently rendered frame. $\endgroup$
    – Nick Allan
    Nov 16, 2020 at 9:17
51
$\begingroup$

Pausing from the Operating System:

Linux

If you are on Linux you can send signals with these commands:

# To pause Blender:
killall -s STOP blender

# To start it again:
killall -s CONT blender

Some advantages to this are that it will work for any task, not just rendering, and that you do not have to start blender from a terminal. For Mac, omit -s and use Blender, not blender.

Windows

You can use process explorer for this. See this question on StackOverflow.

Pausing from Blender:

Pausing F12 renders from Blender is not implemented yet, however it is on the Cycles Todo List.

$\endgroup$
5
  • $\begingroup$ I tested this on OS X and it seems that -s does something else, like simulates what would be done or something (see man killall). And omitting -s just causes Blender to be killed. I did have success with the method Mike Pan suggested though. $\endgroup$
    – Mentalist
    Jun 16, 2015 at 17:42
  • 1
    $\begingroup$ On Windows, you can use built-in functionality instead, with Resource Monitor > RMB menu > Suspend Process (from the same SO thread). $\endgroup$
    – Mr Zak
    Aug 18, 2015 at 12:30
  • 1
    $\begingroup$ On mac, you can use killall -STOP blender and killall -CONT blender $\endgroup$
    – AMACB
    Sep 21, 2016 at 1:18
  • $\begingroup$ On Linux (Ubuntu) you can also stop and resume a process: $\endgroup$
    – C.Rogers
    May 12, 2017 at 14:14
  • $\begingroup$ On Linux (Ubuntu) you can also stop and resume a process using System Monitor: Tap Super (windows) key once, and type "process" or "system", and choose the "System Monitor" icon. Then in the "Processes" tab right-click the blender entry and choose "Stop". When you want it to resume do the same thing, but choose "Continue". The command line is easier of course... but only if you can remember what to type. :) Sorry for double post. Can't edit a comment after 5 mins? What rubbish is that? ;P $\endgroup$
    – C.Rogers
    May 12, 2017 at 14:23
30
$\begingroup$

Mixing Smaller Renders

For a still image, a possible solution is to render less samples multiple times with the seed changed each time, and mix the images according to the samples. For example:

You have a scene which you would like to render at 3000 samples.

  • First night you render 1000 samples with seed 0.
  • Second night you render 1000 samples with seed 1.
  • Third night you render 500 samples with seed 2.
  • Fourth night you render 500 samples with seed 3.

The you take an image editor and put these images as layers:

  • First render: alpha 0.33
  • Second render: alpha 0.5
  • Third render: alpha 0.5
  • Fourth render: alpha 1.0

Each layer's alpha is: current samples / (all layers samples below + current samples)

5 samples:

5 samples

15 samples:

15 samples

Mixed image:

mixed image

Added Note

As mentioned in the comments: The resulted image may have a slight light-loss compared to the full sampled image, however will also have less noise. You get (almost, very near, way below significance) the same result as using Clamp Direct and Clamp Indirect with the number of samples of the individual renders. So this light-loss will be the same as if you were to set Clamping to 100 for example, which is usually very small. When the Clamp values are already set and lower than the samples, then no additional light-loss should occur.

We discussed this topic in the comment section of some old blog posts, it might be worth reading them:

https://sinmantyx.wordpress.com/2015/02/21/grave-of-the-blender-fireflies/

https://sinmantyx.wordpress.com/2015/03/18/perfect-clamp-1/

https://sinmantyx.wordpress.com/2015/03/18/perfect-clamp-2/

$\endgroup$
3
  • $\begingroup$ Does this give you exactly the same result as if you had used higher samples in the first place or just an approximation? $\endgroup$
    – Steve
    May 9, 2016 at 7:55
  • 1
    $\begingroup$ Short answere: Only an approximation. Longer one: You get (almost, very near, way below significance) the same result as using "clamp direct" and "clamp idirect" with the number of samples of the individual renders (if these values are already set and lower, then no difference). So the light loss will be the same as if you would set claming to 100 for example. $\endgroup$ May 10, 2016 at 21:29
  • $\begingroup$ If you are more interested, look at the end of my edit. $\endgroup$ May 10, 2016 at 21:30
17
$\begingroup$

For one frame you could try to use border select then render. You could render parts of your image you need and mix the layers later in GIMP. I use it whenever I add details to a model and don't want to render the whole scene again.

$\endgroup$
2
  • 2
    $\begingroup$ You certainly can break up a render into parts this way (on Renderfarm.fi we use this to split workload between nodes), but it is quite a labour intensive way to do things if you don't have a good automation behind it (Renderfarm.fi has a Tomcat7 servlet running doing all this delegation and stitching). You can add that for Cycles you could render in batches of ie. 10 or 50 samples, and then average the results all into one (which I implemented on Renderfarm.fi as well ;) Just take care that each batch is rendered with a different seeds $\endgroup$
    – jesterKing
    Jun 3, 2013 at 10:54
  • 1
    $\begingroup$ A python script to do stuff like this would be awesome. (I think i'm going to try and learn python now) but to able to define different numbers of samples for different parts of the render... :D $\endgroup$
    – gandalf3
    Jun 15, 2013 at 15:08
16
$\begingroup$

You can pause viewport rendering in Cycles (but not 'Render' menu rendering) by pressing the pause button in the bottom right-hand corner of the 3D view.

enter image description here

$\endgroup$
0
8
$\begingroup$

If you're rendering an animation, render out the frames individually as PNGs first. If do so, you can stop rendering a frame and come back to render the rest later without any corruption. Once you want the animation as a video file, load the PNGs as an image strip in Blender's video editor and render the video out(it will be really fast because it's just sticking the images together).

$\endgroup$
2
  • 1
    $\begingroup$ Will this just stick the PNGs together into a movie without doing any compression, or will it compress them using the methods of whatever format you are using (Theora, MPEG, etc)? $\endgroup$
    – fouric
    Jun 3, 2013 at 16:48
  • 3
    $\begingroup$ It'll be compressed using whichever format you decide to use. $\endgroup$
    – CharlesL
    Jun 3, 2013 at 17:14
8
$\begingroup$

For animations that output to a sequence of individual image files an important checkbox is the Overwrite checkbox in the Output subtab of the Render tab of the Properties window. It defaults to checked. If you uncheck that box you can interrupt a render, shut down your laptop, turn it back on, and click the render animation button and it will not overwrite the frames that have already been stored to the directory, instead starting calculations at the first missing frame.

A drawback is that if you change the scene and want to discard the rendered frames containing stale data, you have to delete them from the directory some other way (using windows explorer, or linux rm)

Another drawback is that blender's default output directory is /tmp, which some flavors of linux wipe clean every time you reboot the computer. I use /var/tmp/blender/projectname/ instead.

$\endgroup$
1
  • 1
    $\begingroup$ you can also manually set the start frame to the frame after the last one which was rendered in the previous session when you resume the render, then you don't need to uncheck the overwrite button $\endgroup$
    – Steve
    May 9, 2016 at 7:58
2
$\begingroup$

there is a very fast and easier way , Just set the start frame, then the end frame , and when you want to pause it , just change the end frame to the one currently rendering and then set the start frame to the last frame you render , and repeat.

enter image description here

$\endgroup$
1
  • 6
    $\begingroup$ No real need to do this when rendering image sequences. To keep the frames you already rendered you just need to uncheck the "Overwrite" box on the output section. All existing rendered files will be kept and rendering will start on the first unrendered frame. $\endgroup$
    – user1853
    Jan 18, 2016 at 21:19
2
$\begingroup$

I have been working on a solution, it's a workaround that uses Windows suspend thread function in c++ to pause/unpause blender, but it also minimizes blender in the taskbar in a tray icon, because windows will throw out "Blender has stopped working" if you suspend it and the window still maxmized, it supports Windows 64bit and blender 2.79 https://gum.co/bpupp , support for other platforms coming soon

$\endgroup$
2
$\begingroup$

Here is how I learned how to do it. In the properties go to render tab, scroll down to output; in the file format,(default is ffmpegvideo) select png. After selecting png, create new folder, name it and select accept at the top right. Now render the image or animation. Now to the pause. If you open the new folder on your computer you can see each image being rendered one at a time. If for example you have an animation 240 frames and around the twenty fourth frame you want to stop or pause. Just let the twenty fourth frame finish rendering and click the escape tab on the keyboard twice. All rendering has stopped. You can now close blender, and continue render later. When you are ready to continue rendering, open the folder animation is saved in, you should be able to see the last frame that was rendered. So if the last frame rendered was twenty four, go the the timeline in blender and set start frame to twenty five, and then render. It should continue rendering from frame twenty five. Here is a tutorial that helped me. https://www.youtube.com/watch?v=GviUB3irccI

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .