Skip to content

luckiday/LambDa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Stargazers Issues MIT License


LambDa

A mobile render farm

Table of Contents
  1. About the Project
  2. Getting Started
  3. Usage
  4. License
  5. Contact

About the Project

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.

(back to top)

Getting Started

Follow these steps to get the server, workers, and requesters up and running.

Prerequisites

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.

Compatibility

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.

Installation

Arch Linux

  1. Install dependencies

    sudo pacman -Sy
    sudo pacman -S git
    sudo pacman -S blender
    
  2. Download the Lambda repo

    git clone https://github.com/luckiday/LambDa.git
    

Ubuntu

  1. Install Blender

    sudo apt install blender
  2. Download the Lambda repo

    git clone https://github.com/luckiday/LambDa.git
    

(back to top)

Usage

Server

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.

Worker

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.

Requester

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

(back to top)

Roadmap

  • Render farm with Blender 2.8
  • Render farm for Blender 3.x
  • Updated Installation Guide for Blender 3.x

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Project Link: https://github.com/luckiday/LambDa

(back to top)

About

Mobile (Android) render farm with Blender 3.x

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages