The Master Controller is a node that is capable of generating custom on-screen manipulators, or widgets, which can be programmed to affect one or several elements in a scene when manipulated. They are created and configured entirely through the scripting interface of Harmony. This allows you to create controls that can manipulate any amount of elements in your scene based on specific algorithms, making their capabilities virtually infinite.
The end goal of master controllers is to give studios the ability to create tools that make it easy for scene planners and animators to manipulate rigs and objects in the way they were designed to be manipulated. For example, you can create a slider widget that rotates your character's rig in 360°, or a point widget that can be dragged around, which determines the direction your character's head is facing. For complex characters with many deformations, this removes the need for the animator to create poses manually, which can be tedious and can lead to going off-model, or to copy and paste poses from templates.
There are two approaches to creating master controllers:
- Wizard: Wizards are user friendly dialogs that allow you to generate master controller widgets by feeding them character poses and configuring how the widget will apply the different poses to the character.
- Scripting: This method allows you to create a master controller of any kind for any purpose whatsoever. However, since it requires using the Harmony scripting interface, it is recommended to only attempt this if you have solid bases in scripting.
Several types of Master Controller widgets can be created:
- The Slider widget creates a slider that the user can slide. When manipulated, it generates a value between its minimum and maximum values which can be used to manipulate elements in the scene.
The 2D Point widget creates a point that the user can freely drag around the stage. When manipulated, it provides its position, which can be used to position elements in the scene.
The Button widget creates a button that can be scripted to fire an action when clicked on.
The Checkbox widget creates a togglable button that can be scripted to do something different depending on whether it's toggled on or off, like a checkbox in an application.
- The 2D Line Display widget displays a line going between two 2D Point widgets to make a "bone" type manipulator. It is not manipulable by itself, but the points to which it is linked are.
- The 3D Rotation widget creates a 3D sphere that the user can rotate in all directions. When manipulated, it provides an object with a rotation angle for each axis.
- The X, Y and Z Rotation widgets create a circle that can be rotated around the stage around its axis. When manipulated, it provides a rotation angle for its respective axis.
- The X, Y and Z Translation widgets create an arrow that can be dragged along its axis. When manipulated, it provides an offset for its respective axis.
The Label widget creates text label. It cannot be interacted with, but it can be combined with another widget to identify it, or to give any kind of directions to the animator.
- The Custom widget can be composed of one or multiple elements from other widget types, and the behavior of which when manipulated can be customized.