Distributed Rendering over a local netowork

Hello, I know this has been asked again, but the results confused me, so I’m asking directly again:

How can I distribute the rendering proccess in a local network? Like, building my own personal blender render farm? :eek: I need to do this for a short animation.

It’s very easy! Just use Dr.Queue ( http://drqueue.org/cwebsite/about_drqueue.php ). I made it wok on my home network with windows and linux computers (Dr.Queue is crossplatform). There is a step-by-step guide at http://drqueue.org/project/wiki/Documentation . It is easy indeed.
But if you need it only once, you can run blender from command line with parameters set to render only a limited range of frames to *.png files and then combine it sequence editor.

I recently tried to do this myself so I hope I can help.

If you have a Mac then xgrid is one choice. Unfortunately, far as I can tell, xgrid is pretty poor without Mac OS X Server. It says it can run but there is little to no documentation. I personally tried to get this working with some help and discovered that it was not worth it because it just didn’t make sense and you would likely have to write some sort of script.
If you think this is the option for you here are some links I found helpful.
Distributed Rendering with xgrid. For an old version of xgrid.
xgrid-leopard-good-bad-ugly-and-new-stuff. This site may be down.
Apple Man Page

The second option is drqueue. It is used by many popular clients and looked promising until I couldn’t figure out how to build it. Hope you have better luck.

And last of all, the simple way. After giving up on those two programs I decided that my stuff was short enough and I didn’t have too many computers so doing it by hand wouldn’t be all that bad. Blender has a built in command line tool called (guess?) blender. Download blender on all the machines, stick a symlink in your path and fire it up with blender -h. It has lots of lovely options.

On the mac the blender command line tool is in Blender-what-ever-version-dir/blender.app/Contents/MacOS/blender. make a symlink of that not of the .app. On a PC it is probably in the same directory as the rest of the package (or it may be the actual thing you run itself)

Here is the purely command line way to do it. Do the above, scp your blends around, make sure you have good options on them. It’s always good to render single images such as jpeg as opposed to avi on a large scale because it is fail safe, you can have it fail and pick up from where you left off. Run blender -b FILE -o RENDER_PATH -s START -e END -a. If you have multiple blend files send each one to a comptuer and leave off the -s -e. Otherwise do the math :eek: and figure out which frames each computer should take. Then scp the results to your main machine and assimilate the files.

Note that I only have macs so these instructions may have to be adapted. There are many shortcuts to take if you have macs (maybe others?) such as:
• Mounting a volume via Bonjour or ‘Sharing’ and setting the render path directly to it via /Volumes/mounted_disk
• Using gui file sharing is infinitely better than scp.

I hope that helps!

Well, a “Blender Farm” will need computers. Do you have XX number of computers?

What OS do you use?

This is my second attempt at posting this message and I hope it gets through this time…
I recently tried to do this myself so I hope I can help.

If you have a Mac then xgrid is one choice. Unfortunately, far as I can tell, xgrid is pretty poor without Mac OS X Server. It says it can run but there is little to no documentation. I personally tried to get this working with some help and discovered that it was not worth it because it just didn’t make sense and you would likely have to write some sort of script.
If you think this is the option for you here are some links I found helpful.
Distributed Rendering with xgrid. For an old version of xgrid.
xgrid-leopard-good-bad-ugly-and-new-stuff. This site may be down.
Apple Man Page

The second option is drqueue. It is used by many popular clients and looked promising until I couldn’t figure out how to build it. Hope you have better luck.

And last of all, the simple way. After giving up on those two programs I decided that my stuff was short enough and I didn’t have too many computers so doing it by hand wouldn’t be all that bad. Blender has a built in command line tool called (guess?) blender. Download blender on all the machines, stick a symlink in your path and fire it up with blender -h. It has lots of lovely options.

On the mac the blender command line tool is in Blender-what-ever-version-dir/blender.app/Contents/MacOS/blender. make a symlink of that not of the .app. On a PC it is probably in the same directory as the rest of the package (or it may be the actual thing you run itself)

Here is the purely command line way to do it. Do the above, scp your blends around, make sure you have good options on them. It’s always good to render single images such as jpeg as opposed to avi on a large scale because it is fail safe, you can have it fail and pick up from where you left off. Run blender -b FILE -o RENDER_PATH -s START -e END -a. If you have multiple blend files send each one to a comptuer and leave off the -s -e. Otherwise do the math :eek: and figure out which frames each computer should take. Then scp the results to your main machine and assimilate the files.

Note that I only have macs so these instructions may have to be adapted. There are many shortcuts to take if you have macs (maybe others?) such as:
• Mounting a volume via Bonjour or ‘Sharing’ and setting the render path directly to it via /Volumes/mounted_disk
• Using gui file sharing is infinitely better than scp.

I hope that helps!

Put all your .blend files and assets on the network and have all your computers open them over your LAN (i.e., don’t make local copies). Render out to a single network directory. Turn on Touch and No Overwrite in the Scene buttons. Hit Render on all the comps. They will all render frames of your animation and “cooperate” to not render something that anyone else is working on.

That’s the simplest way.

I recently tried to do this myself so I hope I can help.

If you have a Mac then xgrid is one choice. Unfortunately, far as I can tell, xgrid is pretty poor without Mac OS X Server. It says it can run but there is little to no documentation. I personally tried to get this working with some help and discovered that it was not worth it because it just didn’t make sense and you would likely have to write some sort of script.
If you think this is the option for you here are some links I found helpful.
Distributed Rendering with xgrid. For an old version of xgrid.
xgrid-leopard-good-bad-ugly-and-new-stuff. This site may be down.
Apple Man Page

The second option is drqueue. It is used by many popular clients and looked promising until I couldn’t figure out how to build it. Hope you have better luck.

And last of all, the simple way. After giving up on those two programs I decided that my stuff was short enough and I didn’t have too many computers so doing it by hand wouldn’t be all that bad. Blender has a built in command line tool called (guess?) blender. Download blender on all the machines, stick a symlink in your path and fire it up with blender -h. It has lots of lovely options.

On the mac the blender command line tool is in Blender-what-ever-version-dir/blender.app/Contents/MacOS/blender. make a symlink of that not of the .app. On a PC it is probably in the same directory as the rest of the package (or it may be the actual thing you run itself)

Here is the purely command line way to do it. Do the above, scp your blends around, make sure you have good options on them. It’s always good to render single images such as jpeg as opposed to avi on a large scale because it is fail safe, you can have it fail and pick up from where you left off. Run blender -b FILE -o RENDER_PATH -s START -e END -a. If you have multiple blend files send each one to a comptuer and leave off the -s -e. Otherwise do the math :eek: and figure out which frames each computer should take. Then scp the results to your main machine and assimilate the files.

Note that I only have macs so these instructions may have to be adapted. There are many shortcuts to take if you have macs (maybe others?) such as:
• Mounting a volume via Bonjour or ‘Sharing’ and setting the render path directly to it via /Volumes/mounted_disk
• Using gui file sharing is infinitely better than scp.

I hope that helps!

Harkyman’s way is the easiest.

If you don’t have a shared folder setup on the network, you can also use a program called YADRA. It does more or less the same thing, but without the need to share folders or have the .blend file saved to each computer. All you need is a copy of blender on each one and java installed.

It works a treat for me. I did a quick test by rendering one of the shots on the Creature Factory DVD with some nice results. Check I think the second or third post down in my blog (link in sig) for the results.

Wow, thanks Harkyman. I will try this.
My way was creating

  • a batch-job
  • a text file endframe.txt
  • a blend-file test.blend
  • a folder b where the blender-version was installed (to be sure, all clients use the same)

place it on a network-folder and execute the batch from each machine you have available. (I will post the batch later if i found it :wink: (and you want it) unfortunately it is windows, and at home i have linux, so i have to rewrite the *.bat to a fine *.sh

Edit: Harkyman, these are 2 of the Buttons i never asked myself what they’re for…
Edit2: Hint to all: PACK YOUR BLEND-FILE (or use clean relative paths)

So, here’s the code for render.bat

echo start:%time% > .\renderlog_%computername%.txt
:weiter
for /F %%i in (.\f.txt) do set frame=%%i
for /F %%i in (.\endframe.txt) do set endframe=%%i
set /A frame=%frame%+1
if %frame% GEQ %endframe% goto ende
echo %frame% > .\f.txt
echo %frame% >> .\renderlog_%computername%.txt
.\b\blender.exe -b .	est.blend -f %frame%
goto weiter
:ende
echo ende:%time% >> .\renderlog_%computername%.txt