Rotobot OpenFX Plugin Documentation Release 1.4.0

Sam Hodge

May 30, 2020

Contents:

1 Frequenty Asked Questions (FAQs)1 1.1 How accurate is Rotobot?...... 1 1.2 Why is it so slow?...... 1 1.3 What is the colour space to get the best detection?...... 1 1.4 Why does my 5K image take so long?...... 2 1.5 How do I install Rotobot?...... 2 1.6 What is that glitch?...... 2 1.7 How do I install a license?...... 2

2 User Guides 3 2.1 Rotobot Segmentation...... 3 2.2 Rotobot Instance Segmentation...... 3 2.3 Rotobot Person...... 3 2.3.1 Input and Output are RGB and RGBA...... 4 2.3.2 Input Colorspace...... 4 2.4 Create a mask using Rotobot Segmentation...... 4 2.5 Isolate and seperate an indivdual using Rotobot Instance Segmentation...... 5 2.6 Create a soft mask using Trimap...... 5

3 System Adminstration Docs 7 3.1 Functional description...... 7 3.1.1 Details of OpenFX Plugins...... 7 3.1.2 Caching of computation...... 8 3.1.3 Details of CUDA compatibility...... 8 3.1.3.1 CUDA Toolkit is installed with CuDNN dependency...... 8 3.1.3.2 CuDNN is always called the same thing...... 8 3.1.4 Rotobot Compatibility Table...... 11 3.1.5 Details of memory requirements for models...... 12 3.1.6 Multi GPU Performance...... 12 3.1.7 Limitations of Resolution...... 12 3.1.8 Colour Space information...... 13 3.1.9 Details of Environment variables...... 13 3.2 Systems Administration Guide...... 13 3.2.1 Installation...... 14 3.2.1.1 Default Install Locations...... 14 3.2.2 Components Installed...... 14 3.2.2.1 Deep Learning Models...... 14

i 3.2.2.2 Open FX Folder/Bundle...... 14 3.2.2.3 Shared Libraries...... 15 3.2.2.4 Main OpenFX Plugin...... 15 3.2.2.5 License Files...... 15 3.2.3 Installation on a single computer...... 16 3.2.3.1 Windows...... 16 3.2.3.2 MacOS...... 16 3.2.3.3 Linux...... 16 3.2.4 Network installation...... 16 3.2.4.1 Linux...... 16 3.2.4.2 Rez example file...... 18 3.2.5 Reporting a fault...... 18 3.2.6 Requesting a feature...... 18

4 Choosing an Installer for Rotobot 19 4.1 Install packages Guidance...... 19

5 Licensing 21 5.1 Node locked license with a license file...... 22 5.2 Floating license with a server executable using license file and the clients pointing to server..... 22 5.2.1 Server...... 22 5.2.2 Client...... 22 5.3 Requesting a trial license...... 23 5.3.1 How to find a hostid to sign a trial license...... 23 5.3.2 How to find your rlmhostid on Windows:...... 23 5.3.3 How to find your rlmhostid on macOS:...... 24 5.3.4 How to find your rlmhostid on Linux:...... 24 5.4 Node Locked license installation...... 25 5.4.1 Installing a node locked license on Windows manually...... 25 5.4.2 Installing a node locked license on macOS...... 25 5.4.3 Installing a node locked license on Linux...... 27 5.5 Floating license installation...... 28 5.5.1 Running the License Server...... 28 5.5.2 Installing a RLM service on Windows...... 28 5.5.3 Running the RLM Server as a Service on Linux...... 30 5.5.4 Running the RLM Server as a Service on macOS...... 30 5.6 RLM web server...... 30 5.7 Annual License renewal...... 31

6 Indices and tables 33

ii CHAPTER 1

Frequenty Asked Questions (FAQs)

1.1 How accurate is Rotobot?

It depends. . . Rotobot Instance Segmentation is very inaccurate when the category detected is large in screen size, Rotobot Seg- mentation is more accurate but more expensive to calculate, Rotobot Trimap can give soft edges and is even more expensive to calculate. None of the above is a replacement for hours of hand Rotoscoping getting a perfect edge. It is intended as a place holder so you can get started and see what needs to be improved. Rotobot makes pixel based masks rather than splines that can be adjusted and animated by changing a small number of animated keyframe values, to improve on Rotobot mask you will need to use paint techniques.

1.2 Why is it so slow?

Deep Neural networks are large computations. If you have ever created a blur operation, you will know the larger the blur amount the longer it will take to compute. The calculations in a convolutional neural network do the equivalent computation of many many blur operations. These computations are stored as variables of the deep learning model that has trained for days on a large pool of data on some specialised hardware. Often the first frame of computation will need to load this model up and present it to the computer or the computer’s graphic’s card so the first initialisation will have some “spin up time”. After the first frame subsequent frames will take less time. So if you need to choose a batch size of how many frames to compute before starting the program again, choose a larger batch size, so you can spread the “spin up time” across the cost of the batch of frames. Similarly if you swap between one node and another, this moving memory from one place to another can be inefficient, if you can compute and write to disk and then look up the disk result, things will be faster overall, rather than connecting results from volatile memory.

1.3 What is the colour space to get the best detection?

Assuming your are compositing in a scene linear colour space such as ACEScg.

1 Rotobot OpenFX Plugin Documentation, Release 1.4.0

As a rule of thumb, if your image looks pale with the lookup table and looks natural without the lookup table, this is the expected input Rotobot detection for a Display sRGB image. So pixel values for a neutral grey will be approximately 0.5.

1.4 Why does my 5K image take so long?

The internals of the current version of Rotobot only support images of less than 2049 x 2049. It will be interpolated back to the input resolution but no additional detail will be added. A better approach would be to scale your image down to approximately 1080p use Rotobot and then resize the result.

1.5 How do I install Rotobot?

