Table of Contents
LambDa is a distributed system for rendering with Blender. It is designed for use on mobile devices.
LambDa has three components: the server, the workers, and the requesters. The server is intended to run on a laptop/desktop, the workers on mobile (Android) devices, and the requester anywhere a rendering job originates.
When a requester submits a Blender job to the server as a .blend file, the server divides up the rendering work among all connected worker devices on a frame-by-frame basis. It collects the output PNG images, and when all the frames have been rendered, it returns the images to the requester.
Follow these steps to get the server, workers, and requesters up and running.
To run a LambDa server or requester, all that is needed is a device with Python installed. The LambDa worker requires Python and Blender.
To run the LambDa worker in a mobile environment, you will need to install a Linux distribution on an Android device. We recommend using Andronix to obtain Linux and Termux for a mobile command line. Install Andronix from the Google Play Store and Termux from F-Droid, a third-party app store. (Installing Termux from the Play Store will not work.)
Follow the instructions in Andronix to install Arch Linux on your device.
If you want to interact with the Linux GUI on the mobile device, you will also need to
install VNC Viewer. After you
have set up the Linux distribution using Andronix and Termux, go to Termux and enter the command vncserver-start
. You
will need to provide a PIN number the first time you run this command. Then open VNC Viewer and connect to localhost:1
. Enter the PIN you set. You should now have access to the Linux GUI.
To install Blender, run
sudo pacman -S blender
.
Once you have installed Blender, you should also
be able to start the Blender GUI through VNC Viewer.
LambDa has been tested with the following configurations, but we expect it to work with any device running Python 3 and Blender 2.82, 3.1.2.
Server/Requester:
- Linux/Windows/macOS
- Python 3
Workers:
- Ubuntu 20.04 (Andronix), Arch Linux ARM (Andronix)
- Blender 2.82, 3.1.2
- Python 3
Any version of Blender since 2.82 (and possibly earlier) will work, but note that the system can only render a model if the oldest Blender version on any worker is at least as new as the Blender version that generated the Blend file.
-
Install dependencies
sudo pacman -Sy sudo pacman -S git sudo pacman -S blender
-
Download the Lambda repo
git clone https://github.com/luckiday/LambDa.git
-
Install Blender
sudo apt install blender
-
Download the Lambda repo
git clone https://github.com/luckiday/LambDa.git
Start the server by running
cd src/server
python3 server.py
The server starts on port 4455. If necessary, the port number the server uses can be changed by modifying the line
in server.py
that starts with PORT =
. You may need to modify your device's firewall settings to allow connections on
this port.
The server can be terminated at any time with Ctrl-C, however, this will not stop any worker or requester processes on any device. Resuming a job after the server restarts is not supported.
The worker needs to know the IP address of the server to connect to. Enter the address after the option --serv-addr
on
the command line when starting worker.py
. If none is provided, the worker will use the IP address of the machine it is
running on. The server's IP address will be displayed on the server's console after starting it.
If the server's port number was changed from the default, the port number must also be changed in worker.py in the line
that starts with PORT =
.
After the server has been started, start each worker. If using Andronix, first run this command to start the display (it may already be running):
vncserver-start
Then start the worker:
cd src/worker
python3 worker.py --serv-addr [SERVER_IP_ADDRESS]
The worker can be terminated with Ctrl-C, but note that terminating a worker before it has completed the work assigned to it will cause the job to fail, and the cluster will need to be restarted.
To request a project to be rendered, locate the .blend file, then run
cd src/requester
python3 requester.py <PATH_TO_BLEND_FILE.blend> --serv-addr [SERVER_IP_ADDRESS] --rend-engine [RENDER_ENGINE]
The IP address of the server to connect to is configured the same way as in the worker.
The rend-engine
option can be used to specify which render engine Blender
should use. The options are:
CYCLES
: The path-tracing render engine. Usually produces the best quality render, but takes the longest time. (Cycles)BLENDER_EEVEE
: Blender's realtime render engine. (Eevee)BLENDER_WORKBENCH
: An engine for quickly rendering previews of animations. (Workbench)
On the requester device, your project's output will end up in
├── requester
│ ├── random_proj_name
│ │ ├── outputs
│ │ │ ├── 0001.jpg
│ │ │ ├── ...and so on
- Render farm with Blender 2.8
- Render farm for Blender 3.x
- Updated Installation Guide for Blender 3.x
Distributed under the MIT License. See LICENSE
for more information.
Project Link: https://github.com/luckiday/LambDa