Nuke Frame Server setup on Windows

Recently I was working on a short film called "June", directed by actor/director Dwayne Cameron. Unfortunately, the render farm software in the facility is under maintenance. Fortunately, it opened up an opportunity for me to look into Frame Server in Nuke 11 to learn how to utilize the whole room of computers around me! Basically, frame server is now a standard feature in Nuke (Not only in NukeStudio), it's kind of like a render farm software that comes with Nuke itself, that allows you to distribute your nuke script for other computers to render.

Surprisingly there's not a lot of documentation out there and referencing The Foundry's guide and took me a while, so here's what I figured out.

 

Steps

To clarify, a frame server is like any render farm system. There's your main workstation which you use, and the slave machines you want to use for render only. Below are the things you requires to get frame server up and running.

  • Main workstation's IP address/System name (You don't need the slaves' IP or system name, just the main)

    • you can get the former by executing ipconfig in cmd and look for the IPv4 address. As for system name just look at the computer properties.

  • Make sure each slave machines have the same nuke version installed and running on the same network.

  • Write the batch file which you can open from each slaves (Which I will explain below)

  • Run the batch file on each slave machines.

    • if it's running correctly, the command prompt window should stay opens.

    • Any error you might encounter will be logged on this window, until you close it.

  • Run this command on your main workstation in nuke to see if your slaves are connected:

  • If they shows up, you have your frame server running!

  • Once you are done and wish to terminate frame server, simply close the command prompt window.

Writing batch file for your slave machines

  1. For the batch file, you need to create it with a text editor. Window's notepad works just fine since it's short but I would recommend Notepad++ or some more advance editors. First, change directory to wherever your nuke directory is. This is because you need to start frame server with python, and not only nuke directory already has python version. It also makes it easier for later step.

  2. Next runs runframeserver.py with Python, which should be in your nuke directory.

  3. Since we're already in Nuke directory, it should be as simple as

In 2. step above you need to include arguments required to run frameserver, which is explained in The Foundry's guide. Here's what my final batch file looks like after putting in the required arguments.

Pay attention to arguments

--workerconnecturl

  • What you really needs to pay attention in step 3 is the --workerconnecturl. Which I spent most of my time figuring it out. In my case it is tcl://2017C018:5560

  • 2017C018 is the name of my main workstation, where I distribute jobs to the slave machines. You can also use IP address for this which you can get from running ipconfig. Personally, I prefer system name as its easier to remember. 5560 is nuke default communication port, which shouldn't change. Nuke path is where your nuke exe resides, if you changed your directory in the beginning of this script it should be just --nukepath=nuke(version).exe

--useInteractiveLicense

By default frameserver will launch with a nuke_r license, but the facility I was in only has nuke_i available, hence the last flag --useInteractiveLicense

Saving the file

Finally, save this file as a batch file, *.bat I named it as frameserver2017C018.bat so I know which main workstation is the bat file written for. As mentioned you can run the same bat file on any machines on the same network, and they'll all be slaves for your main machine.

And that's it! Apologies for my messy code, but it's only a bat file with 2 lines! I hope this short guide here is elaborate enough for anyone who's reading this to get their own frame server running!

Previous
Previous

Installing DroidCam on CentOS 7

Next
Next

Creating nukescripts.PythonPanel