network rendering

Currently i’m training for C# asp.net , but the same could be done in PHP i believe

it would be pretty easy to create a web page that would generate a range of frames (start, end).
for a project named [xxxx ] (user fills in)
with shared content on [ \share\blender\project\ ] (ea cash files and images)

a client side script visits the page and requests a new batch

*with asp it has to run on a windows 10 client or server2012 with IIS

as i see several attempts to network rendering i’m wondering do i think to simple of the problem ?.
i even guess it could be done without IIS / PHP (big guess) and be all python based, as simple networking app
but im not that deep into python anymore.

Has this simple aprouch allready been made? (in php or asp)

kinda supriced no feedback, let me be more simple
what would you guys think of the idea the a single client offers a webpage, that distributes essentially tasks to to render specific frames, this could be single frames, or a small series of frames.
Or some Math distribution of frames todo for an animation.

so then other desktops, could run a small python script which would instruct a local commandline blender to render some part of an animation.

I’m just telling that writing such a page, is not rocket science, same for client side script to look at a page to follow a instruction.

The idea basicly is something like a page counter, so each desktop gets its individual count ID

– now since i only know windows in coding, i can only code it for windows users…
(but still linux python clients could run desktop side blender to follow instructions on the web page.)


but before i make something i was wondering.
Has this allready be done in PHP maybe (even IIS (webserver delevired with windows 10), can run php these days)

Would there be a need for network rendering ?

Are there concerns about this type of rendering ?

  • what crossed my mind is that on a network PC’s dont have equal speed, it not a problem, some PC’s will do more frames then other, since page alike counters update on visit and dont care much about who asked for a next number (though i could log that).

  • a problem might be physics / baking

  • maybe one of you can tell me of other potential problems

  • or maybe someone knows if this simple version of distributed network rendering allready exists for blender
    (it be a waste of time if we invent things twice)

  • would you people want this ?,

so this is useful for renderfarms… the way we do it is using internal scripts.

we have a client script, for the artist to submit jobs… this sits in blender, and when its ready to go they press the button and it sends them to a webpage with information about the file (which cameras to render, what frame ranges etc.etc.etc). this resides on our server and serves it via php. once the job is confirmed, it is put into a mysql database, and linked to the blender file.

The client, then sets up a bat file which is run over the rendergrid, each batfile, is simply blender -b /location/to/blend/file.blend -P /location/to/node/script.py

This script then asks the server what to render for that blend file, sets the options defined previously and renders it with placeholders no overwrite (simplest option for setting up a render grid)

we tried out netrender(which is a addon for blender) back in the day but found there was loads of overhead, as it would send the blend file each time to each node, instead of read once render many times. and was also quite inconsistent in general.

There was a something around once similar to what you speak of Razorblade, but I forget the name of it. Just did a quick search on blendernation for it and I couldn’t find it. Anyhow, from what I remember it used PHP & apache, and maybe some sort of SQL, I just don’t remember. What I do remember is that it needed apache to be installed, and I was thinking to myself - that’s too much work to be installing software.

You might want to look at Loki render. It’s a render farm setup that’s written in JAVA, I think. There is a thread about it somewhere in this section of the news section. Here: https://blenderartists.org/forum/showthread.php?353911-Loki-Render-0-7-0-released!

In the past, I updated an older render farm software to work with what was then the current version of blender, blender 2.60 or so… (yeah I know that’s old by today’s standards) and I got it to work and even used it a few times. It was super easy to use compared to blender’s netrender. It consisted of one executable file and one python addon for blender. To use it, each computer had to have the executable and a copy of blender on the computer. To run the system, you ran the executable on a computer, now that computer became the master. On each slave machine, you ran the executable with a command line switch (–slave maybe?) and each slave machine then connected to the master. The master sent each slave information and each slave ran blender without the UI to render it’s frame. The blender file and the finished renders were all stored on a shared network drive. It worked really well for me with a minimal amount of work to get it up and running. To monitor and control the system was done via a web browser.

It was cross platform, but by now, I think the master/slave software might be a little dated and not able to run on the latest MAC OS. I have thought about getting the software updated, but I haven’t really had a need for it, so I haven’t touched it in years. But to me, it either use that, or Loki render if you’re using a small home or office network of computers to render.

Just my thoughts,
Randy

Thanks for your replies, i was thinking in the range of small offices. (depsite thet asp.et scales to hosted solutions / render farms).

I could realy have used that product in the past.
I’m not actively rendering at work anymore (i’m looking for a new job).
While I’m improving my coding skills (learning), and looking at whats possible in asp.net.
I looked back at blender and thought maybe i could do something back to Blender for the community

But now i understand from you a product of what i had in mind does allready exists called Loki, so i better put my energy elsewhere.

Thanks again for your replies.

This sounds pretty nice :slight_smile:
At work we use autodesk backburner as a queu managaer, and send jobs from blender.
backburner is free, so all i did was write a job submitter for it. It sends a (long) string to Windows cmd.exe. Which in turn calls the backburner tool.
if you are interesten you can use our script to help you get underway, it should do pretty much everything you need from the blender part.
it would be nice to get rid of autodesk all together. (We were 100% 3dsmax untill 1,5 years ago)

Ps: loki is fine for still frames, but when dealing with render laters and animations i ran in quite Some problems.

Basically with NetRender(not bad in my opinion IF you are doing it in a production environment(with lots of servers rendering multiple frames)), based off how I have worked with it, instead of using a web interface for distributing the workloads it simply uses sockets to transfer the needed data. The service is really only useful for animations, but at the same time there shouldn’t be that much that you’d need a full dedicated render farm locally for(imo, but of course there are use cases for it). Honestly I’d just recommend investing in a good graphics card(blender is getting better with amd but I’d still go the nvidia route)

Effectively, I’d like to see a netrender client for blender that supports single frames but I think the issue with that is determining how to distribute the workload effectively. A machine with two 1080s is going to be faster than a machine with a 960 of course, and having a server determine how to chunk up the work in the most optimized manner would be a relatively difficult task as you’d have to account for everything in the scene and determine what parts of the scene(high reflectivity, complex shaders, etc) would get those loads. To be safe you’d have to distribute the full .blend to every machine because you can’t withhold materials from different objects and you’d need to transfer all meshes to account for proper lighting. Unfortunately just distributing chunks of frames isn’t a very efficient process unless you can come up with a benchmark of sorts for all the machines on the network(at runtime).

Full disclosure though, I’ve never played with Loki, but I just downloaded it and I can’t wait to try it out.