Network Rendering in Blender

networkrender logo

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:

This page documents the first attempt at such a design. It is already quite workable, but feel free to join the the discussion on BlenderNation if you have any questions or send me a personal message (my nick on that forum is varkenvarken)

Features

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: screenshot ender menu

screenshot: were can you find the scripts

Running a Animation Client

In the console window you will see the progress as every frame gets rendered. After a few seconds you'll notice if a server is dicovered and frames will be dispatched to render on those servers too. It is NOT neccessary to start a server first: one or more servers may be started anytime before or during the rendering of an animation. They will be used as soon as the announce themselves. Servers may also be stopped at any time. If a frame is lost due to this interruption, it will be rendered again on other servers or on the machine the client is running on.

For now an animation may only be rendered as separate images for each frame. So select jpeg (NOT avi-jpeg) as output format!

Running a Still CLient

Note that the picture is rendered in 4 parts and will be twice as wide and twice as high as your original. Also the perspective will be (slightly) distorted. Wheather that will be a problem is up to you, this cannot be changed at the moment since the Blender Python Api simply does not provide any means of rendering e.g. the original tiles that a picture is split up in during rendering. It's Macouno's clever hacking that makes is possible at all to do this.

Installation

Installation is straightforward: Note that this zipfile contains 3 toplevel scripts and a subdirectory bpymodules with additional modules.

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:

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:

Technical Notes

Additional development info can be found on a separate page.

Sections

Links

External links

Creative Commons License

This work is licensed under a
Creative Commons License