LookFX uses Golaem Crowd for Warm Bodies Boneys

Look Effects contributed to all VFX effects for the recently released zombie movie Warm Bodies. They had to create a post apocalyptical world filled with zombies and their arch enemies: the Boneys. Two species which like to gather as hords.

Golaem Crowd fills up Will I Am's concerts for Fullframe Filmes

Watch Will I am perform for huge CG crowds generated using Golaem Crowd.

Cowabunga! Mikros populates TMNT : Mutant Mayhem with Golaem crowds!

Benjamin Dupin, Crowd Supervisor at Mikros Animation Paris tell us about how he and his team developped a powerful pipeline around Golaem for the acclaimed TMNT: Mutant Mayhem movie. He goes into details about how they were able to fit with the unique graphic style, and insuflate life to New York city.

Setup At First Launch

Loading The Golaem Deep Plugin in Maya

At the first launch, a few setup steps are required to configure maya and the Golaem License.

If you are not confortable with editing environment variables, either see this with you sys admin, or check the relative section Environment Variables

First, you will need to add the Golaem Deep root folder, where the .mod file can be found, to MAYA_MODULE_PATH environment variable. 

You will also need to set the golaem_LICENSE or RLM_LICENSE variable to point to your golaem license folder.

Once this has been done, you should be able to find Golaem Deep, displayed as glmDeep.mll or glmDeep.so depending on your OS, in the Plug-in Manager (found in windows-settings/preferences submenu).

Plugin Manager displaying the Deep Deformer Plugin

Once loading the plugin, you should see a line dumping the current Golaem Deep version :

Deep Deformer version dumped to outliner

 

 

With maya.env File

The Maya.env file enable to specifiy some environment variables to be set when Maya is launched.

You can learn more where to find it and how to modify it in Maya documentation: Setting environment variables using Maya.env

For example if you did not install the package locally on each render nodes, you need to specify the Maya Module Path in this file.

MAYA_MODULE_PATH=C:\Golaem\GolaemDeep-9.x-Maya202x

 

While the Maya.env method may seem simple, it has a huge drawback. 

As stated in the Autodesk documentation: "The variables set in the operating system take priority over any settings in the Maya.env file".

Which means that if one variable is already defined in the system, even if you define it in the Maya.env by replacing or appending something to its value, it will not be taken into account (except for some particular variables like MAYA_MODULE_PATH)... You should then be very cautious when using the Maya.env method and check that your environment variables values are really taken into account.

 

Through the Operating System

Windows

Control Panel

It is convenient to setup one computer this way, but very cumbersome if you deal with a great number of computers.

Configure operating system environment by opening Control Panel > System window, then going to the Advanced or Advanced System Settings tab and clicking the Environment Variables button.

You can either create a user variable (active only when the current user is logged on), or a system variable (always active on this computer).
For a render farm, it is recommended to use system variables because render farm software sometime launch render using a different user account, or as a service (with the system account). But note that when using a System Variable, you will need to restart the computer so that it is taken into account.
When setting a variable on a user computer, it is enough to set it as User Variable, and you will only need to restart Maya so that it is taken into account.

How to choose between User and System variable on Windows?

If you are a USER and probably want to setup a node-locked license on your computer, choose to create a new USER variable. This way you will not have to restart your computer, but juste relaunch Maya again to take the new variable into account. If you are a SYSADMIN trying to setup variable at the computer level, you need to create a SYSTEM variable (in our example MAYA_MODULE_PATH for the plugin to be found automatically, but your variable may be called differently depending on what you are trying to do). For this variable to be taken into account, you need to restart the computer. 

You can check the begining of this video, about Golaem Crowd, to see how to do that in practice, and maybe even create your own launcher script to be able to customize the way you launch your DCC software with Golaem

 

Group Policy

If you use Group Policy Objects (GPO) to administer your computers, you can simply add Environment Variable Items. The Environment Variables will then be automatically set on all applicable computers.

You can either create a user variable (active only when the current user is logged on), or a system variable (always active on this computer).
It is recommended to use system variables because render farm software sometime launch render using a different user account, or as a service (with the system account).