Installing Rotobot is a matter of putting your details into the web store and choosing the appropriate installer. You will receive an email with the download details. If you use a “ten minute email” you are in violation of the end user license agreement. You will be unable to gain a trial license to remove the watermark. Once you have downloaded the product, administrator rights are required for a simple installation, advanced installa- tion can be done without administrator privileges and will require reading of the System Administrator docs. There are few choices to make during the installation apart from the location where you would like to put the software, the default location makes sense in most situations. Please read the End User License Agreement because by installing the software you are entering into an agreement with Kognat Pty. Ltd. that is legally binding.

1.6 What is that glitch?

The watermark will appear and checkers and random brightly coloured squares, these are not GPU artefacts but intellectual copyright protection. Purchase of a license will remove the watermark

1.7 How do I install a license?

Please see the System Administrator notes. Kognat staff are in the process of simplifying the process, soon installing a license will be as easy as downloading a license installer and running the installer. But as there are both node locked licenses and client-server based floating license. The answer to “How do I install a license?” is “It depends on the license you are installing and your ” Be patient while we support your needs and level of aptitude with your operating system and complexity of your studio’s needs.

2 Chapter 1. Frequenty Asked Questions (FAQs) CHAPTER 2

User Guides

Rotobot should be fairly self explanatory to use. There are a number of checkboxes with an english category label which represent a red green or blue colour channel.

2.1 Rotobot Segmentation

Pixels that belong to that category’s semantic label will be active in the colour channel you choose. For example, if you choose red for cat you will get a red coloured mask shaped in the siloquette of a cat, if there is a cat in your image. Without ticking any boxes automatic colours will be chosen for you, which are hard coded into Rotobot.

2.2 Rotobot Instance Segmentation

A pixel coordinate may be given to isolate pixel belonging to an indivdual detection of a instance of a category. By default these pixel coordinates are negative and will match all instances. When you give a pixel coordinate you only get the cat under this pixel coordinate. Using expressions and pixel tracking you can isolate in individual from a group.

2.3 Rotobot Person

An RGB image of any colour space can be converted to an RGBA in that colour space detecting the pixels that belong to person. Choose the color space your footage is in the (default in will be scene-linear or linear) Leave the color space for Rotobot in sRGB

3 Rotobot OpenFX Plugin Documentation, Release 1.4.0

A progress bar will appear while calculating, the result with be a premultiplied RGBA Computation times of 0.1 fps are expected on a Pascal Generation GPU Use the environment variable OCIO to give a full path to an OCIO config. Search OpenColor IO on the internet for more details

2.3.1 Input and Output are RGB and RGBA

The following nodes expect a 32 bit per pixel RGB input and will return an RGB output 1. Rotobot Instance Segmenation 2. Rotobot Segmentation To use the result to make an alpha transperancy, a user can shuffle the channels used into the alpha channel The following nodes expect a 32 bit per pixel RGBA input and will return a RGBA output 1. Rotobot Trimap The following node expects a 32 bit per pixel RGB input and will return an RGBA output 1. Rotobot Person

2.3.2 Input Colorspace

It is expected that a neutral grey will be represented as 0.5 to all Rotobot Nodes. If your footage is in ACEScg a neutral grey will have a value closer to 0.2 For this reason, if you use an OCIO Color Transform Node to compute an sRGB or rec709 Display LUT into the pixels. In this way you can convert a ACEScg Scene Linear image to a sRGB Display Image. A good test is to compare the image of an image from the Internet such as a PNG or JPEG image with no colour managment to your input to a Rotobot node, they should have a comparable look. (Note Rotobot person has its color management built in.)

2.4 Create a mask using Rotobot Segmentation

1. Prepare your input image to be a resolution less than 2049 pixels in the maximum width, larger will not cause an error. 2. Ensure your input is in the appropriate colour space for Rotobot see Input Colorspace. 3. Create a Rotobot Segmentation Node 4. Choose the category cat for example in the red group section, if you have a cat visible in your image 5. Connect the input node to the Rotobot Segmentation Node 6. View the output of the node 7. Computation will start, the deep learning computer vision model will be decrypted and transferred to the GPU if available. 8. Allow for up to 40 seconds for the computation to start, the computation may take less than a second or up to several minutes per frame depending on hardware.

4 Chapter 2. User Guides Rotobot OpenFX Plugin Documentation, Release 1.4.0

9. Pixels that belong to the category you have chosen will be highlighted in red. 10. Using your compositing package you can use the red channel as an alpha mask to create a video layer.

2.5 Isolate and seperate an indivdual using Rotobot Instance Seg- mentation

1. Prepare your input image to be a resolution less than 2049 pixels in the maximum width, larger will not cause an error. 2. Ensure your input is in the appropriate colour space for Rotobot see Input Colorspace. 3. Create a Rotobot Segmentation Node 4. Choose the category cat for example in the red group section, if you have a number of cats visible in your image 5. Connect the input node to the Rotobot Instance Segmentation Node 6. View the output of the node 7. Computation will start, the deep learning computer vision model will be decrypted and transferred to the GPU if available. 8. Allow for up to 40 seconds for the computation to start, the computation may take less than a second or up to several minutes per frame depending on hardware. 9. Pixels that belong to the category you have chosen will be highlighted in red, for all of the detections 10. Using your cursor, note the pixel coordinate over one of the cats in your image, for instance X: 900 and Y: 270 11. Change the default X and Y coordinates from the value of X: -1 and Y: -1 to the coordinate you detemined above 12. Now only the instance of the category cat under the pixel coordinates will be highlighted 13. Using your compositing package you can use the red channel as an alpha mask to create a video layer.

2.6 Create a soft mask using Trimap

1. Prepare your input image to be a resolution less than 2049 pixels in the maximum width, larger will not cause an error. 2. Ensure your input is in the appropriate colour space for Rotobot see Input Colorspace. 3. Create a Rotobot Segmentation Node 4. Choose the category cat for example in the red group section, if you have a cat visible in your image 5. Connect the input node to the Rotobot Segmentation Node 6. View the output of the node 7. Computation will start, the deep learning computer vision model will be decrypted and transferred to the GPU if available. 8. Allow for up to 40 seconds for the computation to start, the computation may take less than a second or up to several minutes per frame depending on hardware. 9. Pixels that belong to the category you have chosen will be highlighted in red.

