Idea for a new feature in Blender

As I type this, I’m rendering a 300 frame animation, about 12 seconds long, that is rendering with raytracing and envmap and motion blur on. You probably know what motion blur does to a animation. It is equivilent to rendering it 16 times! So, with each frame of the final animation being 1/24 of a second long, and my render time for each frame is about 20 minutes, almost an hour when someone is actually using the computer. Since we have a lot of free time on this computer, I figured “well, nobody will be using it all night and all day while I’m at school, so I guess I’ll render this.” For 95 percent of the time this is OK, because the computer is being put to use when nobody is around. But when I’m working on it (like now) the rendering is causing the computer to go really slow. I don’t wan’t to stop rendering it as I have a good chunck done and don’t wan’t to start over, but I also want to because the computer is going so slow! What I’m asking for is this:

Somehow put a ‘PAUSE’ button somewhere so that you can pause the rendering process and start it up again without starting over.

I have no background in coding, and I don’t know how hard it would be to implement it, but if it wasn’t that dificult, it would be a nice feature. I could pause it and have a normal speed computer, then resume the rendering while I’m off doing something else. If this is really hard to put in, then you don’t need to. If this was the case I could try to remember to render targa files to put in the sequencer later and render the animation that way. But if it is easy, then please put it in. Thanks for your time!

Here’s a tip if you’ve got an NT-based Windows (NT4, 2000, XP). Hit ctrl alt del to get the task manager up and click on the Processes tab. You’ll get a list of running proceses on your machine. While a render is going, Blender should be consuming the majority of the CPU time, so click where it says “cpu” at the top of the list to put the list in order of how much processor time is being used. If the task at the top of the list says it’s using 0% cpu then click again to reverse the list order. Blender should be at the top of the list with something approachig 100% CPU usage.

Right click on Blender’s entry in the task list and select “set priority” from the pop up menu. The priority should be “normal”. Change it to “belownormal” or “low” and you should fine your computer becomes somewhat more responsive.

If you set your output options to “AVI Jpeg” for rendering an animation, you can stop the render process anytime and your completed frames will still be wherever you told Blender to save them. Then you can come back later and continue from whatever frame you left off. So in a way, that is pausing.

As for pausing a single frame, that would be nice, but I’m not so sure about the possibility of it. Someone who knows about this should come and prove me wrong!

Just set the process thread priority lower.

In Windows XP, go to task manager. Processes tab, right-click on blender.exe and “Set Priority.” Set it to Below Normal or Lower.

On Linux, you can just renice the process.

how about just stopping the animation render? let me explain:

But before - for the most part, render artifacts are a problem when doing this - in other words, if you are using softbodies (unbaked) or particle interaction or lot’s of noticeable proceedurals then when sequencing you may notice a small “jitter” in texture and positioning - however a redub (meaning in this case a 5 frame passover on the sequences with an alpha transition) would take care of the problem. However, if your scene is too fast (ie: mblur or graphic intensive) you may not notice the change as it is technically only one frame. Still be aware:

If you go to the left of the render panel you’ll notie a little strip that will allow you to name your output (go there and name it to whatever you want - ie: framesta to frameend as in 0001-0300.avi). Start animating it. Let’s say you want to jump on the pc - go to the animation window and let it finish the frame (or abort early if you plan on redoing it) and then abort (esc) the next frame. Return to Blender and in the Animation buttons set the Sta frame to the last rendered frame plus one (ie: you stopped at 150 then set it to 151) and then go to the name strip and rename it to (0151-0300.avi). Save your work and then close blender!

When you are done open blender. Open the last project (cntrl+o) and then start animating again. When you are done load the movie strips into the sequencer and render them into a new .avi!

It’s a little more time consuming than a “pause” button but it works fine. Not too mention I’m sure that a pause button would require either the completion or abortion of the current rendering frame before it could pause - and basically it would be doing the same thing only internally. Maybe the feature could be added by creating a new sequence in the sequencer when the pause button is pushed and it takes the current .avi and renames it to the sta and last rendered frame and then adding it on top of the current scene. When you then press resume it renders the sequencer starting at frame 1 through the avi and when it runs out it renders the scene until finished as the original file name!

Anyway maybe that stuff will help you out…

Another alternative is to use a faster computer - I have an athlon 64 3400+ and I can render and surf at the same time without a really noticeable difference - of course I also have 1GB of RAM and the 64 bit architecture is designed to cut the processor into two allowing 2 32bit channels computing one for the rendering and one for the surfing! The Pentium 4 HT tries to do this by brute force but the CPU is overloaded usually - still it’s not that bad! :wink:

Unless I’m running tests, I pretty much always render image sequences for reasons just like this one (plus you have greater flexibility in compositing, editing, encoding, and tweaking).

A pause button may be nice, but for finished work, I prefer to let a different tool do the encoding after the render is complete.

In POV-Ray, which by default empties it’s (user assignable) buffer by writing to the image file on the HD at the end of every line (default), you can interrupt and resume a render. Just use the +c command-line switch to resume.

Maybe we could have an option in Blender to output to HD in such a fashion as the image is being rendered. If desired, we could specify a location and filename. We could tell Blender to look for an incomplete file at this location if we wished to resume.

Just a thought,

Andy Cocker

What about a slider between 0-100% where you could set how much cpu power allowed to be used? Hard to code maybe?

This is a very good solution and it will solve your problem.

Render in image sequences (I recommend either targa files). Then you can just pick up where you left off afterwards by changing the frame range.

Afterwards you can easily make avi files out the targa files using VirtualDub (if you’re using windows, anyway).

That being said, it would be nice to have a pause button, just for convenience. But I don’t see it as a priority.