9
$\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. But now there are frames missing.

So what I want to do is set 1 computer to render frames. For example: 4-24-35-64-143.but in such a way that the computer renders 1 frame at the time (so that it doesn't start blender multiple times).

Edit:

Trying the code Adhi posted below blender gives a syntax error like the image. Did type it wrong?

implementation of the code

The blend file is on a server. The network drive is mapped to B:\.. maybe blender can't handle that well. (normal animation rendering is right)

$\endgroup$
  • 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
12
$\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$
  • $\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$
3
$\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$

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.