2.5. Isolate and seperate an indivdual using Rotobot Instance Segmentation 5 Rotobot OpenFX Plugin Documentation, Release 1.4.0

10. Using filters to grow and shrink the edge of the detection, you can make three zones in your image. 11. White 1.0 is where you are certain it will be foreground. 12. Black 0.0 is where you are certain it will be background. 13. Grey 0.5 is where you want the deep learning model to approximate the edge on your behalf. 14. When you have a channel prepared that meets the above criteria, using the composting tools make it the alpha channel of an input 15. The RGB of this input needs to be in the colour space described in Input Colorspace, the A of the RGBA needs be be 0.0, 0.5 or 1.0 16. Using a filter to limit the alpha channel input to three colours works well. 17. Connect the RGBA image to a newly created Rotobot Trimap node. 18. Use the channel tools to inspect the output A of the resulting RGBA, it will have values updated from the input. 19. Use your compositing tools to use this alpha mask to create a video layer.

6 Chapter 2. User Guides CHAPTER 3

System Adminstration Docs

3.1 Functional description

3.1.1 Details of OpenFX Plugins

OpenFX plugins are shared libraries written in /C++ which are initialised when an OpenFX host searches for exe- cutables. The directories that are searched by default are Windows:

C:\Program Files\Common Files\OFX\Plugins macOS:

/Library/OFX/Plugins

Linux:

/usr/OFX/Plugins

You can also search a number of paths using the environment variable

OFX_PLUGIN_PATH

If the folder/bundle called rotobot.ofx.bundle appears in the default directories or the search path as specified by

OFX_PLUGIN_PATH in your runtime environment Initially the plugin will attempt to load, some OpenFX hosts such as Foundry Nuke, will blacklist a plugin if it does not load on first attempt, which can be caused by missing dynamic libraries at the first attempt at running the plugin.

7 Rotobot OpenFX Plugin Documentation, Release 1.4.0

The simplest way to attempt to load a plugin for a second time is to find the file that ends in .ofx and update its date modified to the current time. Which can be done with command line tools. Linux and macOS: touch rotobot.ofx

Windows: copy/b rotobot.ofx+,,

3.1.2 Caching of computation

Rotobot computations are lengthy in comparison to other compositing operations but are fast in comparison to doing rotoscoping by hand. To this end rather than leaving Rotobot computations live to be recalculated in a script, it is worth writing the result to a non volatile location such as a hard disk drive as a file of the pixels what Rotobot has calculated. The workflow should be the same as pre computing any part of a lengthy composite. See your technical lead to see if there is an automation of this process in your pipeline or in your OpenFX host software package.

3.1.3 Details of CUDA compatibility

3.1.3.1 CUDA Toolkit is installed with CuDNN dependency

CUDA is used to accelerate the computation of the deep neural networks that have been trained to deliver the Deep Learning solution of Rotobot. CUDA is a technology made by NVIDIA and has several release versions. Each CUDA version has a compatibility with the hardware driver of the NVIDIA GPU installed in your system. Similarly the OpenFX host may make use of CUDA acceleration also. There is a Deep Neural Network software library from NVIDIA called CuDNN. It has been at major version 7 for a number of years. Only the minor and patch version of this library have been updated.

3.1.3.2 CuDNN is always called the same thing

Windows: cudnn64_7.dll macOS: libcudnn.7.dylib

Linux: libcudnn.so.7

The version of CuDNN is dependant on the version of CUDA Toolkit that the binary was used to link against the deep learning framework.

8 Chapter 3. System Adminstration Docs Rotobot OpenFX Plugin Documentation, Release 1.4.0

So while a OpenFX host may have chosen a version of CUDA Toolkit and CuDNN Rotobot need to match this version also, or it will see the file with an identical name and and try to use the binary routine and software symbols which are incompatible. This will result in a crash, or even worse a hung computer. For this reason, please choose the version of Rotobot that best matches your system with regard to hardware drivers and the compositing package you are using.

3.1. Functional description 9 Rotobot OpenFX Plugin Documentation, Release 1.4.0

10 Chapter 3. System Adminstration Docs Rotobot OpenFX Plugin Documentation, Release 1.4.0

3.1.4 Rotobot Compatibility Table

Rotobot mac mac windows windows linux glibc linux glibc linux glibc Open FX 10.13+ 10.13.6 10 x64 10 x64 2.12+ 2.12+ cuda 2.12+ cuda Plugin cpu cuda cpu cuda cpu 9.2.148 10.0.130 1.3.5 10.0.130 9.2.148 cudnn cudnn cudnn cudnn 7.5.0.56 7.4.2 7.6.5.32 7.5.0.56 NVIDIA 0 1 0 1 (RTX) 0 1 (RTX) 1 (RTX) Card Min Driver na 410.10 na 397.44 na 397.44 411.31 no Nuke 12 na na na na Test Passed Test Passed Test Passed Linux Nuke 12 Passed Passed na na na na na MacOS Nuke 12 na na Passed Test Passed na na na Windows Flame na na na na Test Passed Fail Test Passed 2020.3 Linux Flame Passed Passed na na na na na 2020.3 macOS Fusion na na na na Fail Fail No test Studio 16.1 Linux Fusion Passed Passed na na na na na Studio 16.1 macOS Fusion na na Passed Passed na na na Studio 16.1 Windows na na na na Passed Pass Fail DaVinci Resolve 16.1 Linux

na na Passed Passed na na na DaVinci Resolve 16.1 Win- dows

Passed 1 Passed na na na na na DaVinci Resolve CPU ? 16.1 ma- cOS

Natron na na na na Passed Passed Passed 2.3.14 Linux Natron na na Passed Passed na na na 2.3.14 Windows 3.1.Natron FunctionalPassed descriptionPassed na na na na na 11 2.3.14 macOS Rotobot OpenFX Plugin Documentation, Release 1.4.0

3.1.5 Details of memory requirements for models

