12
$\begingroup$

I’m making a little movie with using multiple computers. I can't use the network so I've divided the frames of the animation over the computers. Unfortunately now there are frames missing.

What I'd like to do is using 1 machine to render all the missing frames. For example: 4-24-35-64-143 but ideally in such a way that I don't have to re-start blender multiple times.

Is this possible somehow?

$\endgroup$
1
  • 4
    $\begingroup$ You need to open a windows terminal, press the start button and enter 'cmd' in the input field. You were trying to run blender from the python console which doesn't work. $\endgroup$ – stacker Nov 20 '13 at 10:57
15
$\begingroup$

The fastest way to do it is through command line. Go to the terminal, and execute:

<path_to_blender> -b <path_to_blendfile> -f <frame1> -f <frame2> -f <frame3> ...

Add as many -f switch as necessary. For your example, if Blender executable is already in the PATH variable, and the blend file's output format is already image sequence, the invocation would be:

blender -b filename.blend -f 4 -f 24 -f 35 -f 64 -f 143
$\endgroup$
1
  • $\begingroup$ thanks it helpt alot. had to search some more information about cmd and how it works. but i got it up and running. $\endgroup$ – Robin G.D. Nov 20 '13 at 11:57
7
$\begingroup$

EDIT: If you can use a network drive, there's an EVEN EASIER solution. Render all the frames on all the computers to the same network location and with exactly the same naming convention, but turn 'Overwrite' off, and turn 'Placeholders' on. Done.

The first computer that is able to render a frame will create an empty placeholder file. When another computer tries to render that same frame, it will see the placeholder and skip to the next frame. If you want to re-render specific frames, just delete them from the network drive and restart the render on any or all of the computers (they always move forward, they'll never look back to see if an old frame got removed). This automatically balances the load, and require almost no setup.

Earlier answer: I think there's an even easier way, without knowing more about exactly what you want to do.

If you're assuming that your computers are roughly equally matched, you can use the offset in the render panel. If you have three computers, have one start on frame 1 with an offset of 3, the next on frame 2 with an offset of 3, and the third on frame 3 with an offset of 3. Each computer will render every third frame.

But this is less helpful if you need to batch render specific frames that aren't evenly spaced...

$\endgroup$
7
$\begingroup$

You can use Loom to render specific frames. The addon allows to render single frames, multiple frame ranges as well as subframes, either directly within Blender's UI (as usual) or in a new terminal instance as background process in case you want to continue working while rendering.

Once the addon is enabled, press CtrlShiftF12 to call the Render Image Sequence dialog, enter the frames or even frame ranges you are interested in (seperated by a comma or whitespace) and Blender is going to render only those frames, so in your case you can enter e.g. 4-24, 35-64, 143.

enter image description here

Loom also allows to render every nth frame of the scene by adding x followed by any number after the range. For example, 1-10x2 renders every second frame of the given range 1, 3, 5, 7, 9. This way, you can specify subframes by indicating a float value like x0.1 or x0.01 to get slow motion.

enter image description here Frame 1-17x0.25 @25fps (without motion blur)

enter image description here Original simulation speed, frame 1-17 @25fps (without motion blur)

$\endgroup$
2
$\begingroup$

The fastest and easiest way is to uncheck Overwrite in the Output Settings. If the images of your animation still have the numbering that Blender uses to number an image sequence, like yourfilename0001.png, yourfilename0002.png, yourfilename0003.png etc. it works just by rendering the animation again.

If your animation is set to let's say Start = 1 and End = 250 than Blender expects the image sequence should contain files with 0001 to 0250. If there are files inbetween missing like 0004, 0010 etc. and you start to render the animation simply with Ctrl+F12, disabled Overwrite will make Blender only render the missing frames.

No scripting, addons or anything needed.

frame overwrite

$\endgroup$
6
  • 1
    $\begingroup$ Good option for sure but in production there are typically also files comimg out of the compositor and you'd have to make sure that all the file paths are correct. What if the rendering is distributed on multiple machines? IMHO too risky starting a rendering, go away and hope that blender fills the gaps automatically for hundreds of frames. I personally would like to have control about what's actually rendering so I upvoted but disagree on "No scripting, addons or anything needed." :D $\endgroup$ – p2or Mar 31 at 7:12
  • $\begingroup$ Well, if you'd choose to use my answer (meaning you don't fear your described risks) then you might disagree on "no scripting / addons needed", but it's correct for the answer. Anyway, it doesn't sound like he was looking for a production solution. I wouldn't have answered if I realized earlier how old this question is without any attention over the past few years until your edit today. BTW, you changed his "4-24-35-64-143" to "4-24, 35-64 and frame 143", why? He was asking for single frames, you edited it to frame ranges which is misleading since the accepted answer doesn't fit anymore. $\endgroup$ – Gordon Brinkmann Mar 31 at 8:21
  • 1
    $\begingroup$ Thanks for the heads up, rolled back that edit. No fear and no critics, just from experience I can tell that this isn't a rock solid option for the reasons I mentioned, I think it's hard enough to keep track of renderings and I again, it's more about to having control about that what you're actually doing (IMHO). Also, even this is a quite old post, it's a valid question and still an issue when it comes to rendering. Thanks for your contribution, so future visitors have another option to play with... $\endgroup$ – p2or Mar 31 at 8:53
  • $\begingroup$ Yeah, still a valid question that's why I thought I'd inform you about the frame range issue. I actually don't know if the accepted answer works for frame ranges the way it's given there, so maybe better not change that. I understand your point, I guess my approach is different. I'm rendering everything on one machine and an animation is usually located in one directory there, unchecking Overwrite is the easiest option, because I don't have to check which files are missing. Actually I only use it for continuing renders later or rendering parts to check them out and completing it afterwards. $\endgroup$ – Gordon Brinkmann Mar 31 at 9:08
  • 1
    $\begingroup$ Shameless plug: The add-on checks for the Overwrite property as well and allows to render any frame range without setting up the timeline ;) $\endgroup$ – p2or Mar 31 at 9:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.