it isn’t easy to use multiple computers on a network to render in parallel. That’s exactly what this program will do. It connects to multiple computers on your network, and lets Blender render in parallel on each. This will drastically improve your rendering speeds!
Multiblend is a standalone Python script that runs from outside Blender. This means you can even use it on machines that don't have powerful graphics cards, like older computers or servers.
Having the ability to distribute rendering across a couple of computers can be really useful, even for the casual home user. Once Multiblend has been set up (6 lines in the config file, of which 4 probably won’t have to be changed, plus 4 lines per computer), it can be called as follows:
Hi, here is a script I did for distributing the render of single frames: http://fab.gnux.info/progs/cutilan.zip
I hope you’ll enjoy it. I haven’t take a look to your code but maybe we could do a “all in one” script, but mine require blender to run on the “master” host, slaves won’t need it.
Your code sure is a lot more complex than mine. One of the features of my script is that it is just a single file. The only thing that needs to be run on the slave nodes is a SSH server and a NFS client, and Blender needs to be installed on it. SSH and NFS are installed on the majority of Linux computers by default.
I’ll see if I can decypher your code. It could sure use more documentation in the code itself. It would be nice to have a one-for-all distributed rendering solution, but I can’t promise anything - I’m working on my graduation project at the University of Amsterdam, which is taking quite a lot of my time. I needed the distributed rendering for a presentation I made in Blender
This looks very cool but I wonder if it would be useful for me. If you have time to comment, please do. I current render an animation on all of my projects. However, the animation isn’t an animation in the typical sense of the word. It merely uses the animation code in blender to render several still images of the same model from many cameras. I have a script that automatically switches the camera to a different camera at each frame. So, then I render 10-17 images by clicking on ANIM. However, I am really just generating 17 still views of the same model. If I use your script to distribute this process to multipl computers, I suspect my script which is linked inside the model will get ignored. True?
The advantage of my code is it includes the networking part, so there is no need for external setup (like ssh or nfs) . By the way, I think you could forget nfs and use scp or similar, it will simplify deployment. In fact, I think my code could easily be modified to render multiple full frames. If I get some time I’ll do some try. Have you tested my script ? worked ? I havn’t got a lot of feedback…
Feel free to ask questions about the code if you need.
My script uses Blender for the rendering, and it will render just like when you hit the “Anim” button. Everything should work out fine!
I haven’t tested your script yet. About not using NFS, it’s a good idea. Blender outputs the filename of the saved frame, and I can use that to copy it back to the master node.
Fab31, how does your script deal with external dependencies of the Blender file? What if images etc. are required and not packed within the .blend file?
If you have problems, run this slightly modified version (same place: http://fab.gnux.info/progs/cutilan.zip). It’s more verbose, paste the whole console output, it may help.
Looking for installed Python version 2.4
Got it!
SCANNING…
testing 192.168.0.115:18812 (^C if it’s too long)…
>> 192.168.0.115
Sending job to 192.168.0.115
streaming 997623 bytes
FAILURE: coercing to Unicode: need string or buffer, NoneType found on {‘host’:
‘192.168.0.115’, ‘part’: 0, ‘result’: <AsyncResult (exception) at 0x01799bf0>}
UNMANAGED ERROR
FINISHED 1 parts in 0.00 seconds
Host:
C:\Python24>python “C:\Progs 3D\Blender 2.41\cutilan\run_server.py”
[1632] bcast: started broadcasting query server on (‘0.0.0.0’, 1812)
[1632] listening on (‘0.0.0.0’, 18812)
[1632] bcast: now answering (‘192.168.0.1’, 1158)
[1632] welcome (‘192.168.0.1’, 1159)
[1632] goodbye (‘192.168.0.1’, 1159)
[1632] welcome (‘192.168.0.1’, 1160)
Job request
Start working
Stop working
BLENDER = r"c:/Progs 3D/BlenderCVS/blender.exe"
TEMPORARY_DIRECTORY = r"c:/tmp" # change it if you want
Do y need the “r” letter or not? have tried with and without.
Last result:
Server: (run from Blender)
Looking for installed Python version 2.4
Got it!
SCANNING…
testing 192.168.0.115:18812 (^C if it’s too long)…
testing renderfarm.myhost.com:18812 (^C if it’s too long)…
ERR [SERVER] renderfarm.myhost.com:18812
>> 192.168.0.115
Sending job to 192.168.0.115
streaming 996945 bytes
FAILURE: coercing to Unicode: need string or buffer, NoneType found on {‘host’:
‘192.168.0.115’, ‘part’: 0, ‘result’: <AsyncResult (exception) at 0x01798c50>}
UNMANAGED ERROR:
Traceback (most recent call last):
File “client_script.py”, line 126, in ?
bzf, duration = job[‘result’].result
File “C:/_Progs 3D/BlenderCVS/cutilan\Rpyc\AsyncNetProxy.py”, line 65, in _get
_result
raise_exception(*self._result)
File “C:/_Progs 3D/BlenderCVS/cutilan\Rpyc\Lib.py”, line 19, in raise_exceptio
n
raise val
TypeError: coercing to Unicode: need string or buffer, NoneType found
FINISHED 1 parts in 0.00 seconds
Host:
[3608] bcast: now answering (‘192.168.0.1’, 1410)
[1632] welcome (‘192.168.0.1’, 1411)
[1632] goodbye (‘192.168.0.1’, 1411)
[1632] welcome (‘192.168.0.1’, 1412)
Job request
Start working
Stop working
ERROR OCCURED:
None
I don’t see any error here
The “r” is for disabling escape sequences interpretation (using it allow you to type "" in the string instead of “\”).
I’m not sure but it sounds like a bug in the backend library for network (Rpyc)… Please, re-download the .zip, It’s a bit more verbose again it should expose something if it comes from my code.
I can’t test it since I have no windows installed. when you start blender with -h do you have the -F argument documented ? If you have it, it should be ok.
Could you be more explicit ? don’t you find any file in the .zip ? if so, install a better unzipping program. If you find files, then simply read the readme