Rotobot ships with five deep learning models packaged in three plugins. When using a CPU only version of the software 16Gb of available random access memory should be sufficient. When using the NVIDIA GPU for computation, the amount of memory required and allocated on the first use of any of the nodes will vary and it will use the most memory available on the card to account for as many models that may be used during a Rotobot session. From the the smallest model here are the memory requirements

Rotobot Model Required Free CUDA Memory on GPU Instance Segmentation Standard 4.0 Gb Segmentation Approximate 4.4 Gb Instance Segmentation Experimental 5.0 Gb Segmentation Standard 5.4 Gb Trimap 8.1 Gb

Memory allocation works as follows, once the first Rotobot node is computed, the Deep Neural network memory will be allocated and then recycled among the different models. If you have 6.5 Gb of GPU memory free when the first node is computed you will have all nodes GPU accelerated. The amount of memory free will need to be 300Mb greater than the size of the model to allow for fluctuations in memory allocation. This suggest for best performance a 8 Gb card with about 7 Gb of free memory will give best results with Rotobot.

3.1.6 Multi GPU Performance

Memory will be used on each available GPUs one at a time for each instance of Rotobot. Once a each GPU has a single Rotobot session running on each GPU a second will fit as many of the above models as memory is available. Application Note: On a AWS box with 4 Telsa T4 Turing cards each with 15109MiB of RAM, eight Rotobot models running the greatest model were able to be run concurrently without issue under Amazon Linux with Natron 2.3.4 as an OpenFX Host.

3.1.7 Limitations of Resolution

Instance Segmentation has very limited resolution but can look great when what it is detected is small in screen size. If the object is beyond 100 x 100 pixels in screen size, you will start to get blocky artifacts, this is by design as Instance Segmentation can detect a number of objects, and you can choose each object, whose bounding box intersects with a pixel coordinate. Ticking the experimental box will double the effective resolution, but beyond 150x150 pixels things will continue to look blocky. Segmentation is currently limited to 2049 x 2049 in screen resolution, as a result 1080p in portrait or landscape is roughly the upper limit which will give reasonable detection, but edges will only be detected to within a margin of +/- four pixels of an edge. By this logic, if you detect at 1080p and scale down to 360p you can get a near perfect edge. Similarly Rotobot Trimap has a resolution limit of 2048x2048, which will cover up to 1080p footage. The quality of the result will vary, but if the edge lies in the “grey” region of the trimap hint mask it will give a good estimate provided there is enough correlation between your image and what Rotobot was trained on.

12 Chapter 3. System Adminstration Docs Rotobot OpenFX Plugin Documentation, Release 1.4.0

3.1.8 Colour Space information

Colour science is a large topic. There are some excellent general notes on the topic here: VES Cinematic Color: http://github.com/jeremyselan/cinematiccolor/raw/master/ves/Cinematic_Color_VES.pdf It makes sense for pixel filters and similar used in Digital Content Creation packages such as a compositing package to work in Scene Linear colour space, such as ACEScg, where the relationship of the pixel value and the amount of light in a real world scene have a linear relationship. Display Space for an sRGB monitor is what Rotobot was trained on. This means that while a Scene Linear value for mid grey is approximately 0.2, a Display Space sRGB mid grey will have a value of approximately 0.5, half way between zero and one. In a scene linear scale to get a grey that is exposure value lighter, which you can get by doubling the shutter exposure time, you would expect to double the value from roughly 0.2 to roughly 0.4. But in a Display Space sRGB to make the same brightness increase you only need a value from 0.5 to 0.7, which is much less than doubling. If you cannot tell which colour space your data is in, if you can find a way to multiply the data by two a number of times, if it feel like it is getting brighter very quickly, chances you are in Display Space, if you double your data and it gets brighter gradually, chances are you are Scene Linear space, which is linear in its relationship to light. The simplest way to convert from one set of values to another is to use a Colour Transform node in your composting package and move from the colour space you are working in to the sRGB Display space. OCIO Color Transform from the OpenColor IO project has from and to spaces and it is a matter of knowing your input source colour space and your output target should be a display sRGB, where a mid grey is around 0.5. These are available in Nuke, Natron, Fusion and the Fusion Panel of Resolve and will depend on your OCIO configuration. Flame has very complete colour management. As a rule of thumb, if your image looks pale with the lookup table and looks natural without the lookup table, this is the expected input for a Display sRGB image.

3.1.9 Details of Environment variables

OFX_PLUGIN_PATH

Rotobot will only be loaded if the rotobot.ofx.bundle is in the OFX_PLUGIN_PATH or the default OpenFX locations

ROTOBOT_MODEL_DIR

Will specify the default location of the files ending with .pb which are large trained neural network files.

PATH

(Windows only) This will need to include the shared_libraries subfolder from your install directory typically

C:\Program Files\Kognat\shared_libraries

3.2 Systems Administration Guide

Installing Rotobot should be trivial! But to make sure it is here are some guides, where possible we have forced Rotobot installers to use the Administration account and install to standard places.

3.2. Systems Administration Guide 13 Rotobot OpenFX Plugin Documentation, Release 1.4.0

We are aware that many larger companies, who use Linux, use networked stores for the software locations which vary from studio to studio. For this reason we do NOT force Administration or super user rights for Linux installation. As a result if you use a standard user account rather than the administration user account some of the default function- ality of the install wont work. But you can follow the network install guide to get things working, if you do not have super user rights.

3.2.1 Installation

Download the installer with the following executable formats after the installer archive has been extracted Windows

.exe

Linux

.run

MacOS

(.app)

On Windows and macOS, you need to double click on the installers graphically for default behaviour, which will escalate permissions to the Administration user and install to the default location

3.2.1.1 Default Install Locations

Windows

C:\Program Files\Kognat

MacOS

/Applications/Kognat

Linux

/opt/Kognat

3.2.2 Components Installed

3.2.2.1 Deep Learning Models

There should be five deep learning models with the .pb file extension

3.2.2.2 Open FX Folder/Bundle

There should be a folder/bundle called rotobot.ofx.bundle this contains the executable binary and in the case of macOS and Linux all the support shared libraries

14 Chapter 3. System Adminstration Docs Rotobot OpenFX Plugin Documentation, Release 1.4.0