See Microsoft Help for more details: Configure an Environment Variable Item

NB: as all Active Directory action, it is not immediate, and you have to wait until Active Directory deploy the variable

Linux

Environment variables should be exported in one of your logon (~/.bashrc or ~/.bash_profile/ ...) or init script (depends on your distribution)

Here is an example how to set these variables

Environment Variables List

In order to load Deep plugin in maya, you will only need to set MAYA_MODULE_PATH variable. However, when deploying Golaem Deep as a Maya module, or on the Render Farm, you may need to set some environment variables.

Notice that some of these variables may already be defined by system or custom scripts. It is then recommended not to replace the existing value, but append the Golaem related value to the existing value, using the appropriate separator (a ";" separator on Windows or a ":" separator on Linux).

Licence Variables

golaem_LICENSE
            or
RLM_LICENSE

Contains the full path to the Golaem license file to use ( (or license server information using the port@hostname format).

Any of these variables can be used (only one is needed), but it maybe more convenient to use the golaem_LICENSE variable to avoid issues with other software using RLM.

Maya Module Variable

When using advanced deployment, it may be needed to set this variable for Maya to find and load the Golaem module.

MAYA_MODULE_PATH

Contains the path to the directory where the glmDeep.mod file is located (e.g. the Golaem installation directory when using standard installation C:\Golaem\GolaemDeep-9.X-Maya202X).

Third Party Variables

These variables are mandatory for Golaem to work correctly and their values should be checked in case a problem arise. However, they should never need to be set manually, as they are set by the Golaem Maya Module file.

They are here for your reference when investigating a problem, for people wanting to control them in their own scripts or render with stand-alone versions of their renderer.

Generic Variables

The following variables are mandatory in order to successfully load the Golaem plugin and are required to render with any of the rendering engine listed below:

PATH
(Windows only)

Contains the path to the directory where the dependant binaries required by Golaem plugin are located (e.g. the bin/ folder in Golaem installation directory when using standard installation).

LD_LIBRARY_PATH
(Linux only)

Contains the path to the directory where the dependant libraries required by Golaem plugin are located (e.g. the lib/ folder in Golaem installation directory when using standard installation).

This variable may be required only on some specific Linux distributions.

Workflow

Deep Deformer Goal

Golaem Deep Deformer aims to replace some rig parts where the non linear deformations are costly. In such case, our deformer using deep learning technics, can learn, then replace, all the deformations, based on the inputs you will select, usually your macro rig inputs (joints, manipulators in local space, weights, etc.).
 

Without Golaem Deep Deformer
Without Golaem Deep Deformer

 

 


With Golaem Deep Deformer

 

The Deep Deformer can handle several meshes in the same model, to avoid mutiplying the models for simple assets made of numerous meshes.

Deep Deformer can also be used with the Golaem Crowd plugin, to overcome some Crowd blendshapes limitations, and bring all the RIG deformations to screen even for crowd characters.

How it works (without the math)

The deformer uses several deep learning models.

One model is in charge of learning the deformation of each vertex based on its neighbours. We call it the Differential Model. It is a heavy model that is usually trained and evaluated on GPU to save procesing time. However for really small models, or if CUDA is not available, CPU training and evaluation could be an option.

In order to work, this model needs some mesh space vertices positions as reference. Thoses are called Anchors, and by default they are only picked randomly in the vertex indices range. For each Anchor, a very small model, called subspace model, is trained to predict the absolute deformation (in mesh space) of this vertex according to rig inputs. Those models are usually trained and evaluated (infered) on CPU as they are very light.

After some math, everything is put back together at inference time, after evaluating each model.

Framework typical sequence

As each studio may have different usage, user is responsible of the model configuration and training. This is done is several steps :

  • Configuration of the target mesh, and creation of its "skinCluster only", linearly deformed, mesh.
  • Configuration of required RIG Inputs (joints, manipulator matrices, weights), 
  • Extraction of samples, made of n frames of (RIG inputs + vertices of target mesh + vertices of linear mesh)
  • Training of the model
  • Deployment of the model as a deformer on top of the linear mesh.

Pages