Network Rendering in Blender
latest update of NetworkRender.zip 2008-oct-26
this is a mighty long page, you may want to skip to relevant sections using the menu on the right side
Intro
Sometimes, especially when rendering animations, you wish you had more cpu-power. Of course you can rent time on a commercial renderfarm but that ain't free. Now many of us have access to more than one computer so in principle it is easy to set up your own renderfarm. However, this is seldomly as simple as it sounds: the software might not run on the os of the machine you want to use or installing it depends on lots of external packages. Often configuring the farm is not straightforward either. This might still be the way to go if you have the expertise and/or dedicated hardware, but wouldn't life be a bit simpler if all that was required to use the pc of your girlfriend/roommate/whatever that it was able to run Blender? With that thought I started writing NetworkRender . Its designgoals where simple:- any Blender installation can run it
- zero configuration is needed for the (end)user
Features
- Zero configuration for the enduser
- Distributed rendering of animation frames
- Distributed rendering of large still pictures
- Easy to add/remove (extra) servers
Acknowlegdements
The possibility of rendering a large image in parts was made possible by Macouno's Really Big Render scripts. Although almost no code was reused from his implementation, the algoritm is clearly recognizable in my code and I could not have done this without his inspirational prior work. You may find his site interesting for many other reasons as well. Another thank you goes out to the community at BlenderArtists.org who were willing to test the inititial versions.Usage
Running a Server
On every PC that you want use as a Server:- Start Blender
- From the render menu select RenderServer
- OR: From the scripts menu select Render->RenderServer
screenshot: were can you find the scripts
Running a Animation Client
- Start Blender
- Load the .blend with your animation
- From the render menu select AnimationClient
- OR: From the scripts menu select Render->AnimationClient
Running a Still CLient
- Start Blender
- Load the .blend with your still
- From the render menu select StillClient
- OR: From the scripts menu select Render->StillClient
Installation
Installation is straightforward:- download NetworkRender.zip
- unpack this file in your .blender/scripts directory
Prerequisites
Although zero configuration is one of the goals of this set of scripts there are some things that must be verified before you can succesfully use them:- you must run Blender 2.47 or newer. 2.46 might work, but so far it's only tested on 2.47 (the official version)
- you must have a full Python 2.5 installation. This is almost allways the case on Unix(-like) systems and on Windows it's easy to install: just check Python.org and follow the download instructions. The scripts are tested against version 2.5.2
Security
Clients communicate with the Server(s) via a RPC connection on TCP port 8080. That means that the host that is running the RenderServer must be configured to allow incoming connections on TCP port 8080. Typically your resident firewall (the one on your box that monitors incoming and outgoing connections) needs to be told that that's ok Unix(-like) systems have different ways to accomplish that (and some distributions are provided wide open) and on WindowsXP you can expect a pop-up window the first time you start the RenderServer script. Likewise, Clients listen to broadcasts from Servers announcing themselves on UDP port 8082. The resident firewalls on the boxes running the ClientRender script should be configured to allow that.WARNING
Although the code is designed to allow incoming connections from machines that it considers to be on the local subnet this is shallow security indeed: Always make sure you are on a secure network segment!Security is your responsibility, not this scripts!
Future
Future development of these scripts will depend on feedback I receive, but for now will focus on:- Cleaning up the code (for easier maintenance)
- Finding workarounds (for interrupts mainly)
- Better exception handling