3.2.2.3 Shared Libraries

On macOS and Linux, the shared libraries ending in .so for Linux and .dylib for macOS are in the relative rpath to the rotobot.ofx binary On Windows the supporting shared libraries or .dll binaries are in a sub folder called shared_libraries this needs to be on the %PATH% system environment variable The installer will add this folder to the path

3.2.2.4 Main OpenFX Plugin

There is a file called rotobot.ofx which is the heart of the software, which is the pulled on by the OpenFX host program, your compositing package.

3.2.2.5 License Files

There is a subfolder with the following components used by Reprise License Manager the license management system see Licensing.

RLM License Utility macOS and Linux rlmutil

Windows rlmutil.exe

This executable can be used to identify your rlmhost id for signing a license by Kongat staff

RLM Server macOS and Linux rlm

Windows rlm.exe

These files are used to host the RLM Server

RLM Independent Software Vendor Settings file

All Operating Sytems kognat.set

This file allows the decryption of the license system with the settings for the Kognat as a independant software vendor using the RLM system.

3.2. Systems Administration Guide 15 Rotobot OpenFX Plugin Documentation, Release 1.4.0

3.2.3 Installation on a single computer

This is the default use of the installer using Administrator permissions.

3.2.3.1 Windows

1. Extract the zip folder 2. Within the installer folder double click the Install Builder executable .exe 3. If you see security warnings, the software signature process is incomplete, use your judgement to ignore warn- ings 4. Allow Administration rights for the installer 5. Follow the default choices. 6. Software install should be complete, after the window closes, it should take less than two minutes on a reason- ably fast disk.

3.2.3.2 MacOS

1. Extract the zip folder 2. Within the installer folder double click the Install Builder executable 3. If you see security warnings, the software signature process is incomplete, use your judgement to ignore warn- ings 4. Allow Administration rights for the installer 5. Follow the default choices. 6. Software install should be complete, after the window closes, it should take less than two minutes on a reason- ably fast disk.

3.2.3.3 Linux

