Here is a render of Frank in the kitchen. Note the addition of normal maps to the hands to show vain and tendon detail.
Well... after seeing the character more fully developed, I decided his name is Frank. He is now fully rigged and only a little texturing left to do. He still needs an apron and a paper hat, and then he'll be ready to man the kitchen for short order. Note the severe farmer tan. Here he is in all his glory...
The rig is nearly finished. Definitely the nicest one I've built. The lattice did not work, so I went back to weight painting the gut. seems to work pretty well. Here he is ready to take on the foe. A few more bones and I'll work on texturing...
|"I'm warning you..."|
I struggled for a while with how to weight the belly. Surfaces so far away from bones tend to wrinkle up during deformation. After trying several variations of the deformation mesh, I ended up using a couple of lattices front and back with weighted hooks to the bones of the spine. Here you can see the lattices, hook empties, and the resulting deformation with the belly pointing downward. Both the front and back lattice use the same set of hooks.
Note: The following information is based on Blender 2.5 Alpha 2 (R2.52.0 27226) running over Windows XP.
Important: Do not render to the network directly from your working file. Once you have everything set to render the way you like, save the working file and then save it with a different name (like myfilename-NR.blend). You can then send this file from the client.
So some knuckle heads like me that like to Blend things are not network geniuses and need a little help to understand how networked things are supposed to go together. If you are in that boat, this tutorial may help you get a render farm up and running with minimum hassle.
When you first looked at Blender 2.5, if you are like me, you were stoked to see that the wonderful folks at the Institute have included an option for network rendering. That is until you tried it. Then there was just major confusion and disgust because all wiki stuff assumes that you understand the topology of the render network and know the difference between client, master and slave nodes and how they all work together. Which machine is the master? Which is the slave? What on earth is the client for? You've got questions, I've got answers.
What Do the Various Nodes Do?
To begin with, the system requires all three types of nodes (client, master and slave) at the same time to operate as intended. The order in which you start them is important, and several other settings are required to make life easier. Here is a brief description of each node and what it does:
The Master Node does no rendering, it just stores the .blend information and sources out the rendering to slaves and keeps track of what 'Chunks' are going where.
The Slave Node (or nodes) are the work horses, doing all the rendering under the control of the master.
The Client Node is the node from which render jobs are sent to the master for distributed rendering by the slaves. This is where you have your project open and are working in Blender.
As an example, let's run all the nodes together on one machine so you understand that the various node types are not machine dependent. I grant you that this is silly because you will be using the same resources for all three nodes, but it is a learning excercise.
Setting Up the Master
Start an instance of Blender and open the default drawing. In the rendering engine dropdown (to the right of the scene dropdown) select 'Network Render'. If you have the render button selected in the button window, you should see the Network Settings panel that looks like this:
The first instance of blender that we start needs to be the Master node. Click the button that says 'Master' (it will turn blue). Now the panel will look like this:
Simply press the 'Start Service' button, the render window will open and the master will begin broadcasting a signal over the network identifying itself to any clients or slaves.
Setting Up a Slave
Now start another instance of Blender and repeat the process, only this time, select 'Slave' as the node type. The Network Settings panel will look like this:
Click the 'Refresh' button (with the circular arrows on it) and the slave will go looking for the address of the master node on the network. Once it finds it, it will display the IP address like so:
In this case the address is the same as the address of our master since we are running it on the same machine. Click 'Start Service' and the render window will open, signifying that the slave has started. A slave node can reside on the same machine as the master, and you can open slave nodes on as many machines as you have available to do the work of rendering.
Setting Up a Client
Now open a third instance of Blender. This is the instance where you will want to open your project to be rendered. Once you open the project, while the render engine is still set to 'Blender Render', specify your render settings such as size, default location and file type, and frame range for the render. Once you have all these settings tweaked as you would like (perhaps doing a test render or two locally before sending the job to the network) SAVE THE CHANGES because the last saved version is the one that will be rendered (see 'Where Are My Images?' and 'Where Are My Textures?' below). It is recommended that you do a save as to make a copy for network rendering. Change the render engine to 'Network Render' and the default node type of 'Client' should be selected. The panel looks like this:
Here again, press the 'Refresh' button to find the master node on the network. The panel will then look like this:
Admittedly this is a little intimidating. But let's do a simple network render to alleviate your fears. Click the 'Send Job' button. This grabs the .blend file and sends it to the master node and prepares it for rendering on the slaves. The 'Job Settings' portion of the panel will look like this:
Now you are ready to do your first network render. Click the 'Get Image' button. Your client node will send instructions to the master node to render the current frame from the saved version of the .blend file. The master node will determine which slave nodes are available to do the rendering and send information to them to render the frame. The slave nodes will render the frame. Once the image is rendered, it will show up in the render window of your client. You have just rendered over a network!
Stopping the Render
To stop the render from the client, click the 'Stop Render' button or press escape. Click 'Open Master Monitor' and in the Netrender interface (that opens in your web browser) click 'Clear Job List' and confirm to delete the job files on the master. You must reopen your file and reset the client to start rendering properly again. If you save the file with the client network render settings enabled you will not be able to do normal network renders with it again, so do not save the file, especially a working file, after you have enabled the client settings.
Great! Now What?
Rendering a single image over the network is nifty, but of course what you want to do is render big, beefy animations, right? So what happens when we send a lot of stuff to the network to render? How do we know what's going on with our job?
Did you notice the 'Chunks' selector in the Network Settings panel? By using this we can specify how many chunks (or frames) will be rendered before we can retrieve them from the master. By default this is set to five. If you just can't wait for five frames to render before you can look at them, you can lower this number. On projects with a lot of frames, the master will send them to the slaves in chunks of the size you specify. A lower number could mean that machines with faster processing times will get more of the share of the work.
Okay, so you sent your 250 frame animation to the master and started the network animation. How do we keep track of what's going on with the network?
If I want information about the slaves that are running on my network, I can click the refresh button in the Slaves Status section of the panel. Here are my two slaves on the network I set up:
You can enter a name in the Job Settings panel for each job you send, so it is easier to identify which jobs are rendering. By clicking the refresh button on the Jobs section of the panel, I can see what jobs are in the queue and limited information on the status, like the length in frames, number of frames completed and and frames with known errors. Here I have sent a single frame job named 'FLY' the network:
If I want more specific information on all the jobs in the queue plus the ability to change things such as priority and and other network control settings, I can click the button entitled 'Open Master Monitor' and get a web-based interface utility that will allow me to administer the complete queue.
Where Are My Images?
Now that the network has rendered my animation, how do I get it to where I can use it? All of the images are stored on the network nodes apart from the client, so we need to get them back on the client where we can put them into a sequence editor. By clicking the button highlighted in red below on the Jobs section you will import all of the completed images into the directory you specified as the Output directory in the Blender Render panel.
Where Are My Textures?
So I rendered my job and all my textures are gone, man! What happened? Remember when we clicked the 'Send Job' button and sent our .blend file over to the master? One important step we need to take is the make the resource paths relative or pack the resources into our blend file so the master node can find them locally. Do this using the file menu as show below and then SAVE YOUR FILE before sending it to the master node.
Expanding and Summary
Of course what you have just done on a single machine can be expanded over an entire network with multiple slaves and clients. You are limited only by the amount of computers you can scrounge up. I hope you found this brief tutorial helpful and if you find any inaccurate information or think something else should be included, please indicate it in the comments below. Happy Blending!
I modeled a hamburger for inclusion in my animated short. My wife insisted on the bun having sesame seeds, which I thought would be a problem. I used a hair particle system with the particles modeled from an object and it worked nicely. I can easily add more or less seeds if I want to. I tested it in animation and the seeds do not moved because I have the hair physics disabled. Thanks Blender for the particle system.