1. Extract the zip folder 2. Within the installer folder double click the Install Builder executable ending in the file extension .sh 3. Allow Administration rights for the installer by using the GUI or follow the guide below. 4. In a GUI open a Command Prompt at the folder with the .sh file inside 5. Within this folder in the commnd prompt CLI execute sudo ./*.sh and give the password 6. Follow the default choices on the GUI. 7. Software install should be complete, after the window closes, it should take less than two minutes on a reason- ably fast disk.

3.2.4 Network installation

3.2.4.1 Linux

Looking at the Bit Rock Install Builder command line help we can see the following

16 Chapter 3. System Adminstration Docs Rotobot OpenFX Plugin Documentation, Release 1.4.0

Kognat Rotobot OpenFX Plugin X.Y.Z-cpu-only Usage:

--help Display the list of valid options

--version Display product information

--unattendedmodeui Unattended Mode UI Default: none Allowed: none minimal minimalWithDialogs

--optionfile Installation option file Default:

--debuglevel Debug information level of verbosity Default:2 Allowed:01234

--mode Installation mode Default: gtk Allowed: gtk xwindow text unattended

--debugtrace Debug filename Default:

--installer-language Language selection Default: en Allowed: sq ar es_AR az eu pt_BR bg ca

˓→hr cs da nl en et fi fr de el he hu id it ja kk ko lv lt no fa pl pt ro ru sr zh_CN

˓→sk sl es sv th zh_TW tr tk va vi cy

--prefix Installation Directory Default:/home/sam/Kognat

1. Create a folder where you would like to unpack the contents of the installer 2. in a bash shell create an environment variable to refer to this folder export DESTINATION=

3. change directories into the installer folder where you unzipped the .sh large installer file. 4. Put the following into a shell

./*.sh --mode unattended --prefix $DESTINATION

5. Then change to the cd $DESTINATION

6. Now you have Components Installed rather than being in Default Install Locations they are now in the folder you created which is your current directory. 7. To use the software from this folder, it is simply a matter of setting some runtime environment variables see Details of Environment variables. 8. Append to OFX_PLUGIN_PATH to include the folder containing rotobot.ofx.bundle 9. Create and set an environment variable in your runtime environment for ROTOBOT_MODEL_DIR to a fast disk which has a folder containing the files with the .pb extension

3.2. Systems Administration Guide 17 Rotobot OpenFX Plugin Documentation, Release 1.4.0

10. Maybe for a quick test the following will work for a bash shell export OFX_PLUGIN_PATH="${OFX_PLUGIN_PATH}:${PWD}" export ROTOBOT_MODEL_DIR="${PWD}"

11. You can now put this in a more permanent location or write tools to automate this process for network installa- tions 12. A good standard runtime environment can be found here: https://github.com/nerdvegas/rez/blob/master/ README.md

3.2.4.2 Rez example file user@mtl-rmw001l rotobot $ cat package.py # pylint: disable=invalid-name name = 'rotobot' version = '1.3.5' authors = ['Kognat'] description = 'AI driven rough rotoscoping OFX plugin.' requires = ['nuke-10+']

# Requirements used during the build process only. # Here "rdo_package_utils" is our library used to build packages. private_build_requires = ['rdo_package_utils'] uuid = ''

# This tells to rez how to build the package. build_command = 'python {root}/build.py' def commands(): """Commands that will be ran at the execution of rez-env.""" import os env = locals()['env'] # silence linters pluginLocation = os.path.join('{root}', 'resources', 'linux', 'nuke') env.OFX_PLUGIN_PATH.append(pluginLocation) env.ROTOBOT_MODEL_DIR.append(pluginLocation) env.kognat_LICENSE.append('8053@licsrv01')

3.2.5 Reporting a fault

3.2.6 Requesting a feature

18 Chapter 3. System Adminstration Docs CHAPTER 4

Choosing an Installer for Rotobot

Rotobot exists for three 64 bit operating systems: • macOS 64 bit (10.13+ and 10.13 for CUDA support) • Linux 64 bit (glibc 2.12 and above) • Windows 64 bit (10) You can narrow your search by looking at the installers for your operating system only. If you have no NVIDIA hardware, then you have one choice which is the CPU only version for your operating system. If you do have NVIDIA hardware, you initially are limited by your driver version you have installed, we do not recommend updating hardware drivers, from what is recommended by your hardware vendor and software vendor of your digital content creation package.

CUDA VERSION Linux Kernel Driver Windows Hardware Driver macOS CUDA Driver CUDA 10.0 (10.0.130) >= 410.48 >= 411.31 410.130 (macOS: 10.13.x) CUDA 9.2 (9.2.148 upd 1) >= 396.37 >= 398.26 CUDA 9.1 (9.1.85) >= 390.46 >= 391.29 CUDA 9.0 (9.0.76) >= 384.81 >= 385.54

4.1 Install packages Guidance

• Blackmagic Design’s products (Standalone Fusion Studio and DaVinci Resolve with the Fusion Panel) that are current version (16.0) need CUDA 9.2 for all operating systems. • Autodesk’s Flame needs CUDA 10.0 if using NVIDIA. • Foundry’s Nuke can work with CUDA 9.0, CUDA 9.1 CUDA 9.2 and CUDA 10.0 • Turing Chipset cards RTX based series need CUDA 9.2 or CUDA 10.0 to support acceleration. • CPU versions work with all applications and they are perfect for a CPU only renderfarm

19 Rotobot OpenFX Plugin Documentation, Release 1.4.0

See Rotobot Compatibility Table documents for more details:

20 Chapter 4. Choosing an Installer for Rotobot CHAPTER 5

Licensing

Kognat makes use of industry standard licensing system, Reprise License Manager (RLM) for your convience. This software allows for reliable and fair license tokens that can be used for both Node Locked and Floating License arrangements. A single license allows multiple computations on a single machine with the license checked out. A Node Locked license may only be used on the single machine for which the license has been signed. Floating licenses may be used by one host per license but allows for that host to compute a number of Rotobot nodes concurrently. The more licenses purchased the more machines that can participate in computation concurrently, to make the scaling of cost linear. Getting familiar with the entire Reprise License Management System may be of benefit to you if you are in the business of administering licenses, and a current link to a Portable Document Format file of the Administrator’s guide can be found here: http://www.reprisesoftware.com/RLM_License_Administration.pdf Currently Kognat is supporting the following version the RLM software v12.3 BL3

The independant software vendor (ISV) string is kognat

Meaning that the environment variable in question is kognat_LICENSE

(Note the letter S in LICENSE) There are two use cases for setting this environment variable

21 Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.1 Node locked license with a license file

If you purchase a node locked license, there is no need to run the license server. It is the systems administrator’s responsibility to set the following Environment Variable This may be assisted by an installer binary or script on your operating system kognat_LICENSE

The Environment Variable’s value will be set to the location of the license file for instance

C:\Program Files\Kognat\kognat.lic

This license will be signed to your own computer’s identifier and is not transferable.

5.2 Floating license with a server executable using license file and the clients pointing to server

If you purchase a floating license, you will need to host an RLM executable on an accessible server. The clients to this server will know of its location on the network via a unique qualified domain name or internet protocol numeric address. In addition the port number of the server will also need to be set on the server and subscribed to by the client.

5.2.1 Server

On the server at the minimum the following are required 1. An RLM executable for the operating system of the server 2. The Kognat .set file for the public key 3. A valid license file, keyed to your server’s identifier and it not transferable Executing the RLM binary will host a service on your network that your client’s can subscribe to this service by way of the environment variable detailed below

5.2.2 Client

Client Environment variable name kognat_LICENSE

Client variable value template

@

For example

[email protected]

22 Chapter 5. Licensing Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.3 Requesting a trial license

Kognat is happy to provide a time limited trial for indviduals, companies and other institutions. The trial license will remove the watermark which can be distracting while asessing if Rotobot OpenFX Plugin from Kognat meets your requiremnts. To prevent from users from exploting an automated system, we ask that all trials arrangements take place either by the contact form or via email. This also allows Kognat staff to get feedback which will allow the product to better meet your use case. The contact form can be found here: https://kognat.com/contact/

5.3.1 How to find a hostid to sign a trial license

On the installation of the free download, current versions will include an exectable which is the Reprise License Management Utility Tool Windows

C:\Program Files\Kognat\licensing\rlmutil.exe macOS

/Applications/Kognat/licensing/rlmutil

Linux

/opt/Kognat/licensing/rlmutil

This software is a command line application, which seems like an ancient way of interfacing with a computer, but it works well. To run the command line interface from your operating System follow the guides below

5.3.2 How to find your rlmhostid on Windows:

1. Press Windows+X to open the Power Users menu, and then click “Command Prompt” or “Command Prompt (Admin).” 2. Type the following command cd"C:\Program Files\Kognat\licensing"

3. Hit enter 4. Type the following command rlmutil rlmhostid-q ether

5. Hit enter 6. The output of this command can be copied by highlighting and hitting Ctrl-C and then Ctrl-V into an email for Kognat Staff, eg:

5.3. Requesting a trial license 23 Rotobot OpenFX Plugin Documentation, Release 1.4.0

C:\Program Files\Kognat\licensing>rlmutil rlmhostid-q ether 90b11ce77d93 005056c00099 005056c07208

5.3.3 How to find your rlmhostid on macOS:

1. Open the Spotlight magnifying glass icon on the top left of your computer 2. Type “Terminal” into the Spotlight Search text field 3. Terminal Application will launch 4. Type the following command into the Terminal window to change directories cd/Application/Kognat/licensing/

5. Hit enter 6. type the following command

./rlmutil rlmhostid-q ether

7. Hit enter 8. The result should be someting with one of more numbers macname:licensing$ ./rlmutil rlmhostid -q ether 90b11ce77d93 005056c00099 005056c07208

9. With your mouse highlight the text in the Terminal window and hit Command-C to copy and Command-V to paste into an email for Kognat Staff

5.3.4 How to find your rlmhostid on Linux:

1. Right click on your desktop to open a command line interface “Open in Command Prompt. . . ” 2. Command Line Application will launch 3. Type the following command into the Terminal window to change directories cd/opt/Kognat/licensing/

4. Hit enter 5. type the following command

./rlmutil rlmhostid-q ether

6. Hit enter 7. The result should be someting with one of more numbers linuxname$ ./rlmutil rlmhostid -q ether 90b11ce77d93

8. With your mouse highlight the text in the Terminal window and hit Ctrl-Shift-C to copy and Command-V to paste into an email for Kognat Staff

24 Chapter 5. Licensing Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.4 Node Locked license installation

Installing a node locked license is simple there are three parts 1. Store the license file on disk 2. Create a new environment variable kognat_LICENSE which has a value of the above disk location 3. Test the environmemnt variable is used in you composting package It is possible Kognat Staff will provide you with an automated way of installing the license, so you will just need to test the license is working correctly after using the installer or installer script.

5.4.1 Installing a node locked license on Windows manually

1. Download the the .zip archive containing the .lic file from email 2. Copy with Administration permissions the .lic file to the following location

C:\Program Files\Kognat\kognat.lic

3. Open the Program “Add / Remove Environment Variables” 4. Click the button “Add” 5. Type the name for the new environment variable as follows

kognat_LICENSE

6. Once the environment variable is created set its value by “Browse for file” 7. The location will be where you saved the .lic file earlier

C:\Program Files\Kognat\kognat.lic

8. Close your compositing package which has the watermarked image 9. Open the compositing package, clear all caches 10. The watermark should be removed if the license is valid 11. If the watermark is not removed, double check your steps and contact Kognat staff

5.4.2 Installing a node locked license on macOS

1. Follow the download instructions from Kognat staff 2. The installer will include an executable .command file which will automate the install for you 3. Some anti virus software will give warnings about the script’s contents in the section below you can do the steps by hand if you prefer 4. Expand the .zip archive 5. Double click the kognat.command file contained within 6. Repeat for each user that wishes to use the software Below we explain the action of the kognat.command below is the contents of one such file

5.4. Node Locked license installation 25 Rotobot OpenFX Plugin Documentation, Release 1.4.0

#!/usr/bin/env bash echo "Installing Kognat License" echo '

LICENSE kognat rotobotsegmentation 20.0 2020-03-05 uncounted hostid=003ee1c31ba9 platforms="x64_m x64_l x64_w" _ck=41274f2afb sig="60P0452E90CPXMRK3HN10VYTMFP8T9KSWJSG2A022GY5NRY60HRW7UXSHCENDM1 CD7TY7XPA4V" LICENSE kognat rotobotinstancesegmentation 20.0 2020-03-05 uncounted hostid=003ee1c31ba9 platforms="x64_m x64_l x64_w" _ck=96274fce3a sig="60PG451QF9NBFFESGDUU3AVY2EVCUE26CH087DR22M0D2QVAUJPYSK7C49BEHXB DWG843K74024G" LICENSE kognat rotobottrimap 20.0 2020-03-05 uncounted hostid=003ee1c31ba9 platforms="x64_m x64_l x64_w" _ck=c0274f8705 sig="60Q04580Q7VT4BW9BF4V8NMASFF30Q2PCE5X2W8708AG1NG31AJA3SQHA82GPXG H79MBE2DCCXB3T"

'>~/kognat.lic mkdir -p ${HOME}/Library/LaunchAgents 2> /dev/null rm ${HOME}/Library/LauchAgents/kognat.plist 2> /dev/null echo '

˓→PropertyList-1.0.dtd">

Label kognat.startup ProgramArguments sh -c launchctl setenv kognat_LICENSE ${HOME}/kognat.lic

RunAtLoad ' > ${HOME}/Library/LaunchAgents/kognat.plist launchctl start ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl load ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl start ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl stop ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl unload ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl load ~/Library/LaunchAgents/kognat.plist 2> /dev/null launchctl start ~/Library/LaunchAgents/kognat.plist 2> /dev/null echo "Kognat License installed" echo "Added file ${HOME}/kognat.lic" echo "Added file ${HOME}/Library/LaunchAgents/kognat.plist" echo "Kognat OpenFX Plugin now setup for for ${USER}" cat ${HOME}/kognat.lic

26 Chapter 5. Licensing Rotobot OpenFX Plugin Documentation, Release 1.4.0

So what does it do? 1. Create a file called kognat.lic in the users home directory with the license information 2. Creates this folder $HOME/Library/LaunchAgents and if it doesn’t exist 3. Creates a file called kognat.plist in the users $HOME/Library/LaunchAgents 4. The kognat.plist file is run when a program loads 5. The environment variable kognat_LICENSE is set to $HOME/kognat.lic by $HOME/Library/ LaunchAgents/kognat.plist when a program launches 6. running a number of launchctl commands ensurve the service created by the kognat.plist file are up to date You are welcome to find another way to ensure that 1. kognat_LICENSE is set and has the value of the folder and filename of kognat.lic 2. kognat.lic contains a valid locatiopn on disk ideally $HOME/kognat.lic 3. kognat.lic contains a valid RLM node locked license 4. This is all done in the runtime environment where the macOS program that is using the OpenFX Plugin

5.4.3 Installing a node locked license on Linux

1. Download the .zip archive as instructed by Kognat staff 2. Run the installer with super user permissions where is the name of the extracted installer sudo~/Downloads// *.sh

3. Follow the GUI 4. Run your application to check the install is working 5. Reboot if needed What does the Linux installer do? 1. Copies a license to /opt/Kognat/kognat.lic 2. Adds two files to /etc/profile.d 3. The files are as follows

/etc/profile.d/kognat.csh /etc/profile.d/kognat.sh

4. The contents of the files simply set the environment variable kognat_LICENSE to /opt/Kognat/ kognat.lic

$linux> cat /etc/profile.d/kognat.csh #!/usr/bin/env csh setenv kognat_LICENSE /opt/Kognat/kognat.lic

$linux> cat /etc/profile.d/kognat.sh #!/usr/bin/env sh export kognat_LICENSE=/opt/Kognat/kognat.lic

5.4. Node Locked license installation 27 Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.5 Floating license installation

There are two parts to a floating license system 1. RLM Server running of the License Server Host 2. Environment variable set on the client to find the RLM server The RLM Server is a command line service, but is accessible via a Web based GUI and log file. It needs a kognat.set file and a .lic text license file and the rlm executable Clients can be configured in a similar way to node locked license, but rather than pointing to a file, they point to a port and host on the network. Clients can see the server via kognat_LICENSE set to @ Where the server is running on TCP port on a machine with unique qualified domain name UQDN of for example [email protected] The port is determined in the license and can be adjusted without breaking the encyption.

5.5.1 Running the License Server

The rlm command is:

% rlm [-c license_file] [-dlog [+]logfile] [-nows] [-ws port] [-x [rlmdown|rlmremove]] [-install_service] [-service_name sname] [-isv_startup_delay seconds]

The -c license_file option specifies which license file to use. This option overrides the setting of the RLM_LICENSE environment variable. The license_file parameter can be a directory containing license files, all of which will be processed. The -dlog logfile specifies the pathname for the server debug log. If logfile is preceded by the + character, the logfile will be appended, otherwise it is overwritten. The -nows and -ws port options control the operation of the embedded Web Server. The -nows option instructs the rlm server to not start the embedded web server. The -ws port option instructs the rlm server to use port as the port number for the web server. The -x [rlmdown | rlmremove] option controls whether the rlmdown and/or rlmremove commands will be processed by the server. Specifying only -x will disable both commands. Specifying either command name after the -x will disable just that command. These options can appear in any order on the command line. Note that if the rlm server cannot bind the web server port (5054 by default), it will exit.

5.5.2 Installing a RLM service on Windows

Download the Windows License Server Software: https://bit.ly/windows-rlm-kognat-12-3 Running the RLM Server as a Service on Windows

28 Chapter 5. Licensing Rotobot OpenFX Plugin Documentation, Release 1.4.0

On servers, you may want to install and run the rlm server as a Windows service process. A service process can start automatically at boot time and remain running as long as the system is up, regardless of user logins and logouts. You can install RLM as a service either in the RLM web interface or in a command window. Once installed as a service, it remains installed until it is explicitly deleted as a service. Installing RLM as a service does not start RLM; services are started via the Windows Services control panel, and at boot time. To install using the web interface, select Manage Windows Service from the main menu on the left. You will get a form with 3 data fields: service name logfile name optional command-line arguments

All 3 fields will be filled in with default values. You can just select “Install Service”, and the “rlm” service will be installed for you. By default, the logfile is put in the directory with the rlm.exe binary, and it is named rlm.log. Also, by default, rlm will search for all license files in this directory. If you select Remove Service, the service name specified in the form will be removed. Note If the instance of rlm which you are running is actually running as a service, you will not be able to Remove the Service (since it is running). To remove the service, you will have to stop the service, and then either use the service control panel in Windows, or run rlm in a command window and use the Remove Service option in the web interface.* Optionally, you can install RLM as a service in a command window. To do this, use the rlm program itself (in a command window), with special arguments: rlm-install_service-dlog [+]logfile [-service_name sname] where: logfile is the pathname for the server debug log. This parameter is required. If preceded by the ‘+’ character, the logfile will be appended, rather than created. sname is an optional name for the installed service. If not specified, sname defaults to “rlm”. If sname contains embedded whitespace, it must be enclosed in double quotes. are any other command line arguments to be passed to rlm when it is started. Example: rlm-install_service-service_name rlm-xyz-dlog c:\logs\server.log-c

˓→c:\licenses\xyz.lic

This installs rlm as a service under the name “rlm-xyz”. When started via the Services control panel or at boot time, rlm will be passed the “-c c:licensesxyz.lic” args, and it will write it’s debuglog information to the file c:logsserver.log Installed RLM services are also deleted with the rlm program. Services must be stopped via the service control panel before they can be deleted. Note that deleting a service deletes it from the Windows service database; it does not delete the rlm executable or associated license file(s): rlm-delete_service [-service_name sname] where: sname is an optional name for the installed service. If not specified, service_name defaults to “rlm”. If service_name contains embedded whitespace, it must be enclosed in double quotes.

5.5. Floating license installation 29 Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.5.3 Running the RLM Server as a Service on Linux

Download the RLM executatble for Linux https://bit.ly/linux-rlm-kognat-12-3 On most Unix systems, system services are started at boot time, usually via startup scripts located in /etc/rc.. For example, the script could be located in /etc/init.d/rlm, with a link to /etc/rc5.d/S98rlm. Note that you must install this startup script as root. The startup script should su to a different user so that the rlm servers are not running as root.

5.5.4 Running the RLM Server as a Service on macOS

Download the RLM for macOS https://bit.ly/mac-osx-rlm-kognat-12-3 On Mac systems, the server can be started by placing a script in /Library/LaunchDaemons . The following is an example of a script which would start rlm at boot time on Mac systems. Note that this script must be placed in the /Library/LaunchDaemons directory, and it must have an extension of .plist. You should change ABSOLUTE_PATH_TO_RLM to the path to the rlm server binary. You can add additional Pro- gramArguments as needed:

˓→PropertyList-1.0.dtd"> Label com.kognat-licensing.rlm ProgramArguments ABSOLUTE_PATH_TO_RLM RunAtLoad

5.6 RLM web server

As instructed by the -ws port_number directive you can access the Reprise Web GUI from any browser to the pattern as follows http://:

As seen below with kognat-build.kognat.localdomain as an example hostname and 5090 as the port number

30 Chapter 5. Licensing Rotobot OpenFX Plugin Documentation, Release 1.4.0

5.7 Annual License renewal

Licenses are not automatically renewed at this stage in time. You will need to purchase again from the Kognat store, a reminder may be sent.

5.7. Annual License renewal 31 Rotobot OpenFX Plugin Documentation, Release 1.4.0

32 Chapter 5. Licensing CHAPTER 6

Indices and tables

• genindex • modindex • search

33