Mocha® 2022.5 User Guide

Table of Contents

Introduction

Welcome to Mocha, tracking and rotoscoping tools that make your tracking and rotoscoping work much easier.

Our tools are based on our proprietary Planar Tracking technology, an awesome approach to 2D tracking which will help you to generate accurate corner-pins and track and transform your roto splines in a powerful way.

The Art of Tracking

Tracking and rotoscoping are part of almost any visual effects project. For 2D tracking, point trackers are most commonly used, but to get good point tracks requires a mix of experience and luck. You often have to "prime" a clip for optimum tracking using color correctors and other image manipulations. If the point being tracked exits frame, you get into offset tracking, which presents its own set of challenges. If it all fails, you are into hand tracking, which is time consuming and very hard to get accurate.

Mocha is a 2D tracker that requires less experience and luck to be successful with, does not require the image to be primed and is less likely to require a lot of tricks or hand tracking on difficult shots.

There Are No Point Trackers

In Mocha splines are used for both tracking and rotoscoping. This is a different method from standard 1-point or multi-point tracking tools.

Traditional tracking tools require that you locate "points" that remain consistent throughout the entire shot in order to track movement. This is itself a difficult task, especially when tracking a shot that was not originally designed to be tracked. If you wish to also track rotation, perspective and shear you need even more clear and consistent points to track.

Traditional roto methodology would have you outline a shape with the minimum number of points necessary then either manually move the control points or track the shape with a point tracker to "get it close". Even when using multi-point trackers to impart rotation and scale to the roto spline, the results are often unusable if there is any perspective change during the shot.

Instead, Boris FX’s Planar Tracker tracks an object’s translation, rotation and scaling data based on the movement of a user-defined plane.
A plane is any flat surface having only two dimensions, such as a table top, a wall, or a television screen. Planes provide much more detail to the computer about an object’s translation, rotation and scaling than is possible with point-based tracking tools. Even as an object leaves and enters a frame, there is usually enough information for the Planar Tracker to maintain a solid track of the object.
When you work with the Mocha tools, you will need to look for planes in the clip. More specifically, you will need to look for planes that coincide with movements you want to track. If someone is waving goodbye, you can break their arm into two planes - the upper and lower limbs. Although not all of the points on the arm sections actually lie on the same two-dimensional surface, the apparent parallax will be minimal.

With the addition of PowerMesh in Mocha Pro, subplanar tracking is also possible, tracking warp and bending of objects that standard planar tracking would struggle to do alone.


Most requested feature of all time

  • Zoom scrolling: You can now mouse scroll to zoom into the canvas.

New Lens Module features

  • Spline-based Calibration: Calibrate lens using Mocha open splines

  • Import Calibration: Import previously saved Mocha Lens data

  • Calibration reset: You can now easily reset the lens calibration

New Surface Controls

  • Right-click Ratios: You can now set the surface ratio by right-clicking the surface

  • Right-click Align and Reset: You can align the surface or reset it to the spline.

  • Right-click view controls: You can turn off the insert and surface view

Architecture updates

  • Apple silicon GStreamer Support: You can now import and export video with Apple M1 chipsets under Apple silicon supported systems.

Exports

  • After Effects Export rename: "Mocha shape data for AE" is now called "Adobe After Effects Mask Data" to make it consistent with the other host exports

Tracking improvements

  • Preprocessing: Treat your clip before tracking to get optimal details in difficult shots. Pre-process gamma, contrast, blur etc. In Beta 2, preprocessing has been moved to a dockable panel to reduce parameters in the track module.

  • Non-destructive gamma view: Adjust both brightness and gamma in the view controls without affecting the actual clip

Minor Updates

  • Foreground switching: The Mocha UI will now move to the foreground when you switch back to After Effects

  • Python access to mesh vertex positions: You can now access mesh vertex positions in normalised space.

  • Custom frame rate setting: You can now set any frame rate you like by clicking on the dropdown and editing the value.

  • Headless Linux Improvements: Automatically set correct display context for external Mocha Python commands on Linux

  • Crash Reporting: We now generate anonymous crash and error reports to make it easier to solve support problems.

  • RED support: RED codec support has been updated to 8.2.1

  • PowerMesh Interface: We now only enable mesh tracking parameters when a selected layer has a mesh


Interface Overview

To quickly get familiar with Mocha before you dive into the rest of the manual, here is a breakdown of the interface and its controls.

Note Some parts of the Interface Overview uses the Mocha Pro Interface. Versions of the Mocha Pro Plugin, Mocha HitFilm, Mocha for After Effects etc. may differ in presentation, but their tools perform the same function

Layouts

Mocha layouts are modifiable, allowing you to hide or reveal many parts of the interface.

layouts dropdown

These layouts are clustered into 4 default types you can build from.

Essentials Layout

Mocha begins in the Essentials layout, which provides a simplified interface for basic tracking and roto.

main overview essentials

The basic toolbar provides a minimal set of tools without cluttering the interface.

The Essentials panel on the left side of the window combines everything you need for a basic track.

mochaae essentials panel

The Panel contains the following features (from top to bottom):

Track Motion Options

The 5 motion types you can track in:

  1. Translation

  2. Scale

  3. Rotation

  4. Shear (sometimes known as Skew)

  5. Perspective

Track Buttons

For tracking backwards, forwards and to stop the track

Link to Track

To attach a spline layer to an existing track, or detach it from a track entirely.
See Tracking Basics and Rotoscoping Basics for more information on the benefits of Link to Track.

Surface

These buttons control viewing and expanding the surface.
See Tracking Basics for how to use the surface effectively.

  • Show surface (tracking data): Reveals the blue surface that represents the tracking data.

  • Show grid: Reveals a useful grid for lining up the surface or monitoring for drift in a track.

  • Align surface: Expands the surface to fit the dimensions of the footage on the current frame.

Classic Layout

For Mocha veterans, the Classic layout is arranged like the original Mocha.

main overview

Use this mode if you are familiar with Mocha and want access to all the parameters and tools.

Roto Layout

Like the Essentials layout, this layout is optimized specifically for roto sessions where only the most necessary panels and tools are shown.

Big Picture Layout

If you want to reduce all clutter entirely, the Big Picture layout is very useful for previewing shots without any elements getting in the way.

Saving Custom Layouts

You can add or remove many parts of the Mocha interface, such as:

  • Timeline controls

  • Toolbars

  • View controls

  • Etc.

These can either be access by right clicking the area of the interface and choosing a GUI element to show or hide, or selecting from the View menu.

Any changes you make to a layout will not be saved unless you choose View | Layout | Save Current Layout.

For example if you like the Essentials layout, but would like the Advanced toolbar from the Classic layout:

  1. Choose "Essentials" from the layout drop-down

  2. Choose "Advanced Tools" from View | Toolbars

  3. Choose View | Layout | Save Current layout

This will now save the Essentials layout with the new toolbar.

Alternatively, you can save the layout as a new custom layout:

  1. Make changes to your existing layout

  2. Choose View | Layout | Save Current layout as…​

  3. Enter the new name in the Manage Custom Layouts dialog

You can add, order or remove layouts from the Manage Custom Layouts dialog in the same sub-menu.
Any new layout will automatically be assigned a Ctrl/CMD + Number shortcut based on the order of the layouts, up to 9.

If you have made changes to a saved layout want to revert back to the saved version, just choose View | Layout | Revert to saved.

If you want to revert back to the original default layout, just choose View | Layout | Revert to default.

The Advanced Toolbar

MainToolbar

At the very top of the interface you have the tools that form the brunt of your time inside Mocha.

FileSave 2x

Save Project: Save the project

ToolPointer 2x

Select: Selection tool for splines and points. Hold the button to choose between Marquee selection and Lasso selection.

ToolPointModeBoth 2x

Select Both: Selects both the Inner spline points and the edge points. Hold this button down to select further options (See below)

ToolPointModeInner 2x

Select Inner: Only selects the inner spline points

ToolPointModeEdge 2x

Select Edge: Only selects the outer edge points

ToolPointModeAny 2x

Select Auto: Automatically selects between Inner and Edge points

ToolPointerInsert 2x

Add Point: Tool to add points to the spline

ToolHand 2x

Pan: Used to pan the footage in the Viewer

ToolZoom 2x

Zoom: Used to zoom into footage in the viewer

ToolAddXSplineLayer 2x

Create X-Spline Layer: Draw a new X-Spline layer

ToolAddXSpline 2x

Add X-Spline to Layer: Draw an X-spline that is added to the current spline layer.

ToolAddBezierSplineLayer 2x

Create Bezier-Spline Layer: Draw a new B-Spline layer

ToolAddBezierSpline 2x

Add Bezier-Spline to Layer: Draw a B-spline that is added to the current spline layer.

MagneticShapeToolXSpline 2x

Create New Magnetic Layer: Draw a magnetic line that converts to an X-Spline.

MagneticShapeToolAddXSpline 2x

Add Magnetic Shape Selected to Layer: Add a new magnetic line that converts to an X-Spline in the existing layer.

FreehandShapeToolXSpline 2x

Create New Freehand Layer: Draw a freehand line that converts to an X-Spline.

FreehandShapeToolAddXSpline 2x

Add Freehand Shape Selected to Layer: Add a new freehand line that converts to an X-Spline in the existing layer.

ICON AreaBrushToolXSpline

Create Area Brush Layer: Paint on the canvas to generate an X-Spline.

ICON AreaBrushToolAddXSpline

Add Area Brush to Layer: Paint on the canvas to add an X-Spline to an existing layer.

RectShapeXSplineLayer 2x

Create Rectangle X-Spline Layer: Draw a new Rectangle X-Spline layer

RectShapeAddXSpline 2x

Add Rectangle X-Spline to Layer: Draw an Rectangle X-spline that is added to the current spline layer.

RectShapeBezierLayer 2x

Create Rectangle Bezier-Spline Layer: Draw a new Rectangle B-Spline layer

RectShapeBezier 2x

Add Rectangle Bezier-Spline to Layer: Draw a Rectangle B-spline that is added to the current spline layer.

CircleShapeXSpline 2x

Create Circle X-Spline Layer: Draw a new Rectangle X-Spline layer

CircleShapeAddXSpline 2x

Add Circle X-Spline to Layer: Draw an Rectangle X-spline that is added to the current spline layer.

CircleShapeBezier 2x

Create Circle Bezier-Spline Layer: Draw a new Rectangle B-Spline layer

CircleShapeAddBezier 2x

Add Circle Bezier-Spline to Layer: Draw a Rectangle B-spline that is added to the current spline layer.

ToolConstraint 2x

Attach Layer: Used to select a point and drag-lock it to another layer spline point. Useful for lining up individual splines.

ToolRotate 2x

Rotate: Rotate selection around the axis of the point you click in the viewer

ToolScale 2x

Scale: Scale Selection

ToolTranslate 2x

Move: Move selection

ToolEditMesh

EditMesh: Toggles layer into Edit Mesh Mode for editing mesh vertices.

ToolTransform 2x

Transform Tool: Toggles the transform bounding box for manipulating selections

ShowSurface 2x

Show Planar Surface: Toggles the planar surface view

ShowGrid 2x

Show Planar Grid: Toggles a grid relative to the planar surface view. You can adjust the number of grid lines under Viewer Preferences (See below)

AlignSurface 2x

Align Surface: Expands the layer surface to fit the dimensions of the footage at the current frame. All tracked data is made relative to this new alignment.

ToolAddVertex

Add Vertex: Adds a vertex to a selected edge when in Edit Mesh Mode.

Basic Toolbar

basictoolbar

In Essentials Mode, only a basic set of these tools is shown, to simplify the interface.

FileSave 2x

Save Project: Save the project

ToolPointer 2x

Select: Selection tool for splines and points. Hold the button to choose between Marquee selection and Lasso selection.

ToolPointerInsert 2x

Add Point: Tool to add points to the spline

ToolHand 2x

Pan: Used to pan the footage in the Viewer

ToolZoom 2x

Zoom: Used to zoom into footage in the viewer

ToolAddXSplineLayer 2x

Create X-Spline Layer: Draw a new X-Spline layer

ToolAddXSpline 2x

Add X-Spline to Layer: Draw an X-spline that is added to the current spline layer.

ToolAddBezierSplineLayer 2x

Create Bezier-Spline Layer: Draw a new B-Spline layer

ToolAddBezierSpline 2x

Add Bezier-Spline to Layer: Draw a B-spline that is added to the current spline layer.

MagneticShapeToolXSpline 2x

Create New Magnetic Layer: Draw a magnetic line that converts to an X-Spline.

MagneticShapeToolAddXSpline 2x

Add Magnetic Shape Selected to Layer: Add a new magnetic line that converts to an X-Spline in the existing layer.

FreehandShapeToolXSpline 2x

Create New Freehand Layer: Draw a freehand line that converts to an X-Spline.

FreehandShapeToolAddXSpline 2x

Add Freehand Shape Selected to Layer: Add a new freehand line that converts to an X-Spline in the existing layer.

ICON AreaBrushToolXSpline

Create Area Brush Layer: Paint on the canvas to generate an X-Spline.

ICON AreaBrushToolAddXSpline

Add Area Brush to Layer: Paint on the canvas to add an X-Spline to an existing layer.

RectShapeXSplineLayer 2x

Create Rectangle X-Spline Layer: Draw a new Rectangle X-Spline layer

RectShapeAddXSpline 2x

Add Rectangle X-Spline to Layer: Draw an Rectangle X-spline that is added to the current spline layer.

RectShapeBezierLayer 2x

Create Rectangle Bezier-Spline Layer: Draw a new Rectangle B-Spline layer

RectShapeBezier 2x

Add Rectangle Bezier-Spline to Layer: Draw a Rectangle B-spline that is added to the current spline layer.

CircleShapeXSpline 2x

Create Circle X-Spline Layer: Draw a new Rectangle X-Spline layer

CircleShapeAddXSpline 2x

Add Circle X-Spline to Layer: Draw an Rectangle X-spline that is added to the current spline layer.

CircleShapeBezier 2x

Create Circle Bezier-Spline Layer: Draw a new Rectangle B-Spline layer

CircleShapeAddBezier 2x

Add Circle Bezier-Spline to Layer: Draw a Rectangle B-spline that is added to the current spline layer.

ShowSurface 2x

Show Planar Surface: Toggles the planar surface view

ShowGrid 2x

Show Planar Grid: Toggles a grid relative to the planar surface view. You can adjust the number of grid lines under Viewer Preferences (See below)

AlignSurface 2x

Align Surface: Expands the layer surface to fit the dimensions of the footage at the current frame. All tracked data is made relative to this new alignment.

See descriptions in Advanced Toolbar above for the rest of the tools.

The Viewer Controls

ViewControls Toolbar 001

These controls cover what can been seen or hidden while working in the Mocha viewer.

Note The Viewer controls are turned off in some layouts. You can turn them on via the View menu.

ICON Footage 001

Clip to Show: Choose which clip to view from this dropdown

ICON Proxy 001

Proxy Scale: Adjust the resolution of the footage for performance (Mocha Standalone only)

RGB 2x

Show RGB Channels: Turns on the RGB view of the footage. Select from the dropdown to choose an individual color channel to view.

Alpha 2x

Show Alpha Channels: Turns on the Alpha view of the footage

Mattes 2x

Show Layer Mattes: Toggle on or off to show the mattes. Select from the dropdown to choose the type of matte

Colorize 2x

Color Layer Mattes: Fills matte with Color. Decreasing the value lessens the opacity

Overlays 2x

Overlays: Toggles all viewer overlays, including splines, tangents, surface and grid

Layers 2x

Show Layer Outlines: Toggles all spline overlays, including splines, points and tangents

Tangents Splines 2x

Show Spline Tangents: Toggles spline tangents view. Select from the dropdown to choose the type of view

ViewMesh

View Mesh: Toggles Mesh view. Select from the dropdown to choose either the mesh or just the vertices.

ZoomWindow 2x

Show Zoom Window: Toggles the Zoom window

Stabilize 2x

Stabilize: Turns on Quick Stabilize Preview. This centers the footage around your tracked surface using the tracking data linked to pan and zoom. You can choose different layers to stabilize the viewer from the dropdown in the button.

Trace 2x

Trace: Turns on the traced path of the tracked surface. You can adjust the amount of frames to trace under Viewer Preferences (See below)

View Brightness 2x

Enable Brightness Scaling: Toggles brightness adjustment to work with low-contrast footage.

ICON ViewerControls 001

Viewer Preferences: Adjustments dialog for parameters such as grid lines and trace frames. Also controls for viewer OCIO colourspaces.

The Timeline Controls

Timeline 001

The timeline controls cover frame range, playback, tracking controls and key-framing.

Note Some timeline controls may not be visible in certain layouts. You can turn them on via the View menu or by right-clicking the timeline.

ICON FrameField 001

Project In-Point: Frame where timeline playback starts

SetInPoint 2x

Set In-Point: Set the in-point for the timeline

ClearInPoint 2x

Reset In-Point: Set the in-point back to the start of the clip

ICON FrameField 001

Current Frame: The frame the playhead is currently on. Enter a new value to jump to that frame.

ClearOutPoint 2x

Reset Out Point: Set the out point back to the end of the clip

SetOutPoint 2x

Set Out Point: Set the out point for the timeline

ICON FrameField 001

Project Out Point: Frame where timeline playback ends

ZoomToInOutPoints 2x

Zoom Timeline to In/Out points: Expands the timeline between the in and out points to the edges of the viewer

ZoomToFullRange 2x

Zoom Timeline to full frame range: Resets the timeline scale to the full range of frames

ICON Playbar 001

Play Controls: Controls for playing back and forth and moving one frame at a time

Play PingPong 2x

Change Playback Mode: Toggles tri-state button between Play once, Loop and Bounce playback modes.

ICON TrackPlaybar 001

Tracking Controls: Controls for tracking back and forth and tracking one frame at a time.

PlayBackwards 2x

Go to Previous Keyframe: Jump to the previous keyframe set in the timeline for that layer

PlayForwards 2x

Go to Next Keyframe: Jump to the next keyframe set in the timeline for that layer

AddKeyframe 2x

Add New Keyframe: Add a new keyframe at the current position for the selected layer. This only appears if you are not hovering over an existing keyframe.

RemoveKeyframe 2x

Delete New Keyframe: Deletes the keyframe at the current position for the selected layer. This only appears if you are hovering over a keyframe.

RemoveAllKeyframes 2x

Delete All Keyframes: Deletes all keyframes on the timeline for the selected layer

AutoKeyframe 2x

Autokey: Toggles automatic key insertion when moving points or adjusting parameters

Uber 2x

Überkey: Toggles the Überkey, which modifies all keys in the layer relative to the key you are now on.

Layer Controls

LayerControls 001

The top left hand panel contains the tools to manage layers.

LayerView 001

Layer Icons:

  • Click the Eye to toggle layer visibility

  • Click the Cog to toggle tracking for that layer

  • Click the Lock to toggle locking

  • Click the Spline Color to change the color of the selected layer splines

  • Click the Matte Color to change the color of the selected layer mattes

LayerActions 001

Layer Actions dropdown:

  • Select All: Selects all layers

  • Select Group: Selects all layers in a selected group

  • Invert Selection: Inverts the layer selection

  • Delete Selected: Deletes all selected layers

  • Duplicate: Duplicates all selected layers

  • Lock Selected: Locks all selected layers

  • Lock All: Locks all layers

  • New Group: Creates a new empty group

  • Group Selected: Creates a group containing the selected layers

  • Align Selected Surfaces: Aligns the selected layer surfaces to the dimensions of the footage at the current frame

  • Toggle Active at current frame: Activates or Deactivates the layer on the current frame

LayerGroupFolder 2x

Group Layer: Groups the currently selected layers. If no layers are selected, creates an empty group.

DuplicateLayer 2x

Duplicate Layer: Duplicates the currently selected layers

DeleteLayer 2x

Delete Layer: Delete currently selected layers on all frames

Layer Properties

The section under the Layer Controls panel contains the properties for each layer.

LayerProperties 001

  • Layer In/Out frames: Settings to change where the layer turns on and off in the clip

  • Blend mode: Dropdown to add or subtract your spline to the current layer. Invert flips this

  • Insert Clip: Insert a demo clip to preview your track. You can use one of the defaults or import your own. For preview purposes only

  • Matte Clip: Replaces the current layer splines with a matte clip.

  • Link to Track: Which layer track to link your layer splines to. Can also be set to None. You can select multiple layers before choosing this option.

  • Link to adjusted track: Optional checkbox to link the layer splines to the adjusted track of the selection in "Link to Track"

  • Detail: Used to adjust the amount of points in a magnetic or freehand spline.

Cache Management

In Mocha v5 we introduced manual cache clearing to allow you to clear the Mocha cache at the project, render or global level.

You can access the Clear Cache option from the file menu under File → Clear Cache…​

clear cache dialog

You can check the following options:

  • Project Cache: Clear the cache for the currently loaded project

  • Rendered Clips: Clear just the rendered clips for the project

  • Global Cache: Clear everything in the entire Mocha cache.

Only clear the Global Cache if you are certain you don’t want any of your existing project caches to remain.

Important Whenever you close the Mocha Plugin GUI, any renders you perform are cleared in order to make sure that you get a reliable render in the host.
If you want to keep a render you have completed inside Mocha, it is important that you export it first from the File menu.+
If you want to learn more about this, see the File and Clip section of Troubleshooting Mocha issues.

Stereo Interface

Some interface elements change when using Stereo footage. This section covers what new icons appear and how to interact with them.

Viewing in Stereo

In stereo mode you will see 3 buttons in the View Controls next to the clip view drop down on the left:

  • Two buttons to show individual Left or Right views (L and R). These button names change according to the abbreviation you assign them in Project Settings.

  • A 3D button to preview stereo views

You can preview stereo work at any time by turning on the 3D button in the view controls.

ICON 3D Views 001

Clicking and holding on the 3D button will give you a range of stereo view options.

Stereo 3D View Options
  • Interlaced: Each view is show on every other line in fields

  • Active: If you have an active shutter monitor available, you can view in this mode (Note: Only tested on Windows)

  • Anaglyph: Probably the most common mode to view stereo work through. You can choose from Red/Cyan or Green/Magenta

  • Difference: A difference mode of the views laid over each other. This view also has additional functionality explained below

Timeline Controls in Stereo

Two new icons appear in the timeline to assist with tracking and roto in stereo:

Multiview 2x

Track/Render on All Views: Toggle this button in the timeline to Track/Render in both eyes

MultiViewKeyframe 2x

Keyframe on All Views: Toggle this button in the timeline to maniuplate keyframes in both eyes

Both these buttons and their uses are covered in the Stereo Tracking and Stereo Roto sections of the User Guide.


Using the Mocha Pro Plugins

Note In Mocha Pro 2019 and above, the Mocha VR plugin is as a legacy plugin. This is because all Mocha VR features are now inside Mocha Pro.
The Mocha VR category is maintained for compatibility with Mocha VR V5 plugin projects.

The Mocha Pro plugins are separate from the standalone Mocha and can be applied as an effect directly onto layers in host applications.

This reduces the need to swap out of your host application and streamlines getting data in and out of Mocha.

The biggest advantage is you can set up layers and module settings in Mocha as normal, and then have the results render directly to the host timeline without having to export.

In addition to the controls below, VR features also contain a separate area in the Module Renders section to control lens distortions without having to first open the Mocha Pro GUI:

lens VR 360 adobe plugin interface

Note The guides below are using examples of the Mocha Pro plugin.
For more information on using the 360 Features in the Mocha Pro Plugin, see Using Mocha for 360 workflow

360 VR and Stereo Views Workflow

The Mocha Pro plugin supports different types of 360 and Stereo footage via the "Views" drop down:

mochapro ae plugin stereo views

The first 4 Views options are for non-360 footage:

  • Mono: This is the default option and works with standard (non-stereo) footage.

  • Stereo (Separate eyes): This takes two separate footage streams. When chosen, the option to choose another source for the right eye is enabled. If you are using the 'Stereo' option, you will need to select the "Stereo Output" view (Left or Right) that you want to apply output to.

  • Top/Bottom: Top/Bottom is also commonly known as "Over/Under". When used, Mocha will split the footage exactly in half horizontally and use the Top and Bottom halves for each eye. The output to the host will automatically double up to the split views.

  • Left/Right: Left/Right is also commonly known as "Side by Side". When used, Mocha will split the footage exactly in half vertically and use the Left and Right halves for each eye. The output to the hosr will automatically double up to the split views.

Choosing one of the 360 options automatically sets your Mocha project to be Equirectangular 360. This will enable VR features:

  • 360 Mono: Sets the project to non-stereo 360 footage.

  • 360 Stereo: This takes two separate 360 footage streams. When chosen, the option to choose another source for the right eye is enabled. If you are using the 'Stereo' option, you will need to select the "Stereo Output" view (Left or Right) that you want to apply output to.

  • 360 Top/Bottom: Top/Bottom is also commonly known as "Over/Under". When used, Mocha will split the footage exactly in half horizontally and use the Top and Bottom halves for each eye. The output to the host will automatically double up to the split views.

  • 360 Left/Right: Left/Right is also commonly known as "Side by Side". When used, Mocha will split the footage exactly in half vertically and use the Left and Right halves for each eye. The output to the hosr will automatically double up to the split views.

You can also choose to Swap the Left and Right eye input by checking the Swap Views checkbox.

Some hosts will require different handling for Stereo sources:

  • Nuke: Nuke has native OFX stereo support and so only requires one Source input if you are using the "Stereo" option. If you have separate left and right eye sources, apply a "Join Views" node to combined them and feed the output into the Source input of the Mocha node.

  • Vegas Pro: Vegas Pro also has native stereo support. You will only see two options: Mono and Stereo. The "Stereo" option will read the native set up and feed in both eyes to the Mocha GUI.

  • Media Composer: Avid’s native stereo support is not supported by Mocha at present, so you can only use Top/Bottom or Left/Right combined stereo files.

As you go through the user guide, you will see sections on how to apply Mocha techniques to your stereo footage where relevant.

Applying the Mocha Plugin for Adobe After Effects

The Mocha Pro Plugin for Adobe appears in the Effects menu like every other effect.
Simply apply the effect to the layer you want to work with.

mochapro ae plugin full interface

The general workflow for the Mocha Adobe Plugin is as follows:

  1. Select any additional source layers you want to use inside Mocha

  2. Launch Mocha. This will load a full version of the Mocha interface that you can use just like the standalone version.

  3. Use Mocha as required and then close and save. No rendering is required inside Mocha unless you want to.

  4. Choose whether you want to use mattes, renders or any other data from Mocha back in the plugin interface.

Using the Mocha GUI

Once you have applied the Mocha Pro effect, you can click on the Mocha button to launch the main interface.

5.6.0 mochapro ae plugin launch mocha

This then becomes exactly like working in the standalone version of Mocha, with a few exceptions.
First, you will notice you don’t need to set up a project like in the standalone version. The source layer is automatically loaded and ready to track in the view.
Secondly you don’t need to save out a project file (unless you want to export it). You just close and save the Mocha view when done and the project is saved inside the Effect like any other Adobe effect.

By default, the starting timeline frame will always be zero, which will not affect your data generation back in After Effects.

For users using timecodes instead of frame numbers in After Effects, the correct timecode offset will display inside the Mocha GUI.

For further details on how to use anything inside the Mocha GUI, see the rest of the User Guide!

Note The Mocha Pro Plugin interface is almost exactly the same as the standalone interface, so most of the usual guide and video tutorials can be applied to the plugin.

Controlling Mattes

Once you have tracked layers in Mocha, you can then control the mattes for these layers back in the plugin interface.

5.0.0 mochapro ae plugin matte section

  • View Matte: Show the black and white matte from the Mocha layers chosen. This is very useful if you want to just see any problems with the matte, or you want to use the output as a track matte.

  • Apply Matte: Applies the chosen mattes to the current layer,

  • Visible Layers: This button launches the Visible Layers dialog so you can select the layers you want visible as mattes. You can also edit the Layer names in this window.

  • Shape: This drop down lets you switch between All Visible and All mattes. All Visible mattes are controlled by the Visible Layers dialog.

  • Feather: Applies a blur to the matte. This feathering is independent of the feathering of the individual layers inside Mocha.

  • Invert Mask: Inverts the currently visible mattes.

  • Create AE Mask: Creates native AE splines on the effect layer just like "Paste Mocha mask". This function is only available in After Effects.

Stereo output only

If you are using the 'Stereo' option in After Effects, you will need to select the "Stereo Output" view (Left or Right) that you want to apply output to.
If you are using Top/Bottom or Left/Right, the output will automatically double up to the split views.

Controlling Module Renders

Once you have set up layers in Mocha, you can then control the renders for each module back in the plugin interface.
Note that you do need to have set up and tracked the correct layers in order for a render to work back in the host.

mochapro ae plugin renders section

You have the following options to render a module back in the plugin:

  • Render: A simple checkbox to turn renders on and off.

  • Module: The module render you want to see. You have options of 'Insert: Composite', 'Insert: Cutout', 'Remove', 'Stabilize', 'Stabilize:Unwarp', 'Stabilize:Warp','Lens: Distort', 'Lens: Undistort' and 'Reorient'

  • Warp Quality: This drop down activates when you are using Stabilize:Unwarp and Stabilize:Warp options. It controls the render quality of the warp. See the Warp Mapping section of the stabilize module.

  • Insert Layer: For any inserts you want to apply to a layer surface and render back to the host.

  • Insert Blend Mode: Controls the Blending for Insert:Composite. If left to "Default" it will render what has been set inside the Mocha project. If changed, it will override all insert layers in the project.

  • Insert Opacity: Overrides the default insert opacity set inside the Mocha project.

There are also parameters for controlling the view in Lens:Distortion rendering for VR 360 footage.

See Using Mocha for 360 workflow for more on how to use the VR Lens controls.

Using Insert Layers from the host inside the plugin

To use the Insert Layer in Insert renders:

  1. Pick the layer you want to use as an insert from the 'Insert Layer' drown down in the Mocha Pro effect

  2. Launch the Mocha GUI

  3. Create a layer (or pick an existing layer)

  4. On the Layer Properties panel, choose the 'Insert Clip' dropdown

  5. Select 'Insert Layer'

mochapro gui plugin insert layer

Your Insert should then appear inside the layer where you have placed your surface.

Controlling Tracking Data

If you have a tracked layer in Mocha you can see the output of its surface back in the After Effects interface.
Each point in the Tracking Data section is a point from the layer surface that automatically updates when you modify it inside Mocha.

To choose a layer to create tracking data from, click the 'Create Track Data' button in the Tracking Data section of the plugin.

5.2.0 mochapro ae plugin tracking data section

Then choose ether the name or the cog of the layer you want to read tracking data from in the dialog that appears.

You can only choose one layer at a time.

mochapro ae plugin tracking data dialog

Once you click 'OK', the plugin will generate keyframes to populate the tracking parameters in the plugin. You can then use this data to copy to other layers, or link via expressions.

This option is only available in the After Effects version of the plugin.

Warning Generating keyframe data can take some time for very long shots. You can cancel generation at any time when the progress bar appears.

Applying Tracking Data Exports to Other layers

The plugin interface also allows you to apply tracking data to other layers without needing to export from the Mocha GUI.
Do do this, you generate the tracking data from a layer, as described above in Controlling Tracking Data.

You can then choose an export option at the bottom of the Tracking Data section:

  • Corner Pin: A standard corner pin effect

  • Corner Pin: (Support Motion Blur): A corner pin distortion with separate scale, rotation and position.

  • CC Power Pin: The CC Power Pin Effect

  • Transform: Scale, position and rotation

Clicking 'Apply Export' then copies the information to the specified layer.

Creating PowerMesh Nulls

The After Effects Mocha Pro Plug-In also has a section for PowerMesh, which provides the ability to generate nulls based on each vertex in a tracked Mesh.

powermesh nulls

To create the nulls, you do the following:

  1. Make sure you have tracked a Layer in Mocha Pro using the Mesh parameter

  2. Select "Create Nulls…​" under the PowerMesh section of the Adobe Mocha Pro Plugin interface

  3. Choose the layer you want to generate nulls from

  4. Click OK

If you are generating from a vertex-heavy mesh, Mocha will show a progress bar while generating the nulls.
Each Null will be created separately with its own keyframes.

Applying the Mocha Plugin for Adobe Premiere

The Mocha Pro Plugin for Adobe appears in the Effects menu like every other effect.
Simply apply the effect to the layer you want to work with.

mochapro premiere plugin full interface

The general workflow for the Mocha Adobe Plugin is as follows:

  1. Select any additional source layers you want to use inside Mocha

  2. Launch Mocha. This will load a full version of the Mocha interface that you can use just like the standalone version.

  3. Use Mocha as required and then close and save. No rendering is required inside Mocha unless you want to.

  4. Choose whether you want to use mattes, renders or any other data from Mocha back in the plugin interface.

Note The Mocha Pro Plugin interface is almost exactly the same as the standalone interface, so most of the usual guide and video tutorials can be applied to the plugin.

Using the Mocha GUI

Once you have applied the Mocha Pro effect, you can click on the Mocha button to launch the main interface.

mochapro premiere plugin launch mocha

This then becomes exactly like working in the standalone version of Mocha, with a few exceptions.
Firstly, you will notice you don’t need to set up a project like in the standalone version. The source layer is automatically loaded and ready to track in the view.
Secondly you don’t need to save out a project file (unless you want to export it). You just close and save the Mocha view when done and the project is saved inside the Effect like any other Adobe effect.
For further details on how to use anything inside the Mocha GUI, see the rest of the User Guide!

Controlling Mattes

Once you have tracked layers in Mocha, you can then control the mattes for these layers back in the plugin interface.

mochapro premiere plugin matte section

  • View Matte: Show the black and white matte from the Mocha layers chosen. This is very useful if you want to just see any problems with the matte, or you want to use the output as a track matte.

  • Apply Matte: Applies the chosen mattes to the current layer,

  • Visible Layers: This button launches the Visible Layers dialog so you can select the layers you want visible as mattes. You can also edit the Layer names in this window.

  • Shape: This drop down lets you switch between All Visible and All mattes. All Visible mattes are controlled by the Visible Layers dialog.

  • Feather: Applies a blur to the matte. This feathering is independent of the feathering of the individual layers inside Mocha.

  • Invert Mask: Inverts the currently visible mattes.

Controlling Module Renders

Once you have set up layers in Mocha, you can then control the renders for each module back in the plugin interface.
Note that you do need to have set up and tracked the correct layers in order for a render to work back in the host.

mochapro premiere plugin renders section

You have the following options to render a module back in the plugin:

  • Render: A simple checkbox to turn renders on and off.

  • Module: The module render you want to see. You have options of 'Insert: Composite', 'Insert: Cutout', 'Remove', 'Stabilize', 'Stabilize:Unwarp', 'Stabilize:Warp','Lens: Distort', 'Lens: Undistort' and 'Reorient'

  • Warp Quality: This drop down activates when you are using Stabilize:Unwarp and Stabilize:Warp options. It controls the render quality of the warp. See the Warp Mapping section of the stabilize module.

  • Insert Layer: For any inserts you want to apply to a layer surface and render back to the host.

  • Insert Blend Mode: Controls the Blending for Insert:Composite. If left to "Default" it will render what has been set inside the Mocha project. If changed, it will override all insert layers in the project.

  • Insert Opacity: Overrides the default insert opacity set inside the Mocha project.

There are also parameters for controlling the view in Lens:Distortion rendering for VR 360 footage.

See Using Mocha for 360 workflow for more on how to use the VR Lens controls.

Rendering Insert Layers

To use the Insert Layer in Insert renders:

  1. Pick the video track you want to use as an insert from the 'Insert Layer' drown down in the Mocha Pro effect

  2. Launch the Mocha GUI

  3. Create a layer (or pick an existing layer)

  4. On the Layer Properties panel, choose the 'Insert Clip' dropdown

  5. Select 'Insert Layer'

mochapro gui plugin insert layer

Your Insert should then appear inside the layer where you have placed your surface.

Applying the Mocha Plugin for Avid Media Composer

Important Due to extensive frame access by the Mocha plugin, it is recommended that you use Avid storage media (i.e. DNxHD) when working, rather than linked files.
(Use of linked files which use codecs such as H.264 will significantly slow down render time as such media is not designed for random access.)

The Mocha Pro Plugin for Adobe appears in the Effects menu like every other effect.
Simply apply the effect to the layer you want to work with.

mochapro avid plugin full interface

The general workflow for the Mocha Adobe Plugin is as follows:

  1. Select any additional source layers you want to use inside Mocha

  2. Launch Mocha. This will load a full version of the Mocha interface that you can use just like the standalone version.

  3. Use Mocha as required and then close and save. No rendering is required inside Mocha unless you want to.

  4. Choose whether you want to use mattes, renders or any other data from Mocha back in the plugin interface.

Note The Mocha Pro Plugin interface is almost exactly the same as the standalone interface, so most of the usual guide and video tutorials can be applied to the plugin.

Using the Mocha GUI

Once you have applied the Mocha Pro effect, you can click on the Mocha button to launch the main interface.

mochapro avid plugin launch mocha

This then becomes exactly like working in the standalone version of Mocha, with a few exceptions.
Firstly, you will notice you don’t need to set up a project like in the standalone version. The source layer is automatically loaded and ready to track in the view.
Secondly you don’t need to save out a project file (unless you want to export it). You just close and save the Mocha view when done and the project is saved inside the Effect like any other AVX effect.
For further details on how to use anything inside the Mocha GUI, see the rest of the User Guide!

Controlling Mattes

Once you have tracked layers in Mocha, you can then control the mattes for these layers back in the plugin interface.

mochapro avid plugin matte section

  • View Matte: Show the black and white matte from the Mocha layers chosen. This is very useful if you want to just see any problems with the matte, or you want to use the output as a track matte.

  • Apply Matte: Applies the chosen mattes to the current layer,

  • Visible Layers: This button launches the Visible Layers dialog so you can select the layers you want visible as mattes. You can also edit the Layer names in this window.

  • Visible Layers Dropdown: This drop down lets you switch between All Visible and All mattes. All Visible mattes are controlled by the Visible Layers dialog.

  • Feather: Applies a blur to the matte. This feathering is independent of the feathering of the individual layers inside Mocha.

  • Invert Matte: Inverts the currently visible mattes.

Controlling Module Renders

Once you have set up layers in Mocha, you can then control the renders for each module back in the plugin interface.
Note that you do need to have set up and tracked the correct layers in order for a render to work back in the host.

mochapro avid plugin renders section

You have the following options to render a module back in the plugin:

  • Render: A simple checkbox to turn renders on and off.

  • Module: The module render you want to see. You have options of 'Insert: Composite', 'Insert: Cutout', 'Remove', 'Stabilize', 'Stabilize:Unwarp', 'Stabilize:Warp','Lens: Distort', 'Lens: Undistort' and 'Reorient'

  • Warp Quality: This drop down activates when you are using Stabilize:Unwarp and Stabilize:Warp options. It controls the render quality of the warp. See the Warp Mapping section of the stabilize module.

  • Insert Layer: For any inserts you want to apply to a layer surface and render back to the host. Choose from the current layer or below the current video track.

  • Insert Blend Mode: Controls the Blending for Insert:Composite. If left to "Default" it will render what has been set inside the Mocha project. If changed, it will override all insert layers in the project.

  • Insert Opacity: Overrides the default insert opacity set inside the Mocha project.

There are also parameters for controlling the view in Lens:Distortion rendering for VR 360 footage.

See Using Mocha for 360 workflow for more on how to use the VR Lens controls.

Important Processing larger frame sizes and more complex rendering in Mocha may take a long time per frame.
When a frame render exceeds a certain interval in Media Composer, a BlipPlayer error can occur.
If you see this message, you should render the effect prior to playing back, or preview the render inside the Mocha UI before rendering back on the timeline.
Rendering Insert Layers

To use the Insert Layer in Insert renders:

  1. Pick the video track you want to use as an insert from the 'Insert Layer' drown down in the Mocha Pro effect. This will most commonly be "1st Below" the current layer with the effect applied.

  2. Launch the Mocha GUI

  3. Create a layer (or pick an existing layer)

  4. On the Layer Properties panel, choose the 'Insert Clip' dropdown

  5. Select 'Insert Layer'

mochapro gui plugin insert layer

Your Insert should then appear inside the layer where you have placed your surface.

Stereo Workflow

To work on a stereo shot in Media Composer:

  1. Import a Top/Bottom or Left/Right combined stereo file

  2. Choose the stereo type from the 'Views' drop down

  3. Open Mocha, and the views will be mapped automatically to the left and right views.

Important Avid’s native stereo support is not supported by Mocha at present, so you can only use Top/Bottom or Left/Right combined stereo files.

Applying the Mocha OFX Plugin

Note The OFX version of the Mocha Plugin is fully supported in Nuke, Fusion, HitFilm Pro, Vegas Pro and Silhouette.

If you have a license for the OFX version it will work in any of the OFX hosts listed below.
Keep in mind that while the Mocha OFX plugin is designed to be used in multiple applications, it does not support all OFX hosts.

In many cases some functionality may be possible for unsupported hosts, but there is no guarantee of functionality or stability, so please take care when experimenting!

Adding the Mocha Plugin inside Autodesk Flame

Inside Flame, the Mocha Pro Plugin for OFX appears in the OpenFX Plugin loader panel like every other OFX plugin.

To get full use of the Mocha Pro plugin, we recommend using it as a batch effect.

  1. Click on the FX button and then click Create Batch FX

    mochapro ofx flame batchfx
  2. Drag a new OpenFX plugin into the Batch FX graph

    mochapro ofx flame nodegraph
  3. In the OpenFX plugin panel, click 'Load Plugin' and navigate to 'Boris FX Mocha' and choose 'Mocha Pro'

    mochapro ofx flame plugin library
  4. Once loaded into the Effects panel, you can just click the 'Launch Mocha UI' button to open the Mocha Pro interface.

    mochapro ofx flame plugin full interface

Adding the Mocha Plugin inside Blackmagic Design Fusion Studio

Inside Fusion Studio, the Mocha Pro Plugin for OFX appears in the Tool menu like every other effect.
Just choose 'Boris FX Mocha' > 'Mocha Pro'.

Mocha Pro node in Fusion (Footage courtesy of Chris Heuer):

5.0.0 mochapro ofx fusion plugin flow graph

Once loaded into the flow graph, simply plug the image node you want to work with into the 'Source' input of the Mocha Pro effect node.

mochapro ofx fusion plugin full interface

Adding the Mocha Plugin inside The Foundry Nuke

Inside Nuke, the Mocha Pro Plugin for OFX appears in the toolbar menu like every other effect.

You can also call the Mocha Pro effect from the Tab key by searching for 'Mocha Pro' or right-click and choose 'Boris FX Mocha' > 'Mocha Pro'.

Mocha Pro node in Nuke node graph (Footage courtesy of Chris Heuer):

mochapro ofx nuke plugin node graph

Once loaded into the node graph, simply plug the image node you want to work with into the 'Source' input of the Mocha Pro effect node.

mochapro ofx nuke plugin full interface

Note Nuke has native OFX stereo support and so only requires one Source input if you are using the "Stereo" option.
If you have separate left and right eye sources, apply a "Join Views" node to combined them and feed the output into the Source input of the Mocha node.

Adding the Mocha Plugin inside Silhouette

In Silhouette, Mocha Pro Plugin for OFX appears in the nodes menu like every other effect.

Mocha Pro node in Silhouette:

5.2.1 mochapro ofx silhouette plugin trees window

Once loaded into the tree window, simply plug the image node you want to work with into the 'Source' input of the Mocha Pro effect node.

mochapro ofx silhouette plugin full interface

Linear Workflow

Silhouette includes Linear support for the Mocha plugin.
If you are using rec709 8-bit images, you need to enable the 'Mocha > Linearize Images In Mocha Pro' preference in Silhouette so images look correct in the Mocha GUI.
When using EXR or Cineon images, this preference should remain off.

You can also use the built-in OCIO preferences in the Mocha Viewer Preferences.

Adding the Mocha Plugin inside Vegas Pro

Inside Vegas Pro, the Mocha OFX Plugin appears under 'Boris FX Mocha' in the Plug-in Chooser dialog for the following effect chains:

  • Event FX: Click the effect icon on the video event segment you want and then select the Mocha effect and click OK.

  • Track FX: Click the effect icon on the appropriate video track and then select the Mocha effect and click OK.

  • Track Composite Mode: Choose 'Custom…​' in the Compositing Mode options then select the Mocha effect and click OK.

Mocha Pro node in Vegas Plug-in Chooser:

5.6.0 mochapro ofx vegas plugin chooser

Once loaded, you can begin with the 'Launch Mocha UI' button at the top of the effect panel.

mochapro ofx vegas plugin full interface

Using the Insert Layer clip in Vegas

Mocha uses two sources from the timeline for inserting clips: The main background image source to track from and a secondary image source to insert into a tracked layer.

To use a secondary source input in Vegas for Insert clips you need to composite your tracks together:

  1. Set the Insert clip you want to use as the parent layer and the plate you want the insert to be rendered over as the child

  2. Click the Track Compositing mode on the parent insert layer and select 'Custom…​'
    5.6.0 mochapro ofx vegas plugin insert layer setup

  3. Select the Mocha effect and click OK

  4. Launch the Mocha GUI in the Composite Mode panel

This will then load the secondary source into any layer Insert clip dropdown as a clip called 'Insert Layer'. See Rendering Insert Layers below.

Note Vegas Pro has native stereo support. When working with stereo in Mocha you will only see two options: Mono and Stereo. The "Stereo" option will read the native set up and feed in both eyes to the Mocha GUI.

Basic workflow for the Mocha OFX Plugin

One your source clip is hooked up to you Mocha Pro Effect, the general workflow for the Mocha OFX Plugin is as follows:

  1. Select any additional source you want to use as an insert in Mocha and plug it into the 'Insert' input (See Rendering Insert Layers below.)

  2. Launch the Mocha UI using the button at the top of the panel. This will load a full version of the Mocha interface that you can use just like the standalone version.

  3. Use Mocha as required and then close and save. No rendering is required inside Mocha unless you want to.

  4. Choose whether you want to use mattes, renders or any other exported data from Mocha back in the plugin interface.

Note The Mocha Pro Plugin interface is almost exactly the same as the standalone interface, so most of the usual guide and video tutorials can be applied to the plugin.
Plugin interface examples below use the Nuke UI.

Using the Mocha GUI

Once you have applied the Mocha Pro effect, you can click on the 'Launch Mocha UI' button to launch the main interface.

5.0.0 mochapro ofx nuke plugin launch mocha

This then becomes exactly like working in the standalone version of Mocha, with a few exceptions.
Firstly, you will notice you don’t need to set up a project like in the standalone version. The source layer is automatically loaded and ready to track in the view.
Secondly you don’t need to save out a project file (unless you want to export it). You just close and save the Mocha view when done and the project is saved inside the effect.
For further details on how to use anything inside the Mocha GUI, see the rest of the User Guide!

Controlling Mattes

Once you have tracked layers in Mocha, you can then control the mattes for these layers back in the plugin interface.

5.0.0 mochapro ofx nuke plugin matte section

  • View Matte: Show the black and white matte from the Mocha layers chosen. This is very useful if you want to just see any problems with the matte, or you want to use the output as a track matte.

  • Apply Matte: Applies the chosen mattes to the source node.

  • Visible Layers Button: This button launches the Visible Layers dialog so you can select the layers you want visible as mattes. You can also edit the Layer names in this window.

  • Visible layers Dropdown: This drop down lets you switch between All Visible and All mattes. All Visible mattes are controlled by the Visible Layers dialog.

  • Feather: Applies a blur to the matte. This feathering is independent of the feathering of the individual layers inside Mocha.

  • Invert Matte: Inverts the currently visible mattes.

Controlling Module Renders

Once you have set up layers in Mocha, you can then control the renders for each module back in the plugin interface.
Note that you do need to have set up and tracked the correct layers in order for a render to work back in the host.

mochapro ofx nuke plugin renders section

You have the following options to render a module back in the plugin:

  • Render: A simple checkbox to turn renders on and off.

  • Module: The module render you want to see. You have options of 'Insert: Composite', 'Insert: Cutout', 'Remove', 'Stabilize', 'Stabilize:Unwarp', 'Stabilize:Warp','Lens: Distort', 'Lens: Undistort' and 'Reorient'

  • Warp Quality: This drop down activates when you are using Stabilize:Unwarp and Stabilize:Warp options. It controls the render quality of the warp. See the Warp Mapping section of the stabilize module.

There are also parameters for controlling the view in Lens:Distortion rendering for VR 360 footage.

See Using Mocha for 360 workflow for more on how to use the VR Lens controls.

Rendering Insert Layers

You can use secondary clips in the host application to render tracked inserts into your shots.
See the User Guide Chapter on the Insert Module for more details on manipulating and warping inserts.

To use the Insert input from your host application in Insert renders:

  1. Pick the image you want as an insert and make it available for the Mocha plugin to use:

    • For node based compositors you can plug the insert image into the 'Insert' input on the the Mocha Pro effect node.

    • In Vegas you need to make the insert image the parent in compositing mode. See Using the Insert Layer clip in Vegas for this method.

    • In HitFilm, you select the insert image from one of your other layers in the comp listed in the "Insert" dropdown

  2. Launch the Mocha GUI

  3. Create a layer (or pick an existing layer)

  4. On the Layer Properties panel, choose the 'Insert Clip' dropdown

  5. Select 'Insert Layer'

mochapro gui plugin insert layer

Your Insert should then appear inside the layer where you have placed your surface.

Alternatively you can import an image or sequence directly to the plugin:

  1. Launch the Mocha GUI

  2. Create a layer (or pick an existing layer)

  3. On the Layer Properties panel, choose the 'Insert Clip' dropdown

  4. Select 'Import'

  5. Import an image or image sequence

The imported Insert should then appear inside the layer where you have placed your surface.

Once you have set up your render in the Insert Module, you can then render back to the host:

  1. Close and save the Mocha Project

  2. Open the "Module renders" section of the plugin effect interface

  3. Select either "Insert: Composite" or "Insert: Cutout" from the "Module" dropdown

  4. Click "Render" checkbox to render the insert

You can also adjust the Insert Blend Mode and the Insert Opacity from the plugin interface without needing to go back into Mocha:

  • Insert Blend Mode: Controls the Blending for Insert:Composite. If left to "Default" it will render what has been set inside the Mocha project. If changed, it will override all insert layers in the project.

  • Insert Opacity: Overrides the default insert opacity set inside the Mocha project.

Dealing with Alpha Channel Input and Output

In cases where your input source has an alpha channel, you may wish to change the Alpha view inside the Mocha GUI.

5.0.0 mochapro ofx nuke plugin alpha view

You can either turn Alpha off entirely by toggling off the button, or choose from one of the following options:

  • Auto alpha: Reads in alpha if it is not opaque or premultiplied. This is the default setting.

  • Source alpha: This option shows the alpha as given from the source.

Auto alpha may be necessary when working with some source inputs in Nuke.

When rendering back out to the host, there are cases where you may also need to premultiply the alpha using the premultiply options in the plugin interface.

In these cases you can choose an option from the 'Premultiply' dropdown:

  • Auto: Premultiplies based on the original source input

  • On: Always premultiply output

  • Off: Never premultiply output

You can also choose to premultiply using standard premultiply nodes.

Stereo Workflow

To work on a stereo shot in your OFX host:

  1. Import separate stereo views, a Top/Bottom or Left/Right combined stereo file

  2. Choose the stereo type from the 'Views' drop down: 'Top/Bottom', 'Left/Right' or 'Stereo'

  3. If you are using the 'Stereo' option, make sure you are applying the effect to the Left eye footage and choose your right-eye source input

  4. Open Mocha, and the views will be mapped automatically to the left and right views.

Note Some OFX hosts handle stereo support differently. See your specific host notes in this chapter for instructions. Especially Nuke and Vegas.

Applying the Mocha HitFilm or Mocha Pro Plugin inside HitFilm

We now include a light version of Mocha, called Mocha Hitfilm, as a plugin in HitFilm Pro 2017 onwards. This includes:

  • Tracking and roto export for HitFilm

  • 3D Camera solving

  • Matte rendering

However, you can also use the Mocha Pro OFX plugins in the HitFilm interface.

Adding the Mocha Plugin to a layer

To add Mocha, simply locate it in the Effects panel like any other effect and drag it onto your layer.

Mocha HitFilm Effect Controls in a HitFilm comp:

mocha hitfilm plugin full interface

Basic workflow for the Mocha Plugin in HitFilm

Once your layer is hooked up to your Mocha Effect, the general workflow for the Mocha Plugin is as follows:

  1. Launch the Mocha UI using the 'Launch Mocha UI' button at the top of the panel. This will load a full version of the Mocha interface that you can use just like the standalone version.

  2. Use Mocha as required

  3. Export any data if needed (tracks, shapes or camera solve data) then close and save

  4. Choose any mattes you want to use from Mocha back in the plugin interface

  5. If you are using Mocha Pro, choose the renders you wish to use from the "Module Renders" section and check "Render"

Note The Mocha HitFilm Plugin interface is almost exactly the same as the standalone interface, so most of the usual guide and video tutorials can be applied to the plugin.

Using the Mocha GUI

Once you have applied the Mocha effect, you can click on the 'Launch Mocha UI' button to launch the main interface.

5.1.1 mocha hitfilm plugin launch mocha

This then becomes exactly like working in the standalone version of Mocha, with a few exceptions.

First, you will notice you don’t need to set up a project like in the standalone version. The source layer is automatically loaded and ready to track in the view.

Secondly, you don’t need to save out a project file (unless you want to export it). You just close and save the Mocha view when done and the project is saved inside the effect.

For further details on how to use anything inside the Mocha GUI, see the rest of the User Guide!

Controlling Mattes

Once you have tracked layers in Mocha, you can then control the mattes for these layers back in the plugin interface.

mocha pro plugin matte section

  • View Matte: Show the black and white matte from the Mocha layers chosen. This is very useful if you want to just see any problems with the matte, or you want to use the output as a track matte.

  • Apply Matte: Applies the chosen mattes to the source node.

  • Visible Layers Button: This button launches the Visible Layers dialog so you can select the layers you want visible as mattes. You can also edit the Layer names in this window.

  • Visible layers Dropdown: This drop down lets you switch between All Visible and All mattes. All Visible mattes are controlled by the Visible Layers dialog.

  • Feather: Applies a blur to the matte. This feathering is independent of the feathering of the individual layers inside Mocha.

  • Invert Matte: Inverts the currently visible mattes.

Controlling Mocha renders in HitFilm

If you are using the Mocha Pro version of the plugin, controlling renders is exactly like the standard OFX rendering controls.

See Controlling Renders and Rendering Insert Layers in the section above.

Loading Projects containing the Mocha VR Plugin

When you load a project that contains the old Mocha VR plugin, you will notice that Mocha VR is labelled as "Legacy".
This is because all Mocha VR features have been rolled into Mocha Pro and a Mocha VR plugin stub is kept to avoid breaking compatibility with your old projects.

When you want to start a new VR project, we highly recommend using the Mocha Pro plugin rather than the legacy Mocha VR plugin, as this compatibility feature may be removed in future versions.

See (360 VR and Stereo Views Workflow ) above for how to set the 360 VR modes in new Mocha Pro projects.


Starting a New Project

Workflow inside Mocha

Mocha workflow is designed around a project structure. It is good practice to only work on one shot per project file to minimize layer management and to keep the work streamlined.

The basic tracking workflow for Mocha is:
  1. Import your footage

  2. Draw a loose spline around the shape you want to track

  3. Track the spline

  4. Set the 'Surface', or corner pin where you want the inserted image

  5. Adjust your track if necessary

  6. Export the completed track

The basic rotoscoping workflow is very similar:
  1. Import your footage

  2. Draw a loose spline around the shape you want to track.

  3. Track the spline

  4. Adjust your track if necessary

  5. Add new shapes for rotoscoping and link them to your track

  6. Adjust shapes where necessary

  7. Export the rendered mattes or the shape data

Creating a New Project in the Mocha Standalone application

When you start the application you are presented with an empty workspace. No footage is loaded and most of the controls are consequently disabled.
To begin working, you must open an existing project or start a new project.

MENU NewProject 001

Select the clip to import by clicking on the Choose…​ button to the right of the top line. This will bring up a file browser, where you can select almost any industry standard file formats. Image sequences will show up as individual frames. You can select any one of the frames and the application will automatically sequence the frames as a clip when importing.

NewProjectDialog 001

Name

A project name will automatically be generated based on the filename of the imported footage, but you can change it by editing the Name field.

Location

Your project file and cache files will output to a directory called "Results" by default. This is created in the same folder your clip is imported from. You can change this using the Change…​ button or using the dropdown box to set a different relative or absolute path.

Frame Range

The range of frames to import. We recommend to only work with the frames you need, rather than importing very large clips or multiple shots edited together.

Frame offset

This is set to the starting frame number or timecode by default. You can also define a fixed frame (You can set a default for the fixed frame in Preferences).
You also have the option to view as Timecode or Frame numbers. If your clip has an embedded timecode offset and you switch to Timecode, the offset will be used in your project.
If you need to adjust this value later, you can open Project Settings from the file menu. See "Project Frame Offsets and Clip Frame Offsets" below for more details.

Frame Rate

Normally this is automatically detected, but you have options to adjust if necessary. Make sure you check the frame rate before you close the New Project dialog.
If you need to adjust this value later, you can open Project Settings from the file menu.

Separate Fields

If you are using interlaced footage, set your field separation here to Upper or Lower. Make sure you check your fields match your footage before you close the New Project dialog. If you don’t set them correctly, you cannot modify them and will have to restart the project.

Remove Pulldown

If your footage has pulldown, set it here.

Advanced options

NewProjectAdvanced 001

Caching

If you wish the clip to be cached into memory, check the Cache clip checkbox here. Caching is recommended if you are working a computer that has fast local storage, but your shot is stored in a slow network location. If your shot is already stored on fast storage, you don’t need to cache. More often than not, you can leave this setting off.

Color space

Set to Linear, Log and Panalog.

Conversion

Set to None, Float or 8-Bit

Offset

If working with log color space, set any offset here.

Soft clip

If working with log color space, set soft clip value here. Default is zero making falloff linear, rather than curved.

Log reference black

If working with log color space, set white reference value here.

Log reference black

If working with log color space, set black reference value here.

Gamma

If working with log color space, you can adjust Gamma here.

Setting Up a New Project For VR 360

Mocha Pro supports Equirectangular 360 Footage. To set the project to be in 360 mode, check the '360 VR Footage' checkbox after you import your clip.
NewProject 360VR

Setting Up a New Project For Stereo

When you start a New Project you are also presented with the option of creating a multiview project in the Views tab.

NewProject Views

If you check Multiview project you are then presented with the view names and their abbreviated names.
The abbreviated name is used in the interface for the view buttons, but is also used as the suffix for renders.
You can also choose the hero view. By default this is the left. Defining a hero eye determines the tracking and roto order for working in the views.

If you are using Top/Bottom or Left/Right footage combined in a single frame, select an option from the Split Views drop down:

SplitViewsStandalone

If you want to define separate streams of footage for the stereo views, you can add additional footage streams view the Add button below the initial clip chooser.

NewProject AddStream

If you forget to set up Multiview when you start a new project, you can set it in the new Project Settings Dialog from the File menu.

Once you are in Multiview mode, you will see a colored border around the viewer based on the current view you are in.
This is to help artists to identify which view they are currently in without having to refer to the buttons

You can switch between Views by pressing the corresponding L|R buttons in the view controls, or using the default 1 and 2 keys on the keyboard.

You can swap views or change the Split View mapping from the View Mapping subtab under the Clip module:

SwapViews Standalone

Creating a New Project in the Mocha Pro Plugin

The Mocha Pro plugin has a slightly different project workflow to the stand alone Mocha applications.

The basic new project workflow for Mocha Pro Plugin is:
  1. Apply the Mocha Pro effect to your layer or footage track

  2. Launch Mocha from effects panel in your host application

5.6.0 mochapro ae plugin launch mocha

This action loads the footage from the host clip you applied the effect to. It automatically applies the correct frame rate and other clip settings, so there is no need for the standard new project dialog.

After you have done the usual work inside the Mocha Pro interface, you simply close and save the Mocha Pro GUI and then you can control the output from the effect editor interface.

For general guide to workflow with the Mocha plugin, see Using the Mocha Pro Plugin.

For setting up a new stereo project with the plugin, see Plugin Stereo Workflow.

Creating a New Project in the BCC 10 Mocha PixelChooser

Boris FX introduced the Mocha PixelChooser in BCC 10. The plugin has a slightly different project workflow to the stand alone Mocha applications.

The basic new project workflow for Mocha PixelChooser is:
  1. Apply a BCC effect to your layer or footage track

  2. Launch Mocha from the PixelChooser section of the plugin

5.0.0 mocha pixelchooser launch

This action loads the footage from the host clip you applied the effect to. It automatically applies the correct frame rate and other clip settings, so there is no need for the standard new project dialog.

After you have done your tracking and/or roto work, you simply close and save the Mocha PixelChooser and it applies any visible layers as mattes back to the effect.

Note The Mocha PixelChooser plugin is limited to Tracking and Roto and only exports data formats to BCC plugins.

Setting the In and Out Points

Timeline 001

If you will only be working on a section of the shot you can use the In and Out points to set the range on the timeline. Note that the In and Out points affect the range of the Überkey button. You can zoom the timeline to only show you the part between you In and Out points by clicking the Zoom Timeline button.

Project Frame Offsets and Clip Frame Offsets

Frame offsets are important to get right in Mocha so that they export correctly to your target program.

There are two kinds of frame offsets:

  • Project Frame Offset: This frame offset sets the starting frame for keys in your timeline. For example if you have imported a sequence of 100 frames and you need the index of frames to start at 1001, you can change this under the Project Settings in the file menu.

  • Clip Frame Offset: This frame offset is to offset the actual clip frames to slide the starting point of the clip back and forth. You can adjust clip frame offset under the Display tab in the Clip module.

For the vast majority of cases the Project Frame Offset is the value you want to adjust for working with data.
The frame offset is usually already set correctly at the New Project dialog stage, but there may be cases where offsets change, such as adding new clip frames.

Tips for New Projects

Only import as much as you need

Working with very long files can be time consuming for the artist and can slow down the tracking as it searches for more frames. Try to only use what you need, and work on individual shots, rather than multiple shots in one piece of footage.

Frame rate, dimensions and pixel aspect ratio are important

Make sure these values match the settings in your compositor or editor, otherwise tracking and shape data will not match when you export it.

If you are unsure which field your interlaced footage is in, import it and check

If you quickly start your project with a guessed field order, you can check to make sure it is correct by using the right arrow key to step through the footage. If you footage stutters or steps back a frame while you’re stepping through, it is probably in the wrong field order, or you may have to set pulldown.

Try to avoid interlaced footage where possible

Interlaced footage is painful to work with. For your own sanity, try not to use it unless you have to!


Merging and Importing Projects

Merging Projects [Mocha Pro]

If you are working on a large roto project you will sometimes need to have more than one person working on the same shot.

When it comes time to export out mattes or do final tweaks you can use the Merge Project option to combine any files that have been used on the same piece of footage.

MENU MergeProject 001

Simply select the Merge Project option from the File menu, and select a project you wish to merge. You can only merge projects that are the same dimensions, aspect ratio and frame length as the shot you are merging into.

NOTE: You cannot merge projects from versions of Mocha earlier than 3.0.0.

Importing Silhouette SFX projects

Mocha can also import Silhouette .sfx project files. To import a project:

  1. Open or create a project with matching footage and same dimensions as the Silhouette file. This is important. Your Silhouette project file will need to match the frame rate, dimensions and length of the Mocha project to correctly import.

  2. Go to File → Import → SFX Project Shapes…​

  3. Choose a Silhouette sfx project file. If you are in OS X, you may need to navigate inside the sfx package to find the actual project file.

  4. Click Open

The Silhouette project will then convert any Bezier and X-splines to native Mocha splines and appear in the project.
If there are any B-Spline layers in the project, these will not be imported as they are currently not supported.


Tracking Basics

Note Some tools, parameters and techniques listed below may not be visible in Essentials mode. To see additional interface elements, switch to Classic mode. See the Layouts section for more information.

The Planar Tracker

Boris FX’s Planar Tracker technology provides 2D tracking data by tracking planes rather than points.

The key to getting the most out of the Planar Tracker is to learn to find planes of movement in your shot which coincide with the object that you want to track or roto. Sometimes it will be obvious - other times you may have to break your object into different planes of movement. For instance if you were tracking a tabletop, you would want to draw the spline to avoid the flower arrangement in the center of the table — it is not on the same plane and will make your track less accurate.

To select a plane you simply draw a spline around it. You can be fairly loose with your spline — the Planar Tracker is intelligent enough to discard the pixel movement that doesn’t conform to the movement of the majority of the pixels within the shape.

Mocha features two spline types, X-Splines and Bézier splines:

X-Spline

In general X-Splines work better for tracking, especially with perspective motion. We recommend using these splines where possible.

ToolAddXSplineLayer 2x

XSpline 001

Bézier Spline

ToolAddBezierSplineLayer 2x

BezierSpline 001

Bézier Splines are also very versatile for roto and is the industry spline standard.

CPU vs GPU Tracking

You can choose between a GPU or a CPU tracker in Preferences. By default, GPU is selected, but will fall back to CPU if an operation is not supported by the GPU version.

The GPU option allows you to select any supported graphics card on your system to take on the brunt of the tracking process. The resulting speed improvement is especially noticeable on high resolution footage or when tracking large areas.

The Relationship Between Splines and Tracking Data

One of the most important concepts to understand with the Mocha planar tracking system is that the spline movement is not the tracking data.

It’s best to think of the splines you draw around objects as search areas. Here’s a breakdown of how the tracking works:

  1. By default, any spline you draw is linked to the tracking data of the layer it is currently in. In hierarchical terms, the spline is the child of the track, even if there is no tracking data.

  2. When you begin to track a layer, the area of detail contained within the spline(s) you have drawn will be searched for in the next frame.

  3. If the planar tracker finds the same area in a following frame, it will tell the tracker to move to that point. Because the spline is linked to the track by default, it will also move along with it and the search begins again for the next frame.

To see this relationship, turn on your surface and/or grid in the viewer after you have tracked something. Scrub the timeline and you will see that the grid and surface move with the spline.

Now select all the points of your spline and move it around the viewer. You will notice that the surface/grid will stay in the same place.

This is because the spline is linked to the track, but the track is not linked to the spline. The spline is merely a search area to tell the track where to go next. It is a common misconception that moving the spline while tracking is affecting the movement of the tracking data. It is not. Moving the spline is only telling the tracker to look in a different place and will not directly affect the motion of the tracking.

This makes the tracker very powerful, as you can move and manipulate your spline area around while tracking to avoid problem areas or add more detail for the search.

You can even unlink the spline from the track entirely so that any planar surface passing under the stationary spline area is tracked and you don’t have to move the spline if tracking starts to go off screen.

Selecting an Area to Track

With the Planar Tracker you simply draw a spline around something, as shown with the screen below.

IPAD_Screen_001
  1. Select one of the spline tools to create a shape around the outside edge of the area you wish to track.

  2. Start creating your shape by clicking onto the screen.

  3. After the third point, the shape will auto-close, but you can continue to add points.

  4. When drawing splines it is best to keep the shape not tight on the edge, but actually give a little space to allow for the high contrast edges to show through, as these provide good tracking data.

  5. Right-click to finish drawing.

  6. If you are using the X-Spline tool you can adjust the handles at each point by pulling them out to create a straight cornered edge, or pull them in to make them more curved. Right clicking a handle will adjust all the handles in the spline at once.

Dealing With Obstructions or Reflective Surfaces

In some cases there are parts of an image that can interfere with the effectiveness of the Planar Tracker. To handle this, you can create an exclusion zone in the area you are tracking.

For instance, in the phone example we are using, there are frames where there are strong reflections on the screen. These reflections can make the track jump. So we need to isolate that area so the tracker ignores it. Here’s how this is done:

  1. Select the initial layer you created.

    LayerView_Selected_001
  2. Select the add shape tool to add an additional shape to the current layer, which selects the area you want the tracker to ignore.

    ToolAddXSpline 2x

  3. Draw this second shape inside the original shape. Note that both splines have the same color, which is an indication that they belong to the same layer. Also you will notice in the Layer Controls panel that you only have a single layer.

    IPAD_Screen_002
  4. By turning on the Mattes button under View Controls you can see the area that will be tracked.

    IPAD_Screen_003

You can also add as many entirely new layers on top of your tracking layer to mask out the layers below.

Note The tracking layer uses the matte data of the combined layers you have drawn. This matte is the outer edge of the tracking layer matte minus the inner edge of the layers in front, regardless of feathering.

This is quite common when moving people, limbs, cars, badgers etc. get in front of the object you are trying to track.

Tracking Parameters

In the Essentials layout, tracking Motion parameters are listed in the Essentials Panel:

mochaae essentials panel

In the Classic layout, detailed tracking parameters can be accessed by selecting the Track tab. On the left hand side of the Track tab, you will see two sections: Motion and Search Area.

Note Below, we show the Mocha Pro tracking parameters. Mocha AE and Mocha Hitfilm will only show the planar tracking parameters:
TrackOptions_001

Understanding the parameters section of the Track parameters is vitally important for obtaining good tracks. Here we provide a breakdown of each parameter and how to use it effectively.

Input Clip

This is the clip you are going to track. By default it is the one currently in the viewer.

Input Channel

When tracking, Mocha looks at contrast for detail. The input channel determines where to look for that contrast.

  1. Luminance looks for contrast in the light and dark of the image

  2. Auto Channel looks for contrast in one of the color channels.

  3. Red, Green and Blue channels look only in that one color channel for the detail.

By default, Luminance does a good job. If you have low-luminance footage or you are not getting a good track, try one of the color channels or Auto Channel.

Min % Pixels Used

One of the most important parameters to look at for tracking.

By default, the minimum percentage of pixels used is dynamic. When you draw a shape, Mocha tries to determine the optimal amount of pixels to look for in order to speed up tracking. If you draw a very large shape, the percentage will be low. If you draw a small shape, the percentage will be high.

In many cases, the cause of a drifting or slipping track is a low percentage of pixels. If you want a more solid and accurate track, try setting the Min % Pixels Used value to a higher amount. Keep in mind however that a larger percentage of pixels can mean a slower track.

Smoothing Level

This value blurs the input clip before it is tracked. This can be useful when there is a lot of severe noise in the clip. It is left at zero by default.

Motion

These parameters control what motion you are looking for when you track:

  • Translation: The position of the object

  • Scale: Whether the object gets larger or smaller

  • Rotation: The angle of rotation of the object

  • Shear: How the object is skewing relative to the camera

  • Perspective: How the object is moving in perspective relative to the camera

  • Mesh (Mocha Pro Only): Movement within the overall plane, such as distortion, warp etc.

The main difference between shear and perspective is the relative motion. Shear is defined as the object warping in only two corners, whereas perspective is most often needed where the object is rotating away from the viewer significantly in space.

As an example, if someone is walking towards you, their torso would be showing shear as it rotates slightly back and forth from your point of view.

The front of a truck turning a corner in front of you would be showing significant perspective change.

  • Large Motion: This is the default. It searches for motion and optimizes the track as it goes. Small Motion is also applied when you choose Large Motion.

  • Small Motion: This only optimizes. You would use Small Motion if there were very subtle changes in the movement of the object you are tracking.

  • Manual Tracking: This is only necessary to use when the object you are tracking is completely obscured or becomes untrackable. Usually used when you need to make some adjustments to complete the rest of the automated tracking successfully.

  • Existing Planar Data (Mocha Pro Only): This is only used when you want to add Mesh tracking to an existing planar track.

Search Area

This defines ranges for the tracker to search within

  • Horizontal/Vertical: The distance of pixels in the footage to search for the next object position. This is set to Auto by default.

  • Angle: If you have a fast rotating object, like a wheel, you can set an angle of rotation to help the tracker to lock onto the detail correctly. The tracker will handle a small amount of rotation, less than 10º per frame, with Angle set to zero.

  • Zoom: If you have a fast zoom, you can add a percentage value here to help the tracker. Again, the tracker will still handle a small amount of zoom with this set to zero.

Tracking the Spline

Before performing the actual track, adjust the settings depending on the movement in the clip.

Track the plane selected by pressing the Track Forwards button on the right- hand side of the transport controls section.

ICON_TrackPlaybar_001

Stop the track and adjust the shape if it doesn’t seem to be tracking properly. You may keyframe the spline shape so that it tracks only the planar region of a shape by adjusting the shape and hitting Add Key in the keyframe controls menu. Keep in mind that no initial keyframe is set until you first hit Add Key or move a point with Auto-Key turned on.

Checking Your Track

The spline should be tracked in addition to the clip being cached to RAM. You can play it back and get an idea as to how the track went. F
eel free to change the playback mode in the transport controls to loop or ping-pong your track.

Another trick you can do to check your track is hit the Stabilize button in the View Controls.

Stabilize 2x

Turning on Stabilize will lock the tracked item in place, moving the image to compensate. In the track module, stabilize view is a preview mode to check your track. Actual stabilization output is handled by the Stabilize Module, explained in the Stabilize Overview chapter.

The Surface

You can check the accuracy of your planar track by turning on the Surface (the dark blue rectangle) and Grid overlay in the Essentials panel or the toolbar:

ShowSurface 2x
  • Drag the inner corners of the Surface to match the perspective of your tracked plane.

  • Drag the edges of the Surface to adjust them along the matched perspective

  • Drag the points in the middle of the edges to scale horizontally or vertically

  • Click and drag the outer corners to rotate the Surface

  • Hold SHIFT and drag a corner to scale uniformly.

If you play the clip, you should see the surface or grid line up perfectly with the plane you tracked.

Important The Surface and Grid have no keyframes; they are simply guides that let you check the accuracy of your track. Note that the position of the Surface WILL affect the exported tracking data, so you MUST position the corners of the Surface before exporting tracking data.

Click on the Surface button in the Essentials panel or the toolbar.

ShowSurface 2x

When you turn on the surface you will see the blue box that represents the 4 points of the corner-pin. Right now you will see that it is not lined up with the screen.

IPAD_Screen_004

As described above, by selecting each corner one at a time you can adjust the surface area to cover the area of the screen,
or you can use the middle points to scale and the outer corners to rotate.

IPAD_Screen_005

The Grid overlay should line up with the plane you’re tracking and move with it as you cycle through the clip. You can change the density of the grid by adjusting the X and Y grid values in View | Viewer Preferences:

GRIDDividers_001

The grid overlay can give you a quick representation of the accuracy of the track.

IPAD_Screen_006

The Trace feature allows you to see the position of the planar corners over time. Skip allows you to work with only every nth frame, useful on particularly long roto shots where the movement is predictable.

IPAD_Screen_010
Important When you track a layer, the mattes of any active layers above the layer itself are subtracted from the matte of the layer and hence influence the area being tracked. To keep your tracking predictable, it is recommended that you keep your tracking layers on the top of the stack unless you specifically wish to use other layers to subtract from the tracking area of layers beneath it.

To monitor what the tracker "sees" as a tracking area, select the Track Matte button in the view control.

the Surface Right-Click menu:

You can modify aspects of the surface by right-clicking anywhere on the edges or the centre point.

Importing Mattes

Note This feature is only available in Mocha Pro

There may be instances where you have already created mattes for one or more objects in the shot, for example using a keyer or another roto tool that would help you isolate areas to track.

You can import such mattes by creating a new layer and then using the Matte Clip setting under Layer Properties to assign it to the layer.

Tips for Tracking

Scrub your timeline

When starting a new project, go through your footage a few times to see what your best options are for tracking. You will save yourself a lot of time by making note of obstructions and possible problem areas in advance.

Use edges

When tracking surfaces you will usually get a much better track if you include the edges and not just the interior of an object. This is because Mocha can define the difference between the background and the foreground and lock on better.

For example, if you are tracking a greenscreen, it is better to draw your shape around the entire screen rather than just the internal tracking markers. In some cases this means you can avoid tracking markers altogether and save time on cleanup later.

When in doubt, ramp up your pixels

You can quite often get a great result with default settings, but if you’re getting a lot of drift, try setting the Min % Pixels Used value higher. The processing can be slower, but you will usually get a much more solid track.

Draw more shapes

Remember you are not limited to one shape in a layer. Use a combination of shapes to add further areas or cut holes in existing areas to maximize your search. If necessary, make an additional layer to track and mask out foreground obstructions before tracking the object you need.

Use the grid while tracking

It’s common to use the surface and the grid to line up your corners after you track, but it can be much more advantageous to set up your surface before you track and leave the grid on to watch for any subtle drift while you are tracking. This way you can stop your track early to fix any issues and spend less time trying to find them later.

Track from the largest, clearest point

In order for Mocha to keep the best possible track, it is usually best to scrub through the timeline and find the largest and clearest area to begin tracking from, draw your shape there, then use backwards and forward tracking from that point.

For example, if you have a shot of sign coming toward you down a freeway, it is usually better to start at the end of the clip where the sign is largest, draw your shape and track backwards, rather than start from the beginning of the clip.

A planar surface does not necessarily have to be flat

We have a Planar Tracker which specifically tracks planes of motion, but this is not limited to tables, walls and other flat objects.

Distant background is considered flat by the camera where there is no parallax. Faces can be tracked very successfully around the eyes and bridge of the nose. Rocky ground, rumpled cushions, clumps of bushes, human torsos and curved car bodies are all good candidates. The key is low parallax or no obvious moving depth.

When in doubt, try quickly tracking an area to see if it will work, as you can quite often trick the planar tracker into thinking something is planar.

In the end, there is no magic bullet

Mocha is a very flexible tracker and will save a lot of time, but you will eventually run into a piece of footage that just will not track. Large or continuous obstructions, extreme blur, low contrast details and sudden flashes can all cause drift or untrackable situations.

If something just isn’t tracking no matter what you try, consider using Mocha to track as much as possible then move to manual work. You can often get a lot more done fixing shots by hand or using AdjustTrack in Mocha rather than trying to tweak your shapes and parameters over and over again to get everything done automatically.


PowerMesh and Mesh Tracking

PowerMesh is designed to help track non-planar surfaces. This is for both rigid and non-rigid surfaces that would otherwise be impossible to track with a regular planar tracker.

Rather than taking an optical flow approach (which can be slow to render and produce cumbersome files), we use a subsurface planar approach which is much faster to generate and track.

Important PowerMesh tracking currently does not support Stereo

Mesh Generation

To track a mesh, you first need to generate one.

The initial process is as follows:

  1. Draw a layer around the area you want to track
    powermesh tracking 001

  2. Choose the planar tracking parameters (translation, rotation, scale, shear and/or perspective)

  3. Then choose the “Mesh” parameter
    powermesh tracking 002

An initial Mesh is generated.

powermesh tracking 003

Then you can refine your PowerMesh with the following parameters.

powermesh generation column

Generation Mode

This dropdown contains two options:

  • Automatic: This determines the best mesh to use based on image information contained in the layer. Automatic is best paired with “Adaptive Contrast” to get the most detail.

  • Uniform: Generates a uniform square mesh insead of building based on the existing image.

Mesh Size

Mesh Size is the distance between vertices in pixels.

This means that the smaller the Mesh Size, the more potential mesh faces you will have. The larger the Mesh Size, the larger the faces and the less faces you will have.

A good starting point for Mesh Size is 32 for a HD or 4K image.

Vertices on Spline

This option makes sure the PowerMesh is generated to the boundaries of your layer spline, rather than just over the most interesting detail within it.

For uniform meshes, this option makes sure at least part of the mesh is overlapping the spline.

Adaptive Contrast

Adaptive Contrast boosts details in the underlying image to help the Automatic mesh generate the most useful vertices. Use with care! Sometimes you don’t want too much mesh detail.

Generate Mesh

This button generates the Mesh. Click it every time you change a Mesh generation parameter.

Clear Mesh

This button clears the Mesh from the layer.

Mesh Tracking

Once you have generated your mesh and you’re happy with it, you can move on to tracking.

The Mesh tracker first uses the standard planar tracking per frame and then applies the sub-planar track with the mesh.

Any mesh faces that fall outside of the spline or the image boundary are ignored. Those mesh faces become rigid and try to follow along with the existing mesh.

To perform a Mesh track:

  1. Generate a mesh using the method and parameters listed above

  2. Choose the planar motion parameters you want to use

  3. Choose the Mesh Tracking parameters

  4. Track forwards or backwards as needed

Note that choosing the Planar motion parameters is important. For example:

  • If the region you are tracking has significant perspective distortion, turn on Perspective

  • If the region doesn’t have much perspective shift, use Shear.

  • If the region doesn’t have much planar distortion, choose the lower order motion parameters only (Translation, rotation, scale)

The Mesh Tracking parameters help control how Mocha approaches the organic surface.

powermesh tracking column

Auto Smoothness

Turning this on tells Mocha to guess the amount of smoothness to apply to the Mesh track. See “Smoothness” below.

Smoothness

Also referred to as “Rigidity”, this value determines the amount of smoothness to apply to the Mesh when tracking.

  • A high smoothness is like applying starch to your Mesh. It will follow the planar track more rigidly and not distort as much.

  • A low smoothness will follow the subsurface movement more directly and distort the mesh more. In short, you will get more “wobble”.

As a general guideline, we recommend setting a lower smoothness for very warped or wobbly movement and a higher smoothness for more rigid objects that still have some distortion.

For example:

  • Faces: This varies, but a smoothness of 50 is about the right amount to balance facial muscles vs general face planes.

  • Liquid: A low smoothness (20-40) works well

  • Cloth: Variable depending on the stiffness of the material

Warp Spline

This option deforms the spline shape to match the movement of the Mesh while tracking. This is useful so that you don’t have to worry about animating the shape to keep the mesh inside the bounds of the spline.

As an added bonus, this also means it greatly reduces the keyframes needed to rotoscope an organic object.

Mesh Tracking with Existing Planar Data

track options existing planar data

If you want to track a PowerMesh using a layer you have only tracked with planar tracking (Translation, Rotation, Scale, Shear, and/or Perspective)
you can do so by using the "Existing Planar Data" radio button in the Motion options.

This avoids you having to redo the entire track from scratch with the Mesh.

This option is only available if you have selected the Mesh motion parameter.

To use Existing Planar Data:

  1. Track a layer using some form of planar motion type (Translation, Rotation, Scale, Shear, and/or Perspective)

  2. Create a new layer

  3. In the new layer, go to Layer properties and choose "Link to track" and select your tracked layer

  4. In the new layer, select "Mesh" and adjust your mesh parameters (see above)

  5. Select "Existing Planar Data" from the motion options

  6. Track forwards.

You can also do this for the same layer you are on without creating a new layer. Any planar tracked layer can have the Mesh applied later
and then simply be retracked using "Existing Planar Data".

Edit Track Mesh

The Edit Track Mesh button is in the Toolbar at the top of the Mocha interface.

ToolEditMesh

Selecting this turns on subselection in your mesh and you can move or delete vertices either before or after you have tracked the mesh.

To get out of Edit mode, click the normal selection tool.

After Tracking, You can animate the tracked mesh manually to fix points or make your preferred adjustments.
Animated meshes are keyframed for the whole set of vertices, rather than individual points. This makes it easier to keyframe states over time, similar to the spline default animation mode.

Add Vertex

ToolAddVertex

This tool appears when in Edit Mesh mode. When Add Vertex is on, click any Mesh edge to add a new vertex. A new edge will appear joining the created vertex and the vertex opposite.

Exporting Meshes or Mesh Warped Splines

Using PowerMesh, you can export:

  • Mesh-warped splines (or render their mattes): Export as normal for Shape data.

  • After Effects nulls (Adobe plugin only): In the Adobe plugin, there is a new section called "PowerMesh". Use this section to create nulls from selected layers. See Creating PowerMesh Nulls for more details.

  • Alembic tracking data as a mesh: The exports from the "Tracking Data" export options. Alembic is supported across many hosts. The data format includes the PowerMesh and a camera that fits to the source footage. See Exporting to Alembic for more details.

  • Nuke Mesh Tracker: This will export a single Tracker node for Nuke that contains a single tracker point for every vertex in the PowerMesh.

Tips for Mesh Tracking

Blue mesh faces

When tracking, if one of your mesh faces turns blue, this means the face has become flipped, normally because the area you are tracking has turned away from the camera.

Use more than one contour

You can use more than one contour to cut holes in the mesh generation. This is helpful if you want to ignore details in a surface, such as teeth in a mouth region or a tattoo that is taking up too much of the mesh detail.


Stereo Tracking

Note Please note that stereo features is only available in Mocha Pro

Tracking in Stereo is very similar to tracking in Mono. In fact we’ve designed it specifically to be as transparent as possible to those used to the standard Mono workflow.

To track a stereo clip automatically:
  1. Select your hero view (By default this is the Left view)

  2. Draw your shape as you would normally in mono mode (See Mocha User Guide for an introduction to mono Mocha tracking techniques)

  3. Press the "Operate in all views" button on the right side of the tracking buttons.

  4. Select your tracking parameters as normal

  5. Track forwards (and/or backwards if required).

Operate All Views

If you now switch between Left and Right views you will see the Right view has automatically been tracked and offset from the Left view.

Manual Stereo Offset

If you would prefer to only track and work with the Hero view initially then offset your data manually, you can also do this using the Stereo Offset tab in Track.

To track and manually offset a view:
  1. Select your hero view (By default this is the Left view)

  2. Draw your shape as you would normally in mono mode (See Mocha User Guide for an introduction to mono Mocha tracking techniques)

  3. Make sure the "Track in all views" button on the right side of the tracking buttons is switched off.

  4. Select your tracking parameters as normal

  5. Track forwards (and/or backwards if required).

This will only track the current view you are on. If you switch to the other view you will see the layer still moves with the track, but is not offset like when you do an all-views track.

You can then use the Stereo Offset parameters in the Track module to offset your view.

Stereo Offset

If you decide later that you want to track the non-hero view, you can do so by selecting the non-tracked view then track as normal.

You have the following options in the Stereo Offset tab (see above) when tracking another view based on the hero view:

  • Track from other views: This will reference the existing track to help track and correctly offset the current view.

  • Track this view: This will reference the current view to get the tracking information.

Note that by default these are both selected to give best results. If you only use Track this view and not Track from other views, the current view will be tracked independently of the hero view and will not offset.

You can also open existing mono projects that have additional views and track them without having to manually offset. Just set the mono project to Multiview in the Project Settings and add the additional footage streams to the clip.

Offset Frame Tracking

For simpler tracks, you can also do a technique called "Offset Frame Tracking" which is a combined stereo track and hero track.

To perform an offset frame track:
  1. Select your hero view (By default this is the Left view)

  2. Draw your shape as you would normally in mono mode (See Mocha User Guide for an introduction to mono Mocha tracking techniques)

  3. Turn ON the "Operate in all views" button on the right side of the tracking buttons.

  4. Select your tracking parameters as normal

  5. Track ONE frame forwards (You can track more if you prefer, but only one is required)

  6. Check the track in both views to verify the stereo offset has occurred correctly

  7. Turn OFF the the "Operate in all views" button on the right side of the tracking buttons.

  8. Continue tracking forwards with just the hero view

If your initial stereo track was offset correctly, that offset will then carry onwards through the rest of the track.
Keep in mind that things like convergence and disparity in the moving stereo image may not work accurately in this scenario,
but it will increase performance of the process because you only have to track one eye.

You can also then apply additional manual stereo offsets as described in the manual offset section above.


AdjustTrack

Overview

There will be times when tracks can drift due to lack of detail or introduction of small obstructions.  When this occurs, manual refinements can be made by using the AdjustTrack tool.

AdjustTrack is primarily used for eradicating drift by adjusting reference points to generate keyframable data to compensate.  It is generally not practical to use it to remove jitter.

To achieve an adjusted track you would ideally line up the surface area where you want to place your insert or lock down your roto.

In situations where you don’t require an insertion you could place the corners of the surface area in distinctive locations.

The Transform AdjustTrack is designed to be an easier user experience from the Classic AdjustTrack (see below) by removing the need to use the surface as your alignment tool.

In Transform AdjustTrack you can adjust based on specific transforms with as many reference points as you require.

adjusttrack transform parameters

Setting up reference points

You can set reference points either as a template for the kind of adjustment you want, or add them yourself as needed.

Note We recommend turning off the splines view (i.e 'Show Layer Outlines') during adjusting the track so you can see the adjustment of points clearly.

adjusttrack transform reference points

Transform Type

The transform type is used to set up the method of Adjustment you want to use for the shot.

Each checkbox sets a different number of points when you click “Set Points”

  • Translation: Sets one point for x/y translation

  • Scale/Rotation: Sets two points to rotate or scale between points

  • Shear: Sets 3 points for allowing skew/shear adjustment

  • Perspective: Sets 4 points for full 4-point corner-pin style perspective adjustment.

Note that the Transform selection works very similar to the Motion type in the Track module. When you select a motion type further down the list, it will automatically select the ones above it in order for the tracking keyframes to be adjusted predictably.

You can opt to turn off the default-selected transform types later if you need to do a specific adjustment.

After you have chosen the type, click 'Set points' to create the points. You can then adjust the reference points (see below).

adjusttrack transform perspective template

Reference Points

  1. You can add more points to your adjustment as required. Each point contributes to the adjustment of the plane based on the position of the other points.

  2. You can select between the points using the cursor or cycle using the select <> buttons.

  3. Position your points on easily identifiable areas

  4. Once you are happy with the position of the points, click “Set Reference Frame” to define a frame to look to when adjusting forwards or backwards from that point.

adjusttrack transform new point

Adjusting points

Once you are happy with the points positions and have set a reference frame, you can start moving back and forth on the timeline adjusting the points for drift.

Each point adjustment sets a key frame for every other point in the shot to avoid unwanted distortions.

adjusttrack transform keyframe

You can see the original reference frame for the selected point in the zoom window in the upper left of the viewer and the current frame in the window below that.

adjusttrack transform zoom windows

Surface View

adjusttrack transform surface view

While you are adjusting, you can click one of the “Surface View” corners to see how the surface itself is adjusting to your changes. This is helpful if you are ultimately planning on using the surface as your export area and want to make sure it is still lining up.

Nudge

adjusttrack transform nudge

Nudging is used to adjust the track by pixel increments. This helps when adjustments are too subtle to be done by mouse movement.

Each arrow nudges in the indicated direction. You can either click and hold the button or use the shortcut keys to nudge.

The 'Auto' button in the middle of the direction grid tries to guess where the point needs to be.
It can be useful to start with 'Auto' to attempt to place the reference point first, then adjust manually.

Auto Nudge

adjusttrack transform autonudge

Auto Nudge takes the 'Auto' action above and lets you use it space adjustments over the whole shot.

If you set 'Auto Step' and define a frame step you can then 'Track' the Auto Nudge using the tracking buttons in the timeline. Auto Nudge will then nudge the selected reference points at the frame step interval set.

The Search fields define how far Auto and Auto Nudge look for the area the point needs to adjust to.

Note Auto Nudge is useful for quickly going through a shot to help pace adjustments. It is not recommended to be used as a solution for finishing adjustments.

Exporting

You can export adjusted tracks as normal via the file menu or via the Track module just like any regular track.

AdjustTrack Classic

We’ve kept the old-style of AdjustTrack for those who prefer to it, or if you are working with legacy projects.

This version of AdjustTrack is primarily used for eradicating drift by utilizing the four-corner surface area to generate keyframable data to compensate.  It is generally not practical to use it to remove jitter.

Starting the Track Adjustment

When you have the Surface where you want it to stay locked and are ready to refine the track, flip over into the AdjustTrack module by hitting the AdjustTrack tab.

Then switch to the Classic tab.

AdjustTrack 001

Reference Points

Once you select the Classic AdjustTrack tab, a key frame with four reference points is created.

Note You should be on your desired primary frame before selecting the AdjustTrack tab. The reference points can then be positioned on distinctive features, such that any drift in the track can be easily seen and corrected.

IPAD Screen 008

As you play though the sequence you will be able to manually adjust the position of each point as drift occurs.

If your track is spot on, these reference points should line up properly throughout the shot. If you see a Reference Point drifting, that will indicate the track is drifting. Find the frame where the drift is worst and move the Reference Point back to the position it had in the Primary Frame and the track will automatically be adjusted based on your correction.

Reference Point Quality

When you perform an adjust track and you begin to move a newly created reference point, you will notice the dashed lines which connect all of the reference points. These lines change in color to represent the quality of positioning of any given reference point. For best results keep reference points away from one another.

SelectionGuide 001

When adjusting the track try to always get at least yellow but shoot for green for a more solid adjust track.

The red lines indicate that this reference point position is a poor choice.

IPAD Screen 009

The green lines indicate that this reference point position is a good choice.

IPAD Screen 010

AdjustTrack with More than Four Reference Points

Often there are times where your reference points are either obscured or exit frame. In AdjustTrack you have the ability to create multiple reference points per surface corner that can be positioned in alternate locations to handle these situations. Simply click the New Ref button to create a new reference point for the selected corner.

You cannot keyframe the Surface — only the Reference Points. The original track and any refinements you make in AdjustTrack cause the Surface to move however.

Working Backwards

Every so often a shot will come along that is easier to track backwards than forwards. This is fairly simple when running the tracker backwards, but introduces some rather obtuse concepts when keyframing is involved. This is why there are two "New Ref" buttons provided. If you are working backwards and wish to set a new reference point, you will probably want to use the "<- New Ref" button instead of the forward-thinking "New Ref ->" button.

AdjustTrackRef 001

Because keyframing "thinks" forward, hitting "<-New Ref" will not create new Primary Reference points on the current frame, but will go backwards in time, looking for any existing keyframes and set new Primary Reference points on the frame directly after. For example, if you decide to create a new backwards reference point at frame 20, a new primary reference will be created at frame 21.

Some people may be more comfortable doing this manually by moving the playhead themselves and using the traditional "New Ref ->" button. Others who do a lot of tracking and find themselves working backwards often may find the backwards-thinking New Ref button helpful.

About Primary Reference Points (the red X)

Every Reference Point has one frame in which its initial placement is determined without causing any adjustment to the track. This is called the Primary Reference Point; if you step forward or backward in time you will notice the red X change to a red dot.

AdjustTrackRefCorner 001

The red X indicates that this particular frame is the starting point for calculating adjustments. Moving a Primary Reference Point will NOT change the tracking data.

Go ahead and experiment - move the Reference Point when it is a red X (a Primary Reference Point). You will notice the Surface isn’t adjusted at all. Step forward a frame and move the same point - this time the surface will move because you are now adjusting the track.

Changing the Primary Frame for a Reference Point

By default, the frame in which you create a Reference Point is its Primary Reference frame. This Primary Reference can occur on a different frame for each reference point. You can change the Primary Reference frame by selecting a Reference Point, going to the appropriate frame and hitting the "Set Primary" button.

AdjustTrackSetPrimary 001

You may set a new Primary Reference Frame for all active points by hitting the Set Primary All button.

AdjustTrackSetPrimaryALL 001

Selecting Different Reference Points

One method for selecting different reference points is to hit the "Next" button.

AdjustTrackNEXT 001

The next button simply cycles through the active reference points for that frame. More fine-grained control of reference points can be obtained through the Nudge control panel, described below.

Deleting Reference Points

Deleting Reference Points is done by selecting the point you wish to remove and hitting the delete key. If there are multiple Reference points on a particular corner, the preceding Reference Point will be extended through your time line until a new Reference point is encountered.

Nudging Reference Points

The Nudge section allows you to move Reference points in 0.1 pixel increments, much more fine grained than would be possible by dragging the points manually. You can easily select any active Reference Point by selecting one of the corner buttons in the Nudge section.

AdjustTrackNUDGE 001

If you hit the Auto button, a tracker will attempt to line up the selected Reference Point based on its position in the Primary Reference frame. The Search Region Size and Maximum Motion parameters can be set in pixels in the Auto Nudge section.

You can quickly select any corner by using the Corner selector buttons in the Nudge control panel. In the image below, the user is selecting the upper right corner in preparation for nudging operations.

View Options

The AdjustTrack tab has a View section for cleaning up your AdjustTrack workspace. Deselecting the Inactive Traces button will cause the display to hide the traces of the inactive Reference Points. This is helpful if you have a corner with numerous Reference Points offsetting it.

Deselecting the Unselected Traces button will hide any Reference Point that is not selected.

Finally, deselecting the Search Area button will hide the Search Region Size (in Yellow) and the Maximum Motion search area (in Pink).

Tips for AdjustTrack

Adjust frames at the peak of drift

When you see a drift, carefully cycle through the timeline and look for where the motion starts to change direction. A frame before this, adjust your drift, then go halfway between your primary frame and the adjusted frame to check for any further drift.  If you keep working by checking halfway between each keyframe you set, you will reduce the amount of keyframes required.

A huge amount of keyframes is not a good sign

If you end up with adjustment keyframes on a large amount of frames it may be better retry the track.  AdjustTrack is aimed to help reduce small anomalies and fix drift when a tracked corner has become obscured.  If you are fixing every second keyframe it means you have more than a simple drift.


Rotoscoping Basics

Note Some tools, parameters and techniques listed below may not be visible in Essentials mode. To see additional interface elements, switch to Classic mode. See the Layouts section for more information.

The Art of Rotoscoping

Most often a good matte requires a combination of both keying and rotoscoping techniques.

Good rotoscoping artists often think like animators, reverse engineering the movements, the easing in and outs, the holds and overshoots of objects, and set their keyframes accordingly.

In general, the fewer the keyframes, the better your mattes will look. Too many keyframes will cause the edges to 'chatter' and move unnaturally. Too few keyframes will cause the shapes to drift and lose definition. Finding the right number and placement of keyframes often comes with experience but there are a few things to keep in mind when rotoscoping.

Traditional Roto Tips

  1. There is no such thing as a perfect matte. Rotoscoping is an art form that takes into account the background image, the movement of the object, and the new elements to be composited in the background.

  2. Try to start your shape at its most complex point in time, where it will need the most control points.

  3. Break a complex shape into multiple simple shapes. If you are rotoscoping a humanoid form and an arm becomes visible, consider rotoscoping the arm as its own element, rather than adding extra points on the body that will serve no purpose when the arm is obscured.

  4. Imagine you are the animator who created the shot. What would your dope sheet look like? No matter the medium, whether CG, live action or otherwise, most movements are rarely linear. They normally move in arcs; they normally accelerate in and out of stopped positions. Try and understand the mechanics behind how things are moving in your shot. This will help you to minimize keyframes.

  5. Watch and study the shot before you start working. Where are the changes in directions? These will normally have keyframes. Where are the starts and stops? Are there camera moves that can be stabilized to make your work easier?

  6. Don’t be afraid to trash your work and start over. Beginning roto artists often make the mistake of trying to fix a flawed approach by adding more and more keyframes. Experienced roto artists learn to quickly identify an inferior approach and are unashamed to trash their work and start over, often many, many times. It is very difficult to get a good matte without a conscious effort to keep the keyframes to a minimum.

Mocha Tracking and Roto

While you can refine a shape you have tracked to do your rotoscoping, the recommended way is to do a rough shape to track something and then link your roto to that track. This reduces the amount of work required when you are dealing with complex shapes, as you will not have to track and refine each shape as you go. It also means that if you have to retrack something you won’t have to redo a lot of layers. Another reason is reducing the amount of data needed in your project file.

It also helps to remember that your spline shape is linked to your tracking data and not the other way around.

For the following examples you can try out the tools using the BMW tutorial files
available from https://cdn.borisfx.com/borisfx/store/mocha-clips/rotoscoping.zip

Rotoscoping Workflow

1. Track the area you want to rotoscope

First of all you want to reduce as much manual work as possible by tracking. In the example below, the front and side plane of the car is being tracked (For a more detailed coverage of tracking, see the Tracking Basics documentation).

ICON TrackPlaybar 001

2. Turn off your tracking shape

Once you’ve tracked an area it can be useful to turn it’s visibility off, as well as it’s tracking cog (so it can’t be accidentally retracked later). This means the tracked shape will not be confused with any roto shapes you are making.

3. Start drawing your refined shapes

Once you have a track for a layer we recommend that you add a new layer to use for the actual roto spline, rather than refining the spline you used for the actual track as you might need to do more tracking with it later.

roto 014

Roto DrawingTools 001

Select the X spline or Bézier spline tool and draw a tight spline around the object you are rotoscoping. Ctrl/Cmd+drag the Bézier tangents if you wish to break them. You will see that a new layer is automatically created.

4. Link the new roto layer to your tracked layer

You don’t want to track with this layer, so disable tracking for the layer by turning off the tracking button (the cog) for the layer in the Layer Properties panel.

Rename the new layer and link it to the movement of your already tracked layer by selecting it from the 'Link to Track' dropdown in the layer properties panel.

Roto LinkToTrack 001

Your newly created roto spline will now follow the motion of the linked track.

5. Refine your roto

Now you have linked the rotoscoping layer to a track, you need to go over the timeline and make sure the roto is correctly animated.

Often you will need to tweak your shape for it to fit correctly, adding new keyframes. Autokey is on by default, so you just need to move along the timeline and adjust your points where necessary (keyframes turn up in the timeline as green dots). The tracking data will help for the majority of the motion.

Timeline 001

You can also add additional shapes to the same layer using one of the "Add Spline to Layer" tools. These are the drawing icons with the plus sign next to them ("+").

Roto DrawingTools 001

You can cycle between each point on a spline with the keyboard shortcuts '{' and '}'. This is useful for when you need to do minor adjustments across many points separately.

6. Feather your edges if necessary

Edges can be feathered either by dragging out feathers point by point using the edge pointer tools in the toolbar or by using the parameters in the Edge Properties panel.

roto 017

In the toolbar you have four different pointer tools:

  • The pointer tool with the 'B' will move both the inner and outer spline point (‘B' = ‘Both')

  • The 'I' pointer will only move the inner spline

  • The 'E' pointer will only move the outer spline point (‘E' = ‘Edge'). A feathered edge will occur between the inner and outer spline points

  • The 'A' pointer will remove either the inner or outer point depending on which is selected (‘A' = ‘Any')

You can also use the Set button under Edge Properties to feather the edge at the selected point(s) an exact amount or use the Add button to increase/decrease the feather by the specified amount.

Roto EdgeProperties 001

For example, if you deselect all points by clicking anywhere on the canvas you can then use the Set button to apply the default 3 pixel edge width. Because no points are selected the value is applied to all points on the current layer. You can then tweak the position of all spline points to ensure that the inner (red) spline is inside the edge and the outer (blue) spline is outside the edge.

7. Track additional sections as you go

In many instances one track will not be enough. You may need to track more than one plane to drive different sets of roto. In the car example, we have to track the front and the side to get an accurate track for each planar region to assist the roto effectively.

In the case of organic shapes, like people, you will have to break your tracks down to handle the different movement between the torso and the arms etc.

What’s the Überkey?

The Überkey is a powerful tool that allows you to offset the positions of control points without destroying their keyframe data.

Roto Uberkey 001

Use this tool with care, as it is not setting any keyframes per se, it is offsetting any and all keyframe data on the points you move while it is on. Überkey is very useful, but remember to turn it off again when you don’t need it. Use with care.

Überkey affects only those frames between the timeline’s In and Out point. If you wish to make adjustments to a particular range, set the In and Out points to that range.

Translate, Rotate and Scale your Splines

You can translate, rotate and scale selected points as a group by using the corresponding tools listed in the toolbar.

ToolRotate 2x
ToolScale 2x
ToolTranslate 2x

Or alternatively, use the transform tool to perform all of the above functions in the same tool:

ToolTransform 2x

Turning On and Off Points

You can turn on and off individual points in a spline. When they are off, you can still see the points, they can still be animated, but they are not contributing mathematically to the spline. This allows you to have a complex spline only when you need it, rather than having to deal with superfluous points in parts of the shot when they are not needed.

roto 028

To turn off points, select the points on the spline and hit Shift+Delete. You will see the curve change shapes, but the points will remain.

Roto ActivatePoint 001

To turn a point back on, right-click on it and select Point | Activate.

If the Autokey button is enabled, a keyframe will be created when you change a point’s active status.

Add Motion Blur [Mocha Pro Only]

Roto EdgeProperties MotionBlur 001

You can use the movement of the individual spline points to determine motion blur.
Any movement in the spline, whether through simple X/Y translation or by shape deformation will cause motion blur.

You can control the amount of blur by changing the motion blur value in the Edge Properties panel.

Angle
This essentially controls the amount of motion blur for the layer.

Angle simulates how long the shutter is open for if we were viewing through a real camera, so the range is between:

  • 0 (closed, which means no motion blur)

  • 360 (fully open and therefore the maximum motion blur possible).

The reason we refer to angle as opposed to "amount" is that camera shutters used to open with a rotary action, so a smaller angle would let in less light, and thus reduce motion blur.

Phase

This controls the offset of the motion blur from the current frame.

Changing Phase from zero shifts the position of the motion blur to either be more ahead or behind the currently calculated frame and is useful for tweaking motion blur that isn’t quite sitting right.

Because Phase is based on the shutter angle you can adjust between the range -180 and 180 (i.e a range of 360 like the shutter angle).

Quality

The steps of motion blur you want to render. The lower the quality, the faster the render speed. The default is 0.25 but can go as high as 5.0.

Changing the Matte Blend Mode

Although not necessary in this example, note that you can change how mattes are blended in the Layer Properties panel. You may make each layer’s matte Add or Subtract and you can also invert the matte.

Roto BlendMode 001

Note that this can’t be keyframed and that these settings apply to the entire layer, not to individual splines of the same layer.

Viewing your Mattes

In the View Controls, several options are offered for viewing your mattes. The Matte drop down is has options to view all mattes, just the mattes you have selected or no mattes.

ICON Mattes 001

Select the Matte button and you will see your rotoscoped object against a flat background.

Changing the Background Color

You may wish to rotoscope against a particular color. Select View → Canvas Color…​ and a color picker will allow you to choose a particular background color

Roto CanvasColor 001

Colorize your Matte Overlay

When you have your Mattes turned on, you may choose for the matte to be filled with a color instead of cutting out the object, using Colorize.

roto 034

You can adjust the opacity of the color fill by changing the blend value to the right of the Colorize button.

ICON Colorise 001

The color used by Colorize is derived from the Selected and Unselected properties of the Overlay Colors panel, which can be changed per layer.

This is only a preview and will not affect how your mattes are rendered when exporting.

Hiding splines or points

If you want to get a better view of your roto, you can get a better view by turning off some overlays.

For layer spines:

  1. Select your layer and turn on the Mattes button (Show Layer Mattes)

  2. Uncheck the Splines option in the 'Show Spline Tangents' dropdown

For points:

  1. Right-click the spline

  2. Choose Layer > Hide points

Hiding points will still allow you to adjust the layer with the transform tool.

Preview Rendered Mattes [Mocha Pro Only]

In the View Controls panel, you will find a drop-down menu for selecting the clip to view.

Roto PreviewMattes 001

This allows you to view the actual rendered mattes, which can be especially useful when tweaking motion blur. The motion blur you normally see in your canvas is an OpenGL preview and can differ slightly from the actual render.

If you’d like to see what the actual motion blur render looks like, switch to viewing the layer whose matte you wish to see.

Because you can choose specific layers for export when you render, a render pass is created for each layer.

roto 038

Switch the View Clip drop-down back to your source clip to continue working with that clip.

Open Splines

If you want to draw open splines, you can simply hold shift when you right-click to finish the spline. This will open the shape up.

Existing shapes can also be made open or closed:
  • You can open an existing shape using the Open Spline shortcut key (by default this is 'o')

  • You can close an existing shape using the Close Spline shortcut key (by default this is 'c')

  • Both the Open and Close shortcuts also work for finishing a spline rather than using Shift + Right-Click

You can also right-click a spline and choose: Spline | Open/Close Spline

Tips for Rotoscoping

Name your layers

Naming layers is very important to save yourself time later, especially if you are doing a heavy rotoscoping job. Get into the habit of labeling each layer with specific names.

Turn off the splines and just work with points and the matte

If you are working on a tight roto it can sometimes be easier to turn the spline off and just see the matte with the control points. To do this:

  1. Select your layer and turn on the Mattes button (Show Layer Mattes)

  2. Uncheck the Splines option in the 'Show Spline Tangents' dropdown

If your other view options are at default settings you should now see the matte in the viewer with only the tangents and control points visible.


Rotoscoping with Magnetic and Freehand Tools

The magnetic and freehand tools provide an easy way to quickly roto an object.

The Magnetic Tool

MagneticShapeToolXSpline 2x

The Magnetic Tool draws a pixel line that snaps to the nearest edge to where the cursor lies, tracing the shortest path from any previous click.

To use the Magnetic Tool:

  1. Select the tool from the toolbar.

  2. Click once near the edge you want to start with

  3. Move your cursor along the edge you want to follow

  4. Click once any time you want to anchor the currently drawn path along the route

  5. If there is a tricky section of the edge that the magnetic tool doesn’t want to line up to,
    you can press and hold the mouse/pen down and the tool will switch to Freehand mode.

MagneticShapeTool Example 001

(Image courtesy of LateNite Films)

Similarly, if you go off the edge of the frame, the magnetic tool will also switch to Freehand mode,
so you can freely continue the shape.

The Freehand Tool

FreehandShapeToolXSpline 2x

The Freehand pen tool is exactly like the Magnetic tool, minus the magnetic properties.

This gives you the freedom to quickly draw any line.

You can access the Freehand tool in the same tool drop down as the Magnetic tool, but also any time you
press and hold the mouse/pen down in the Magnetic tool, or go off the image frame.

Finalising a Drawn Line

One you have completed a drawn line, you can either click back on the original point, or right-click.

This will generate an X-Spline that follows the originally drawn line.

MagneticShapeTool Example 002

(Image courtesy of LateNite Films)

Adjusting Detail

X-Splines generated by the Magnetic and Freehand tools have a fairly high point count to match the subtle changes in the line.

MagneticShapeTool Example 003

If you want to increase or reduce this detail:

  1. Finish drawing the line and right-click. This will automatically switch your cursor to the selection tool.

  2. With the completed layer selected, choose the Magnetic or Freehand tool again.

  3. The Detail parameter will enable in the Layer Properties panel

  4. Adjust detail to increase or reduce the number of spline points

Important Adjusting the detail of a magnetic or freehand line will move the points back to their original positions to re-fit the line.
Warning Animation or extended editing of a magnetic or freehand layer spline may permanently convert it to a regular spline.

Edge Snapping

You can snap the control points of any spline to edges of an object by using the Edge Snapping tool.
By default, this is the 'Alt+S' keys.

To snap to an edge:

  1. Select the points you want to move

  2. Press the 'Alt+S' key once to snap

Alternatively hold the 'S' key and drag the points.

The selected points should then move to snap to the nearest detectable edge.

Keep in mind this will naturally try to find the most visible edge, so in some cases snap may not find the edge you want.
In these cases it may need to be adjusted manually.


Painting Splines with the Area Brush Tool

The Area Brush produces X-Splines based on paint strokes in the viewer canvas.

You can also paint on an existing layer with the "Add" paint brush.

Paint strokes that cross over an existing layer spline will intersect with that spline, or subtract from it if you are using the alt modifier key.

Note Area Brush is currently a single-frame paint effect. It is not keyframeable.

Painting new layers with Area Brush

You can select the Area brush from the toolbar:

areabrush toolbar

ICON AreaBrushToolXSpline

Selecting the area brush reveals the Area brush settings further down the toolbar:

areabrush settings

You can now paint on the canvas and a red paint area will appear.

areabrush paint

Once done, you can turn off Quick Mask if it is on or just release the mouse button and a spline will be generated.

areabrush spline

Adjusting the size of the brush

You can adjust the brush size using either:

  • The radius keys (by default this is '[' and ']').

  • Holding down the CMD/Ctrl key and dragging the cursor

  • Editing the radius field directly in the Area Brush toolbar

For finer control, the brush size will also change according to the set pressure sensitivity from a drawing tablet.

You can turn off pressure sensitivity from Preferences.

Quick Mask

By default, Quick Mask is turned on.

Quick Mask stops the Area Brush tool from generating a spline as soon as you release the mouse or lift the tablet pen
Once you have painted what you need, you can turn Quick Mask off by pressing the button and the spline will be generated.

Fill Gaps

If you want to quickly fill smaller gaps, you can adjust the "Fill Gaps" field.

The number in the field is a pixel diameter. Any gap in a closed painted area that is smaller than the number in the field will be filled.
For example:

areabrush settings

  • A Fill Gap diameter of 1 will only fill tiny gaps.

  • A Fill Gap diameter of 1000 in a 1920x1080 image will close very large gaps.

A large fill gap setting is useful for quickly circling an object with paint to make a filled spline.

Add Area Brush to Layer

The Add Area Brush will add new paint-generated splines to the selected layer.

ICON AreaBrushToolAddXSpline

The tool is under the main Area Brush icon. Just press and hold the toolbar icon to select the brush from the list:

areabrush tool selection

Then you can paint on the existing spline:

areabrush addspline

Once done, you can turn off Quick Mask if it is on or just release the mouse button and the resulting spline intersect with the existing layer splines:

areabrush addspline result

Erase

In both Quick Mask mode and normal painting mode, you can hold down the alt/option key to switch to erase mode.

In Quick Mask mode, this will erase existing paint:

areabrush erase

If Quick Mask mode is off, this will erase the existing spline if you are using the Add Area Brush tool. Just paint as normal holding down the modifier key:

areabrush addspline minus

When you release, the erase will eat into the existing spline:

areabrush addspline minus result


Stereo Rotoscoping

Stereo Roto works in a very similar fashion to stereo tracking.

To roto an object in stereo with tracking:
  1. Select the hero view (by default this is Left)

  2. Draw a new basic shape and track the object you want to rotoscope as outlined above in "Stereo Tracking"

  3. Draw a new refined roto layer around your tracked object

  4. Click the "Link to track" drop down in Layer Properties and choose the previously tracked layer

  5. Continue to refine the Hero view roto until you are happy with that view

  6. Switch to the non-Hero view and begin refining this view.

When you switch to the non-Hero view the rotoscoping will be offset by the tracking data. While this will not completely refine the result, it will save you a lot of time.

Whenever you manipulate a control point in the Hero view it will offset that control point in the non-Hero view.

When you start to tweak the non-Hero view it will also generate new keyframes for that view only and will not affect the Hero view. You can see these keyframes represented in the timeline by split left and right keys.

Left Right Keys

If you wish to directly modify the control point in both views when working in either view, you can turn on the "Apply Keyframe Changes to All Views" button at the very end of the timeline controls to the right.

Important If you insert additional points to a shape while in the non-Hero view, they will be automatically deactivated in the Hero view to avoid destroying the work done in the Hero view.
You can reactivate these points in the Hero view by right clicking them and choosing "Point > Activate"

Working with Difference Mode and Stereo Offsets

If you need to offset your tracking or roto manually (see below), you can use the Difference 3D view to help align the layer.

To align using Difference Mode:
  1. Select the layer you want to align

  2. Turn on Difference mode.
    4.0.0 Difference Mode

  3. Go to the Stereo tab in the Track module

  4. Select your Non-Hero View.

  5. Offset X and Y until the screen gets as close to blank middle grey as possible. You can optionally also adjust the other Stereo parameters.
    Stereo OffsetX Position Lining Up Difference
    4.0.0 Lining Up Difference

  6. Turn off Difference view and review your results on your Non-Hero view.


Exporting Tracks

Note Some sections only relate to Mocha Pro. Some export features are not available in Mocha HitFilm or Mocha AE. For a full comparison of features, please refer to the comparison chart online.
Warning Tracking data is not supported across 360 seams and poles when using VR features and may not export as expected.

Exporting data is the most useful way to get your tracks out to other applications.

In all cases below, you can export either from:

  • The Essentials Panel:

    export tracking data essentials

  • The Export buttons in the Track and AdjustTrack Modules:

    export tracking data trackmodule

  • Or the file menu:

    export tracking data filemenu

Exporting Tracks to Adobe After Effects

Important It is important that the clip length, frame rate, frame size, interlace mode, pulldown mode and pixel aspect ratio in the project match the corresponding settings in the After Effects project where you plan to use the data. You can change the frame rate and pixel aspect ratio settings in the Film and Time sections of the Clip tab.

To export tracking data to After Effects, press the Export Tracking Data button.

Then choose either:

  • After Effects Corner Pin

  • After Effects CC Power Pin

  • After Effects Transform Data.

export ae CornerPin 001

After Effects Corner Pin:

The corner pin data records and exports the 4 point x, y information from either the adjusted track or the raw track.
There are three different types of corner pin exports – two for recent After Effects versions and one for CS3 and older versions of After Effects.

After Effects CC Power Pin:

The Power pin data is very much like corner pin, but the exported effect gives you more control over the results in After Effects.
See the After Effects help for more information on how to use CC Power Pin.

After Effects Transform Data:

The transform data exports x and x positions as well as the scale and rotation for the whole surface.

If you click Save, this will display a file browser for saving the tracking data for use later. By default, the files will take the name of the layer, so for a layer name Track_Layer the export will create a file named "Track_Layer.txt".

If you don’t need to save the export, you can press Copy to Clipboard, and then go straight to After Effects and paste the data. If you are saving to file you will need to open the text file you saved with the data, select the entire body of text and copy it.

In After Effects, load the footage you tracked and the footage/image/composition you wish to apply the transform or corner pin data to.

export ae Timeline 001

Select the item on the timeline that is the insert object. Paste the data to the selected layer. You can do this by selecting the ‘paste' option in the edit menu or by typing 'command- v' (Mac) or 'ctrl-v' (Windows).

export ae Timeline 002

With the layer’s information expanded you can see either the 4-point tracking data for the corner pin, or the position, rotation and scale information from the tracking is now applied to the insert layer.

If you are pasting transform data rather than corner pin data then you will need to delete the anchor point keyframes to see a result. We export both position and anchor point keyframes so that stabilization or tracking can be achieved. See below.

Applying Corner Pin for Layers with different dimensions

If your insert is not the same size as the dimensions of the composition in After Effects, you will need to take a few further steps to make sure your corner pin data fits correctly. The reason for this is that tracking data is basing itself on the relative size and aspect ratio of the footage, whereas After Effects treats the corner pin data relative to the size of the layer you are applying it to.

To get around this, you can take the following steps to modify the insert layer in After Effects:

  1. Precompose the layer and move all attributes into the new composition.

    precompose ae

  2. Open the Precomp you just made and fit the layer to the composition dimensions (Layer | Transform | Fit to Comp).

    fittocomp ae

  3. Go back to the original composition, select the precomposed layer and paste the data.

Alternatively you can use Align Surface in Mocha to define the full dimensions:

  1. Apply a manual corner pin to your insert layer in After Effects and place it in the desired position for any frame.

  2. On this frame, Precompose the layer and make sure all attributes are inside it.

  3. You will now have a precomposed layer that is the same dimensions as the tracked footage.

  4. In Mocha, go to the same frame in the footage you applied the corner pin to in After Effects and select the track.

  5. On this frame, turn on your surface and click "Align Surface" in the Layer Properties panel.

  6. You will see the surface fit to the full dimensions of the footage.

  7. Export this newly aligned track to After Effects corner pin.

  8. Back in After Effects, select the precomposed layer and paste the data.

This will apply the tracking data relative to the full dimensions of the footage instead. If you need to adjust the insert, just open the precomposed layer and tweak the manual corner pin you made.

Using Tracks For Stabilizing In After Effects

You can use the tracking data created to stabilize a shot in After Effects.

  1. Track your footage as normal, then turn on the Surface button and center the surface box on the area you wish to use as the stabilize center.

    export 005

  2. Export the tracking data in the After Effects Transform format. Select the Invert checkbox option

    export ae transform inverted 001

  3. Switch to After Effects, select the layer you wish to apply the stabilize data to and paste it to that layer.

You should now have a stabilized image.

Alternatively you can also use the After Effect Corner Pin export using Invert in the same way to get a correctly warped stabilized image.

Exporting Tracks to Silhouette

This section explains how to export tracking data in a format readable to Silhouette Tracker nodes, how to import the data into Silhouette and how to use it for match move tasks.

Note External clipboard data support from Mocha is only available in Silhouette 2020.0.1 and above
  1. Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

  2. Press the Export Tracking Data button on either the Track or AdjustTrack tabs.

  3. Next, choose 'Silhouette Corner Pin (*.txt)' and 'Copy to Clipboard' (Alternatively, click 'Save' to save the script to disk):

    EXPORT silhouette cornerpin workflow 01

  4. In Silhouette, create a tracker node, and paste the contents of the clipboard to the node:

    EXPORT silhouette cornerpin workflow 02

  5. Create a new layer object

  6. Select all 4 tracker points and click the 'Apply…​' button in the point tracker panel to apply the 4 tracker points to the layer:

    EXPORT silhouette cornerpin workflow 03

To apply an insert using the data:

  1. Feed an the insert image and the previously created tracker node into a Transform node:

    EXPORT silhouette cornerpin workflow 04

  2. Select the tracking layer from the Transform list:

    EXPORT silhouette cornerpin workflow 05

  3. You can then use a 'Composite' or 'Math Composite' to combine the corner pinned image over the top of the background image:

    EXPORT silhouette cornerpin workflow 06

  4. And adjust the corner pin settings to fit the background:

    EXPORT silhouette cornerpin workflow 07

The image should now follow the background source as expected.

Exporting Tracks to Final Cut Pro or Final Cut Express

This example illustrates how to export Basic Motion data to Final Cut Pro or Final Cut Express, and use it to matchmove one clip to another, with translation, rotation and scale.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately before export.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Next, choose either the Final Cut Basic Motion or the Final Cut Distort options.

export FCP basicmotion 001

Final Cut Distort:

The distort option exports the 4 point x, y information from either the adjusted track or the raw track. The points exported are the four corners of the surface.

Final Cut Basic Motion:

The basic motion option exports x and y positions as well as the scale and rotation for the whole surface. The position exported is the center of the surface.

Now click Save. This will display a file browser; you need to select a filename and directory for the files to be saved. By default, the files will take the name of the layer, so for a layer name Track_Layer this export produced a file named:

Track_Layer.xml

Now open the Final Cut project where you want to use the tracking data. To import the XML file in Final Cut Pro, click File | Import | XML…​. In Final Cut Express, click File | Import | FCP XML from iMovie…​

You will now see a new clip in your bin, named 'Mocha distort – layer_name' or 'Mocha basic motion – layer_name'. If your original footage was a QuickTime file, then the new clip in Final Cut will point to this footage. If it was an image sequence, the clip will be connected to the first frame of the sequence, stretched to the duration of the whole clip.

In most situations, you want to apply the tracking data to a different clip in your timeline. To do this, you can copy and paste the data from the imported clip onto any other.

Drop your imported clip into the timeline, then select it and press Cmd-C to copy it to the clipboard. Now select the clip you want to apply the tracking data to and press Opt-V (Paste Attributes). You will see a dialog asking you to choose which data to paste.

export 009

Depending on the kind of data you exported, tick either 'Basic Motion' or 'Distort' and untick all the other boxes.

You should now see the clip following you tracked.

Using Tracks for Stabilizing in Final Cut

To use our tracking data for stabilization in Final Cut, follow the same procedure as for a basic motion export, but tick the Invert checkbox in the export dialog.

Now when you import the XML file into Final Cut, you should have a fully stabilized clip. You can also copy the stabilized data onto another clip using Copy and Paste Attributes as before.

Troubleshooting Tracking Export to Final Cut

Many issues of track misalignment can be corrected by choosing the right film type, frame rate and interlacing settings in our software. These controls are on the Clip page in the Film, Interlaced and Time tabs.

The layer doesn’t line up in Final Cut

If the layer doesn’t line up but the overall motion looks right, the most likely problem is mismatched pixel aspect ratio (PAR). In Final Cut, check the sequence settings to confirm the correct PAR for the clip, then use the equivalent setting when tracking in our software. If you have already tracked with the wrong film type setting, you will need to re-track after changing it. The table on the next page shows the corresponding settings between Final Cut and Boris FX products.

Although film types are included in our software for anamorphic HD sizes (DVCPRO HD and HDV), you are unlikely to need to use them as QuickTime will normally apply the anamorphic scaling and our software will treat the video as full HD.

The layer lines up on the first frame, but then it drifts

This is usually caused by a frame rate mismatch. Check that the frame rate and interlacing settings match between final Cut and our software.

The layer appears much wider or thinner than it should

This can be caused by a mismatch in the Final Cut Anamorphic setting. If you are working with anamorphic footage, ensure that you have the 'Anamorphic' setting checked in your Final Cut sequence settings, and in the clip properties. You also need to use one of the anamorphic film types when tracking: any of the film types with 'Anamorphic' in the name should give correct results when importing the data into Final Cut.

Exporting Tracks to Apple Motion

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Next, choose 'Motion basic transform(.motn)' or 'Motion corner pin (.motn)' and click 'Save' to save the file.

Inside Motion, you can either choose to open the exported file as a new project or drag it into an existing project. You will see a Group containing the footage you tracked as well as a blue solid called "Surface".

export motion5 timeline

Then take the following steps to insert your footage:

  1. Drag the desired footage or image to the group, above the surface

  2. Go to Motion Tracking in Behaviors and drag the Match Move behavior onto your insert

  3. If the surface layer does not automatically apply to the behavior, drag the surface layer onto the Match Move behavior

  4. If you are just using transform, Match Move defaults to this option and you can set transform, scale and rotation

  5. If you are using corner pin, select the 'Four Corners' option from the 'Type' drop down.

export motion5 timeline complete

Troubleshooting Tracking Export to Apple Motion

Many issues of track misalignment can be corrected by choosing the right film type, frame rate and interlacing settings in our software. These controls are on the Clip page in the Film, Interlaced and Time tabs.

The layer lines up on the first frame, but then it drifts

This is usually caused by a frame rate mismatch. Check that the frame rate settings match between Motion and Mocha.

The layer tracks correctly but is offset or scaled oddly

This is normally due to the layer you are inserting not being the same frame size as your project media. You can fix this by either changing the insert to fit the dimensions, or scaling the insert inside motion to match the dimensions. If you are going to scale the layer to fit, you should do this step before you apply Match Move.

Exporting Tracks to Apple Shake

This section explains how to export tracking data in a format readable by Apple Shake, how to import the data into Shake and how to use it for match move, corner pinning and stabilization tasks.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Next, choose 'Shake Script (*.shk) and click 'Save' to save the script to disk or 'Copy to Clipboard' to simply copy-and-paste the data into Shake.

export shake 001

Now let’s use that data in Shake. To load the tracking data in a file into an existing Shake Script follow these steps:

In the File menu, select ‘Add script'.

export 011

Navigate to the Shake script file you exported and select it.

If you have the data on your clipboard, simply press Ctrl/Cmd+V or right-click and choose 'Paste'.

Three nodes will now appear in your script: Stabilizer, MatchMoveLayer, and CornerPinLayer.

export 012

At this point you have successfully imported your tracking data from Mocha into Shake. But what exactly did you import? Let’s start with the MatchMoveLayer layer.

export 013

The MatchMoveLayer is used to apply the tracking data to a foreground element that you wish to matchmove to a background. It consists of two inputs, the background and the foreground. The foreground element will be the element you wish to apply the match moving data to. The foreground is connected to the left side input of the node while the original tracked background element goes into the right hand side.

export 014

The next node is the CornerPinLayer node. This node has a single input and works just like the left input of the MatchMoveNode.

export 015

It takes your foreground element and applies the scaling, rotation, and translation data to it and prepares it for compositing into your next layer.

The last exported node is the Stabilizer Node. Just as the name implies, it takes all of the exported tracking data and uses that data to stabilize your input clip.

With this node, for example, you may apply this data to the background element you tracked to make for an easier composite.

Now that you have successfully exported and imported your data into Shake you are ready to continue working on your project.

export 016

Exporting tracks to Mistika

You export Mocha planar tracking data to Mistika as a set of corner pin tracks by choosing Mistika Point Tracker (*.trk) from the Export Tracking Data dialog.

You can import your saved Mistika Point track data from the File menu.

Exporting Tracks to Nuke

This section explains how to export tracking data in a format readable by Nuke, how to import the data into Nuke and how to use it for match move, corner pinning and stabilization tasks.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Next, choose Nuke Ascii (*.txt) and click 'Save' to save the script to disk.

EXPORT nuke ascii

In Nuke, append a tracker to the background clip, e.g. by selecting the node and pressing tab, then typing 'tracker' and finally selecting the 'Tracker' node in the list of nodes.

EXPORT nuke ascii02

In the tracker properties window, select the animation submenu button for Tracker 1, then choose File | Import Ascii…​ in the menu.

EXPORT nuke ascii03

On the import Ascii dialog, press the folder button next to the file name, browse to the file you exported, select it, click 'Open' and then click 'OK'.

Repeat these steps for tracker 2, 3 and 4.

Exporting to Nuke 7 Tracker Node

If you’re in Nuke 7 or above and you don’t want to go through the process of exporting out your ascii files, you can instead export to the Nuke 7 Tracker node.

export nuke tracker

If you choose Copy to Clipboard you can immediately switch over to Nuke and Paste the data. Alternatively you can import your saved Nuke Script from the File menu.

Exporting Corner Pin tracks to Nuke Corner Pin Node

You can export a Corner Pin straight to the clipboard or to a .nk script by choosing Nuke Corner Pin (*.nk) from the Export Tracking Data dialog.

If you choose Copy to Clipboard you can immediately switch over to Nuke, select the node you wish to apply the corner pin to and Paste the data. Alternatively you can import your saved Nuke Script from the File menu.

export 020

Exporting to Nuke Mesh Tracker node

The PowerMesh to Nuke Tracker creates a single Nuke tracker node with individual tracker points representing every vertex in the PowerMesh.

This versatile export means you have access to numerous tracking points across your scene without having to set up individual tracks or corner pins.

You can export a PowerMesh-based Nuke Tracker straight to the clipboard or to a .nk script by choosing Nuke Mesh Tracker (*.nk) from the Export Tracking Data dialog.

If you choose Copy to Clipboard you can switch over to Nuke, select the node you wish to apply the corner pin to and Paste the data. Alternatively you can import your saved Nuke Script from the File menu.

Exporting Tracks to Blackmagic Fusion

This section explains how to export tracking data in a format readable by Fusion, how to import the data into Fusion and how to use it for match move, corner pinning and stabilization tasks.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Next, choose 'Blackmagic Fusion COMP Data (*.comp)' and click 'Save' to save the script to disk.

In Fusion, open the .comp file, then drag the tracker node into the right view.

export 021

Now import the clip that you want composited onto the background and tie the output of the clip to the input of the tracker node.

export 022

In the settings of the tracker node, select the 'Operation' tab and select either 'Corner Positioning' or 'Match Move' to composite the insert clip on top of the background. Notice that you can switch 'Position', 'Rotation' and 'Scaling' on and off for different effects.

export 023

Exporting Tracks to Inferno, Flame, Flint, Smoke and Combustion

This section explains how to export tracking data in a format readable by Autodesk Inferno, Flame, Flint, Smoke and Combustion.

Exporting Flame Axis data

Currently Mocha can only export Flame Axis tracking data via the Gmask Tracer node.

  1. Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary.

  2. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

  3. Press the Export Tracking Data button on either the Track or AdjustTrack tabs.

  4. Select 'Autodesk Flame Axis (.mask)' and save the file to disk (There is currently no clipboard support for mocha data in Flame).

export flame axis track

Importing into Flame

To import the data into Flame:

  1. Create a new Gmask or Gmask Tracer node in Batch

  2. Click the Load Node Button:
    flame load node+

  3. Navigate to the saved '.mask' file and open it

You should then see the axis in the Flame viewer output.

You can now wotk with the Axis nodes via the Gmask Schematic:

flame axis schematic

Exporting IFFFSE Tracking Data

  1. Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary.

  2. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

  3. Press the Export Tracking Data button on either the Track or AdjustTrack tabs.

  4. Select 'Autodesk IFFFSE Point Tracker Data (*.ascii)' as the format, and save this to a file.

  5. Next select the 'Autodesk IFFFSE Stabilizer Data (*.ascii)' export and save this to another file.

export autodesk ascii 001

Importing into Combustion

Let’s look at how we use the data. In Combustion, create a layer with the foreground graphic and set the layer shape to 'Four-Corner'.

export 025

Now select all four corners of your layer, enable the 'Tracker' tab and select 'Import Tracking Data.'

Import the single Ascii file with the stabilizer tracking data.

Activate the insert layer visibility and you will see that the insert layer is now tracked to the background element, even though the image is not sized correctly yet. Select all trackers and set the mode to 'Absolute' to resolve this.

If you prefer to import your data one point at a time you can instead select one track point and import the Ascii file with the corresponding tracking data. Remember to switch to 'Absolute' mode once all data has been imported.

Importing into Inferno, Flame, Flint or Smoke for Corner Pinning

Firstly, we will set-up a corner-pin composite in the Action module, to reproduce the basic compositing operation.

Enter Action and delete the default Axis and Image nodes.

Create a new Bilinear Surface. Tap on bilinear1 then press ~ to view its settings. Go to Surface then click the S button next to Track.

export 027

You should now be in the familiar stabilizer module. For this example we are doing a corner-pin so we will need to use all four trackers.

Tap Tracker 1 then press 'Imp' under 'Track Y'.

export 028

Now browse to the corresponding file, e.g. xxxx_top_left.ascii. The files correspond to trackers as shown below.

You should see the marker for Tracker 1 move into the correct position.

Repeat the process for the other three trackers, making sure that you use the correct files as shown in above. You should also mark each tracker as Active if it is not already.

Tap Return to return to Action, and you should now see your finished corner pin.

Importing into Inferno, Flame, Flint or Smoke for Stabilization

An alternative use for the tracking data is for stabilization. You can use the Stabilizer module to do 1-, 2-, 3- or 4-point stabilization. In this example, we will do a 1-point stabilization to stabilize for position only, using the center point.

Enter the Stabilizer module. Click the Imp button under Track Y, as for the Corner Pin.

Select the _center file, in my example this is PDA_center.ascii. You should now see the key-frames loaded and be able to process

If you want to use more points to stabilize zoom, rotation, affine and perspective moves, just load the corner tracks as described in the Corner Pin section.

Exporting Tracks to Assimilate SCRATCH

To import data into SCRATCH requires SCRATCH v7 or later.

To import the data into Assimilate, do the following:

  1. Enter the SCRATCH player with the background shot

    export scratch 001

  2. Create a scaffold with a the image you want to insert (Make it a bicubic since you want a 4-corner pin deformation)

  3. Either load the background shot into Mocha and track or send the shot from SCRATCH to Mocha by creating a custom command

    export scratch 002

  4. Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

  5. Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Select 'Assimilate SCRATCH (*.txt)' as the format, and save this to a file or copy to clipboard

    export scratch 003

  6. Switch back to SCRATCH, select the scaffold with the bicubic and click on TRACK.

    export scratch 004

  7. Once on the TRACKING interface you will see "Paste Mocha data" highlighted, which is detecting that you have Mocha data on the clipboard.

  8. Click on "Paste Mocha data" and the data will be applied to the element.

    export scratch 005

Exporting Tracks to SGO Mistika

The Mistika export format provides 4 corner pin track points.

To export tracking data to the Mistika , click the Export Tracking Data…​ button on the Track module, AdjustTrack module or from the File menu.
The option in the dropdown is called Mistika Point Tracker File (*.trk). Save the file to disk.
Mistika at this time does not support clipboard pasting of the track data.

There are two ways to import the data to Mistika:

Corner Pin Insert

Applying Corner Pin is usually done in the Comp3D effect.

  1. Ensure you have the correct layer active in the Comp 3D control panel

  2. Open up the track controls and choose Path > Load

  3. Find and load in your saved Mocha track file

  4. You may have to delete an errant 'T0' tracker that Mistika adds by default.

  5. Select Apply To > Corner Pin

  6. Choose Apply > Move and the tracking data will be applied to the layer.

Note You will have to move the CTI to refresh the viewer once you have applied the tracking data

Transform

Any clip or effect that supports the Tracking tab can use Mocha track data.

  1. Open up the track controls and choose Path > Load

  2. Find and load in your saved Mocha track file

  3. Choose the track point(s) you wish to use.

  4. Choose the type of data you wish to apply in Apply To. Note, you will have to have more than one tracker selected to use Rotation and Size.

  5. In Apply, select the type of move you wish to do, eg. Move for matchmoves or Stabilize for stabilization.

  6. Some effects or shapes only support translation data. In these situations Rotation and Size will have no effect.

Exporting Tracks to Boris FX Plugins

You can export either Corner Pin or Center Point data out to any Boris FX plugin that supports motion tracking data. These include effects such as the BCC Corner Pin effect and Witness Protection.

The files are import only, so you can’t copy them to the clipboard. You can save the data as a text file and import it.

boris avidmediacomposer sml

Importing the track is as simple as locating the Motion Tracker section of your BCC plugin and clicking either the "L" button or selecting "Load…​" from the Import-Export dropdown, depending on the plugin you are using.

Exporting Tracks to Avid DS

Important It is important that the clip length, frame rate, frame size, interlace mode, pulldown mode and pixel aspect ratio in the project match the corresponding settings in Avid DS project where you plan to use the data. You can change the frame rate and pixel aspect ratio settings in the Film and Time sections of the Clip tab.

This section explains how to export tracking data in a format readable by Avid DS.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Select 'Avid DS Tracking Data (*.fraw)' as the format, and save this to a file. This stores the x/y coordinates of the four surface points defining the track in eight .fraw text files using the following naming convention:

…​._R1x.fraw Lower left X coordinate

…​._R1y.fraw Lower left Y coordinate

…​._R2x.fraw Lower right X coordinate

…​._R2y.fraw Lower right Y coordinate

…​._R3x.fraw Upper left X coordinate

…​._R3y.fraw Upper left Y coordinate

…​._R4x.fraw Upper right X coordinate

…​._R4y.fraw Upper right Y coordinate

Where "…​." is replaced by the name of the exported layer.

On your DS v10.x system, create a Tracker node and open the Animation Editor for it. In the left window check the little Blue Animation box to the left of R1x, R1y, R2x, R2y, R3x, R3y, R4x, and R4y. Now right-click "R1 Tracker Y" and select "Import tracking coordinates". Navigate to the folder containing the eight FRAW files that Mocha created and DS will load them. If you have an older version of DS then you will have to load each of the eight FRAW files individually.

Exporting Tracks to HitFilm

You can export HitFilm transform and corner pin data directly to a HitFilm Composite Shot file.

Exporting tracks to HitFilm is very similar to exporting HitFilm Camera solves or Shapes:

  1. Select a layer and go to "Export Tracking Data…​"

  2. Choose HitFilm Corner Pin [supports motion blur] or HitFilm Transform Data [postion, scale and rotation]

  3. Click Save and choose a file name

4.1.0 Export HitFilm Track Data

Importing is done via the Compositing section in HitFilm 4:

  1. In HitFilm go to your Composite section

  2. Choose Import > Composite Shot

  3. Select the saved HFCS file from Mocha

  4. HitFilm will then load the Composite Shot with the footage you tracked in Mocha and layers with either a Quad Warp (for corner pin) or the layer with transform animation applied (for Transform).

  5. You can then either relink the media in the composite file to the desired insert, or copy the Effect or Keyframes to the desired media in your existing composite.

Exporting Tracks to Quantel generationQ systems

To import data into the Quantel requires Boris FX’s TrackImport plug-in for Quantel.

You can import tracking data into Quantel systems by using Boris FX’s TrackImport plug-in.

Track an object in the usual way, and use AdjustTrack to correct for any drift if necessary. The exported tracking points will be the four corner points of the Surface, so you should position these appropriately.

Press the Export Tracking Data button on either the Track or AdjustTrack tabs. Select 'Quantel Corner Pin Data (*.xml)' as the format, and save this to a file.

In the Quantel system, select the TrackImport plug-in, and use the plug-ins file browser interface to select the tracking data file to import. Then click 'Settings' and choose 'Tracker' in the settings window and click 'Save'.

The tracking data can now be used in a manner identical to tracking data generated within the Quantel system.

Exporting Tracks to MochaBlend

To export tracking data to the Good Spirit Graphics MochaBlend plugin, click the Export Tracking Data…​ button on the Track module, AdjustTrack module or from the File menu.

You can export the tracking data by either saving it to file, or copying to the clipboard:

4.1.3 Export MochaBlend Track Data

To import the tracking data into the plugin, you start by selecting an available Data slot and then either paste from the clipboard or open the exported file:

4.1.3 Paste MochaBlend Track Data

Once imported, you can then adjust your scene to fit the data. It is important to make sure you check the warnings and correct any relevant items before setting up your rig:

4.1.3 Imported MochaBlend Track Data

Adjusting the data to fit with MochaBlend:
  1. If there is a warning about format mismatch, click the green "Import Format" link in the MochaBlend window

  2. If there is a warning about no camera rig, click the green "Create Rig" or "Set Active Rig" according to your needs

  3. Finally make sure that you click the "Set Timeline to Data" if your project timeline is different from the frame range you tracked in Mocha

You can then go ahead and tweak individual settings in the MochaBlend plugin. See MochaBlend documentation for further information on working with tracking data in the plugin.

Exporting Stereo Tracking Data

Exporting stereo Track data from Mocha is the same as exporting in mono mode, however when you are in multiview mode you can choose the view you want to export.

To export stereo tracking data from Mocha:
  1. Select a layer

  2. Click "Export Tracking Data…​" from the Track module or choose the option from the file menu (File | Export Tracking Data…​)

  3. Select the Application you wish to export to

  4. Select the view you want to export (or check "Export all views" if it is available for that export format)

  5. Choose whether you want to export the currently selected layer, all visible layers or all layers

  6. Click "Copy to Clipboard" or "Save" depending on your preference. Note that some exports only allow you to save the data.

Exporting to Alembic

Alembic Mesh Data

The Alembic Mesh format is used to export PowerMesh tracks to a range of different software.

Mocha exports a flat mesh with X and Y coordinates for each mesh vertex generated via the Mesh parameter in the Track module.
The export also includes a camera to make sure the mesh is projected correctly to the original footage dimensions.

Alembic meshes also contain UV mapping so you can easily warp a texture to the mesh without needing to set them up yourself.

Important Note that the Alembic format, while 3D, does NOT contain Z information in the mesh.
We are not calculating depth in this export, only the positions of the vertices on a tracked plane.

Alembic is a versatile format that can be imported into many different compositors, such as:

  • Nuke

  • Flame

  • Fusion

  • HitFilm

Along with 3D applications such as:

  • Cinema 4D

  • Maya

  • 3ds Max

  • Blender

And so on.

Exporting Alembic Meshes

To export an Alembic mesh, do the following:

  1. Track a layer using PowerMesh by selecting the "Mesh" parameter and generating a mesh. See the PowerMesh section for more details on Mesh tracking.

  2. Select the "Export Track…​" option in the Track module or the File menu

  3. Choose "Alembic Mesh Data (.abc)" from the list of options
    export alembic

  4. Enter a Reference Frame into the "Ref Frame" field if you want to change where the UV coordinates start from. By default the number in the field is the frame you generated the mesh on.

  5. Click Save and choose a file name.

Importing Alembic Meshes to Nuke

Nuke imports Alembic via the "ReadGeo" node:

  1. Import your source footage to the nuke project

  2. Create a ReadGeo node

  3. Open the exported Alembic file via ReadGeo’s file browser

  4. Change the import parameters if necessary

ReadGeo will then ask how you want to set up the camera and geometry nodes.

You can use the ReadGeo in combination with the Scanline Renderer node to composite warped textures over the top of the original footage:

  1. Create a Scanline Renderer node in the node graph

  2. Feed in the ReadGeo, Camera and Source image into the inputs of the Scanline Renderer node. If you view the node, the mesh should now be correctly projected over the top.

  3. Add an image or material to the 'img' input of the ReadGeo node. This will then project the texture onto the Mesh.

  4. Scrubbing the timeline should show the texture warping to the mesh faces over time.

alembic nuke example

Importing Alembic Meshes to Fusion

Fusion imports Alembic via the "Alembic Scene" import:

  1. Import your source footage to the Fusion project

  2. Create an ABC node chain by importing the Alembic file via File > Import > Alembic Scene…​

  3. Change the import parameters if necessary

Fusion will then set up an ABC node with the geometry and camera fed into it.

You can use the ABC node in combination with the Renderer3D node to composite warped textures over the top of the original footage:

  1. Create a Renderer3D node in the node graph

  2. Feed in the ABC into the input of the Renderer3D node.

  3. Merge the Renderer3D node over the top of your source footage node. If you view the Merge node, the mesh should now be correctly projected over the top.

  4. Add an image or material to the input of the mesh node that is the same as your mocha layer name. This will then project the texture onto the Mesh.

  5. Scrubbing the timeline should show the texture warping to the mesh faces over time.

alembic fusion example

Importing Alembic Meshes to Cinema4D

You can open an Alembic file as a project in Cinema4D.

  1. Go to File > Open and choose the exported Alembic file.

  2. Click the view camera icon in the Camera layer to view the mesh through the camera

  3. Create a new Background object

  4. In the Materials panel create a new basic material

  5. Import your source footage to the material as a texture

  6. In the Viewport options for the material, turn on "Animate Preview"

  7. Drag the material to the Background layer

You should now see the Mesh lining up with the source footage.

alembic cinema4d example

Alembic Vertex Transform Data

Similar to meshes, this alembic format provides just the transform information for the vertices in the mesh (along with the camera).

Vertex transforms can be interpreted by supporting hosts in different ways.
For example, in Nuke they are imported as a point cloud, but in Blender they may import as nulls linked to transforms.


Exporting Mattes and Clips

Note Some export formats listed below are not available for Mocha HitFilm or Mocha AE. For a full comparison of features, please refer to the comparison chart online.
Warning Some shape data formats are not supported across 360 seams and poles in Equirectangular space and may not export as expected.

Exporting Rendered Shapes

Note This feature is only available in Mocha Pro

When your roto work is complete and you would like to export your mattes, choose the menu item File → Export Rendered Shapes…​ to be guided through the rendering process.

exportm 001

The render dialog will give you options to choose either the currently selected layer, all visible layers or all the layers in the project.

exportm 002

Options include:

Colorize output

Choose whether you want to render grayscale mattes or by their layer fill color.

Export to

The export options for Image Sequences and QuickTime movies.

For Image Sequence you have the following options:

  • Directory: The directory where you want to export your image sequence.

  • File Format: A list of available image formats to render to.

  • Prefix: The name of the clip to go in front of the frame numbers.

  • Suffix: The name of the clip to go after the frame numbers (blank by default).

  • Index Start: The number to start the exported sequence from. By default this is the first frame in the timeline.

  • Index Width: The number of padding zeroes to use.

Exporting QuickTime movies

Which video file format reader you are using will determine the export handling of clips:

  • Using QuickTime: Choosing 'QuickTime movie' will bring up the legacy QuickTime export options when you click OK.

  • Using GStreamer: Choosing 'QuickTime movie' will bring up the GStreamer export dialog when you click OK. This currently only supports ProRes.

Exporting Stereo Rendered shapes

The render dialog also allows you to render to single footage streams or a combined stream via EXR.

To export a rendered shape:
  1. Go to File | Export Rendered Shapes…​

  2. Choose the mattes you want to export in the top radio buttons.

    1. Selected: The last selected layer.

    2. All Visible: Only the layers that have visibility turned on in the layer controls

    3. All: All layers except ones you have specifically deactivated.

  3. Choose the Color Output:

    1. Grayscale: The default black and white mattes with feather.

    2. By matte color: The same as Grayscale, only the mattes are colored according to what you defined each layer matte color to be in the Layer Controls.

    3. By layer ID: A special use case for those that want the mattes to be colored by their layer ID.

  4. Under "Export Views" select the render option you want:

    1. Current Only: Renders the current view you have selected.

    2. To single footage stream: Renders all views to a single file. You are limited to rendering to EXR or SXR.

    3. To separate footage streams: Renders the views as individual sequences.

  5. Then choose your file path and render format.

4.0.0 Export Rendered Shapes

If you have chosen to render the current view or separate footage streams, the view abbreviation will be suffixed to the rendered export automatically, so there is no need to define this in the file name.

Exporting as Mocha shape for After Effects Data

Important It is important that the clip length, frame rate, frame size, interlace mode, pulldown mode and pixel aspect ratio in the project match the corresponding settings in the After Effects project where you plan to use the data. You can change the frame rate and pixel aspect ratio settings in the Film and Time sections of the Clip tab.

The Mocha shape plug-in will import the following data into After Effects:

  • One or more shapes, which may be either Bezier or X-Spline

  • The 'plane' that was generated by the Planar Tracker. This defines the overall movement of the shape(s)

  • Shape point keyframes set in the project

  • Per-point feathered edges

If you wish to export a single layer, select it before proceeding with the export.

When you are ready to export, select Export Shape Data button. On the dialog that opens, choose if to export the selected layer, all visible layers or all layers.

exportm 003

When you have made the right selection, click Copy to Clipboard, then switch to After Effects.

In After Effects, import the same footage and ensure that the frame rate and pixel aspect ratio are the same as those used when generating the shape. You can change these values in After Effects by selecting File | Interpret Footage | Main…​.

Bring the footage into a composition, then select Edit | Paste to add the shape effects to the composition. Each shape exported will come across as its own plug-in effect.

Note In Mocha V5 onwards we changed the shape export for After Effects to remove key padding. This means you must now paste to the same frame in After Effects as the project in point in Mocha, rather than the beginning of the clip.

In the plug-in controls you can change the following parameters:

Blend mode

You can choose to change the blend mode from the one assigned to the shape by selecting Multiply, Add or Subtract from the dropdown menu.

Invert

When checked, inverts the matte.

Render soft edge

If you have created the shape with feathered edges but wish to switch these off, untick this parameter. Note that if you have not created feathered edges this will have no effect.

Render type

This setting allows you to choose between various render effects. The default is the 'Shape cutout' which uses the matte to cut out the corresponding area in the background footage. 'Color composite' will apply a single color to the area within the matte, useful when wanting to preview the positions of multiple layers. Note that the Opacity setting affects this color fill, allowing you to blend it with the background footage. 'Color shape cutout' combines the effects of the previous two.

Shape color

Defines the color of the color fill applied when selecting the 'Color composite' render type.

Opacity

Defines the opacity of the color fill applied when selecting the 'Color composite' render type.

Exporting Adobe Premiere Pro CC Masks

Exporting shapes to Adobe Premiere Pro CC is very similar to exporting shapes to After Effects

  1. Select a shape and go to "Export Shape Data…​"

  2. Choose Adobe Premiere shape data

  3. Choose if you want to export the selected layer, all visible layers or all layers

  4. Copy to the Clipboard

Importing is just as straightforward:

  1. In Adobe Premiere Pro CC, select your clip on the timeline

  2. In the Effects panel, click on Opacity

  3. Paste the data using CMD/Ctrl + V or right-click and choose Paste

  4. You can also apply the masks to most effects, by adding the effect to your clip, selecting the effect in the Effects panel and pasting.

4.0.0 Premiere Shape

Exporting as Mocha shape for Final Cut

The Mocha shape plug-in will import the following data into Final Cut:

  • One or more shapes, which may be either Bezier or X-Spline

  • The 'plane' that was generated by the Planar Tracker. This defines the overall movement of the shape(s)

  • Shape point keyframes set in the project

  • Per-point feathered edges

If you wish to export a single layer, select it before proceeding with the export.

When you are ready to export, select Export Shape Data button. On the dialog that opens, choose if to export the selected layer, all visible layers or all layers.

When you have made the right selection, click Save and select a destination to save the XML file to, then switch to Final Cut.

In Final Cut, import the XML file by CTRL-clicking in the project asset window.

exportm 004

Select 'Import', then 'XML…​' and finally select the XML file that you exported.

Accept all the defaults in the 'Import XML…​' dialog.

Your Mocha shape sequence will now appear in your list of project assets.

exportm 005

To use the shape to composite the rotoscoped object over a new background, simply place the Mocha shape sequence in a video track above the background sequence.

exportm 006

Additional controls

If you want access to the actual matte, individual layers of the matte or control that affect the appearance of the matte, double click on the Mocha shape sequence to reveal the two main sequences it consists of - the original sequence and the ContourSequence.

exportm 007

Double clicking the ContourSequence will reveal the individual layers that the ContourSequence consists of. Dragging a layer into the viewer and selecting 'Controls' will give you access to controls of that layer, as shown below.

exportm 008

Invert

When checked, inverts the matte.

Soft edge

If you have created the shape with feathered edges but wish to switch these off, untick this parameter. Note that if you have not created feathered edges this will have no effect.

Render mode

'Luma' will cause the layer to render itself in the RGB channels, whereas 'Alpha' will cause the layer to render itself in the alpha channel of the generated sequence.

Matte color

Defines the color of the matte being rendered.

Exporting Flame Gmask and Flame Gmask Tracer data

Mocha can export masks as either direct Flame Gmask nodes or Flame Gmask Tracer nodes.

These formats are broken down into:

  • Flame Tracer [Shape + Axis] (.mask): This is a Gmask Tracer node split into the keyframed shape data on a Gmask and the separate tracking data in an Axis. This makes it easier to change the mask data in Flame or attach other nodes to the Axis tracking data.

  • Flame Tracer [Basic] (.mask): This is a Gmask Tracer node with the Mocha tracking data and shape keyframes combined into Gmask keyframes without an axis.

  • Flame Gmask Script (.gmask): This is a straight Gmask node with the Mocha tracking data and shape keyframes combined into keyframes without an axis.

You can select the type from the "Export Shapes" dialog:

export flame gmask tracer

Importing into Flame

To import the mask data into Flame:

  1. Create a new Gmask or Gmask Tracer node in Batch

  2. Click the Load Node Button:
    flame load node+

  3. Navigate to the saved '.mask' file and open it

You should then see the Gmask results in the Flame output.

If you are using GMask Tracer, you can view the Axis or Gmask nodes via the Gmask Schematic:

flame gmask schematic

Exporting Shake Rotosplines

Choose a shape (not a layer) and select Export Shape Data…​ from the File menu. A dialog will show with a drop-down containing 3 different saving options.

Choose the target application and hit Save. The data going into the file is not binary, and is shown in the dialog so that you may copy and paste it directly into a text editor if you prefer to work that way.

Because of differences in the way Splines are handled in the application, maintaining accurate keyframe interpolation between our software and the other applications requires that the exported shapes have a keyframe on every frame. This is not a bug but required to ensure your mattes look right once they’ve been imported into your compositing application.

Exporting Shapes to HitFilm

You can export Mocha shape data directly to a HitFilm Composite Shot file.

Exporting shapes to HitFilm is very similar to exporting HitFilm Camera solves:

  1. Select a shape and go to "Export Shape Data…​"

  2. Choose HitFilm [Transform & Shape]

  3. Choose if you want to export the selected layer, all visible layers or all layers

  4. Click Save and choose a file name

4.1.0 Export HitFilm Shape Data

Importing is done via the Compositing section:

  1. In HitFilm go to your Composite section

  2. Choose Import > Composite Shot

  3. Select the saved HFCS file from Mocha

  4. HitFilm will then load the Composite Shot with the footage you tracked in Mocha and layers with shape masks.

Exporting Roto, RotoPaint and SplineWarp Nodes to Nuke

You can export a Roto, RotoPaint or SplineWarp node straight to the clipboard or to a .nk script by choosing Nuke Roto Paint (*.nk) from the Export Shape Data dialog.

To export shapes to Nuke:

  1. Select a shape and go to "Export Shape Data…​"

  2. Choose one of the Nuke exports

  3. Choose if you want to export the selected layer, all visible layers or all layers

  4. If you choose Copy to Clipboard you can immediately switch over to Nuke, select the node you wish to apply the shape data to and Paste the data.

  5. Alternatively you can import your saved Nuke Script from the File menu.

exportm 009

You have the option of exporting Basic Roto data which bakes the keyframes, or Transform and Shape data which separates the tracking data from the manual keyframes.

The latter makes the data less heavy and is only supported in Nuke 6.2 and above.

The SplineWarp node exports each layer as a joined set of splines with the spline keyframes separate from the tracked data (which is set in each curves transform).

For example if you only have 1 tracked layer to export, Mocha will export that layer to SplineWarp as two joined splines in A.

You can then modify the second spline for the warp, or delete it and choose another.

Exporting Shape Data to Blackmagic Fusion Shapes

To export shape data to the Fusion shape format, click the Export Shape Data…​ button in the Track module or from the File menu.

You can export the shape data by saving it to file or by copying it to the clipboard:

5.0.0 export fusion shape data

To import the shape data into Fusion, either paste directly into the Fusion Flow View or open the comp file from the file menu.
The Mocha layers will come in as separate nodes into the Flow View.

Exporting Shape Data to MochaBlend

To export shape data to the Good Spirit Graphics MochaBlend plugin, click the Export Shape Data…​ button in the Track module or from the File menu.

You can export the shape data by either saving it to file, or copying to the clipboard:

4.1.3 Export MochaBlend Shape Data

To import the shape data into the plugin, you start by selecting an available slot in MochaBlend and then either paste or open the data file:

4.1.3 Paste MochaBlend Track Data

Once imported, you can then adjust your scene to fit the data. It is important to make sure you check the warnings and correct any relevant items before setting up your rig:

4.1.3 Imported MochaBlend Shape Data

Adjusting the data to fit with MochaBlend:
  1. If there is a warning about format mismatch, click the green "Import Format" link in the MochaBlend window

  2. If there is a warning about no camera rig, click the green "Create Rig" or "Set Active Rig" according to your needs

  3. Finally make sure that you click the "Set Timeline to Data" if your project timeline is different from the frame range you tracked in Mocha

You can then go ahead and create the splines under the Objects settings. See MochaBlend documentation for further information on working with shape data in the plugin.

Exporting Shape Data to Silhouette Shapes

To export shape data to the Silhouette FXS shape format, click the Export Shape Data…​ button in the Track module or from the File menu.

You can export the shape data by saving it to file or copying to the clipboard:

5.0.0 export silhouette shape data

To import the shape data into Silhouette, create a Roto node in the existing session and the import the data from File → Import…​ → Silhouette Shapes menu option, or paste from the clipboard:

5.0.0 export silhouette shape data workflow

Exporting Stereo Shape Data

Exporting stereo Shape data from Mocha is the same as exporting in mono mode, however now you can choose the view you want to export.

To export stereo Shape data from Mocha:
  1. Select a layer

  2. Click "Export Shape Data…​" from the Track module or choose the option from the file menu (File | Export Shape Data…​)

  3. Select the Application you wish to export to

  4. Select the view you want to export (or check "Export all views" if it is available for that export format)

  5. Choose whether you want to export the currently selected layer, all visible layers or all layers

  6. Click "Copy to Clipboard" or "Save" depending on your preference. Note that some exports only allow you to save the data.

4.0.0 Export Shape Data

Nuke Roto exported as "Export All Views" will paste to Nuke as a combined roto node. If you would prefer the nodes to be separate, export using the different views instead of checking the all views option.

Exporting Rendered Clips (Mocha Pro)

You can export a clip to an image sequence or QuickTime format by choosing "Export Rendered Clip…​" from the file menu.

export rendered clip

Options include:

Clip

Choose the clip you want to export.

Frame range

The range of frames you wish to export. If you choose to export the full range but have not rendered all your frames, the next drop down, "Revert to clip" will be used.

Revert to clip

Choose how to export frames that have not been rendered. If you choose None or the current clip to export, black frames will be exported for non-rendered frames.

Save channels

By default, this will just export the flattened render (Color), but if your render has alpha you can choose this also.

Export to

The export options for Image Sequences and QuickTime movies.

For Image Sequence you have the following options:

  • Directory: The directory where you want to export your image sequence.

  • File Format: A list of available image formats to render to.

  • Prefix: The name of the clip to go in front of the frame numbers.

  • Suffix: The name of the clip to go after the frame numbers (blank by default).

  • Index Start: The number to start the exported sequence from. By default this is the first frame in the timeline.

  • Index Width: The number of padding zeroes to use.

Exporting QuickTime movies

Which video file format reader you are using will determine the export handling of clips:

  • Using QuickTime: Choosing 'QuickTime movie' will bring up the legacy QuickTime export options when you click OK.

  • Using GStreamer: Choosing 'QuickTime movie' will bring up the GStreamer export dialog when you click OK. This currently only supports ProRes.

gstreamer export dialog

See the Video Files in Preferences chapter for more on clip exports.

Exporting Stereo Rendered Clips

The render dialog also allows you to render to single streams or a combined stream via EXR.

To export a rendered clip:
  1. Go to File | Export Rendered Clips…​

  2. Choose the clip you want to export in the top drop down. By default it chooses the last render.

  3. Select your frame range you want to export. This defaults to the In/Out range.

  4. Under "Export Views" select the render option you want:

    1. Current Only: Renders the current view you have selected.

    2. To single stream: Renders all views to a single file. You are limited to rendering to EXR or SXR.

    3. To separate footage streams: Renders the views as individual sequences.

  5. Then choose your file path and render format.

4.0.0 Export Rendered Clip

If you have chosen to render the current view or separate footage streams, the view abbreviation will be suffixed to the rendered export automatically, so there is no need to define this in the file name.
'''

The Camera Solve Module

Note This section covers all Camera Solve features that are in Mocha Pro.
Mocha HitFilm users may not have access to all features shown, such as Stereo support and some export formats.

Overview

CAMERASOLVE main

The Camera Solve module is used to take planar tracking information and convert it to 3d space.

This is particularly useful if you cannot get a good track on the plane you need, as you can track other planes in the shot and use them to give you track in 3D space instead.

As we are dealing with 3D calculations rather than 2D planar projections, the workflow is slightly different to a usual planar track.

Identifying the type of camera movement

In order to get a good camera solve you must first identify what type of track it is. Mocha recognizes three types of camera situations:

Pan, Tilt, Zoom (PTZ)

Pan, tilt. zoom cameras are generally fixed in place and do exactly what their name suggests; pan, tilt and zoom.

PTZ cameras are looking for overall movement in the camera plane, rather than changes in the physical planes within your scene.

Small Parallax

Small Parallax is where the camera is not fixed to one point in space and has a lot of mid-ground planes that can be tracked.

Large Parallax

Large Parallax is where the camera is not fixed to one point in space and has trackable planes very close to the camera. It is referred to as Large Parallax because closer objects move at much greater perspective and distance to the camera than objects further away.

The Camera Solve Process

Once you have identified the type of camera motion you can start tracking your shot.

Tracking for PTZ-type Camera Solves

PTZ solves are a little different from perspective solves in that they only need to look for how the camera is behaving when fixed, such as on a tripod.

To set up a PTZ solve, take the following steps:

  1. Locate a large area in the shot that can be tracked. If you can’t find a single large area, you can also use a variety of smaller ones using "Add Spline To Layer".

    CAMERASOLVE PTZ 001

  2. Turn on the grid so you can see how the plane is moving.

  3. Set any parameters you need for the track and begin tracking.

  4. If your track pans around more than around 60 degrees, stop the track and create another shape to continue tracking. The second shape will need to start further back in time than where the first one stopped tracking, so their tracking information overlaps on the timeline. This will help the solver blend together the tracking information of multiple shapes.

    CAMERASOLVE PTZ 002

  5. Once you have tracked the shot, switch to the Camera Solve tab.

  6. Turn on the process cog for all tracked layers you wish to use for the solve. Do NOT select layers that track moving objects: The camera movement is determined by static objects. See Exporting Camera Solves for details on how to export moving objects to 3D after a solve.

  7. Choose either Auto to let Mocha guess the right solve, or choose Pan, Tilt, Zoom from the drop-down.

  8. If you select Pan, Tilt, Zoom, set the focal length. Most commonly this will be 35-70mm. You can choose more than one if the focal length changes. Also choose Zooming if the is any camera zoom in the shot.

  9. Once you have chosen your settings, click Solve.

Once Mocha finishes solving the shot, you can then export the solved scene. See Exporting Camera Solves for further details.

Tracking for Small Parallax Camera Solves

Small Parallax shots require at least 2 non-coplanar tracks to solve the scene. Non-coplanar means not on the same plane as each other. Examples of non-coplanar areas include:

  • A floor and a wall

  • The side and back of a truck

  • Two camera-facing areas at noticeably different distances from the camera, such as one building in front of another

  • Two mountain slopes at different angles

  • Two opposing walls of a corridor

To set up a Small Parallax solve, take the following steps:

  1. Locate planar areas in the mid-ground of the shot that can be tracked. These objects should not be moving in the shot, so choose areas like walls, ground, tree trunks etc. Planes too close or too far away from the camera may not help a Small Parallax solve.

    CAMERASOLVE coplanar

  2. Turn on the grid so you can see how the planes are moving. Adjust the surface to fit the planar perspective if you need to see this movement more accurately

  3. Set any parameters you need for the track and begin tracking.

  4. If you lose the track due to obstructions or the object moving off screen, stop the track and create another shape to continue tracking. The second shape will need to start further back in time than where the first one stopped tracking, so their tracking information overlaps on the timeline. This will help the solver blend together the tracking information of multiple shapes.

  5. Once you have tracked the shot, switch to the Camera Solve tab.

  6. Turn on the process cog for all tracked layers you wish to use for the solve. Do NOT select layers that track moving objects: The camera movement is determined by static objects. See Exporting Camera Solves for details on how to export moving objects to 3D after a solve.

  7. Choose either Auto to let Mocha guess the right solve, or choose Small Parallax from the drop-down.

  8. If you select Small Parallax, set the focal length. Most commonly this will be 35-70mm. You can choose more than one if the focal length changes. Also choose Zooming if the is any camera zoom in the shot.

  9. Once you have chosen your settings, click Solve.

Once Mocha finishes solving the shot, you can then export the solved scene. See Exporting Camera Solves for further details.

Tracking for Large Parallax Camera Solves

Like Small Parallax, Large Parallax shots also require at least 2 non-coplanar tracks to solve the scene. (See examples of non-coplanar areas above)

To set up a Large Parallax solve, take the following steps:

  1. Locate planar areas in the shot that can be tracked. These objects should not be moving in the shot, so choose areas like walls, ground, tree trunks etc.

  2. Turn on the grid so you can see how the planes are moving. Adjust the surface to fit the planar perspective if you need to see this movement more accurately

  3. Set any parameters you need for the track and begin tracking.

  4. If you lose the track due to obstructions or the object moving off screen, stop the track and create another shape to continue tracking. The second shape will need to start further back in time than where the first one stopped tracking, so their tracking information overlaps on the timeline. This will help the solver blend together the tracking information of multiple shapes.

  5. Once you have tracked the shot, switch to the Camera Solve tab.

  6. Turn on the process cog for all tracked layers you wish to use for the solve. Do NOT select layers that track moving objects: The camera movement is determined by static objects. See Exporting Camera Solves for details on how to export moving objects to 3D after a solve.

  7. Choose either Auto to let Mocha guess the right solve, or choose Large Parallax from the drop-down.

  8. If you select Large Parallax, set the focal length. Most commonly this will be 35-70mm. You can choose more than one if the focal length changes. Also choose Zooming if the is any camera zoom in the shot.

  9. Once you have chosen your settings, click Solve.

Once Mocha finishes solving the shot, you can then export the solved scene. See Exporting Camera Solves for further details.

Solve Quality Indicator

CAMERASOLVE SolveQuality

When a solve is complete, the Solve Quality bar will tell you how accurate the solve has been. If you get a poor percentage check to make sure your tracks are locked on accurately, add additional layers to help the solver or try a different solve type or focal distance.

Stereo Camera Solve [Mocha Pro only]

Camera solves also work with Multiview footage. Like with tracking, a stereo camera solve is designed to be as similar to the Mono process as possible.

New additions to the camera solve for Stereo are:

  • Providing the user the option of converged or parallel solves

  • Adjustment for vertical alignment

  • Export of stereo FBX to Maya

  • Export of individual views to other supported applications (AE, Nuke, etc)

To solve a stereo camera:
  1. Go to the Camera Solve module

  2. Select the layers in the layer control panel you want to solve with. (See full documentation for more information)

  3. Select the solve type, or choose "Auto"

  4. Select your Focal length types

  5. Tell Mocha if this is a Parallel Stereo camera or a Converged Stereo camera

  6. Check "Vertical Alignment" if you need to estimate vertical alignment for the shot

  7. Click Solve

Stereo Camera Solve

You can then export out to left and right views, or for Standard FBX, you can export full Stereo cameras. The full stereo camera solve FBX presently works in Maya.

All other exports can only be exported as a single camera view and the solved nulls.

Stereo Export Camera Data

Exporting Camera Solves

Important Importing Mocha Pro 3D camera solve data into After Effects requires an additional plugin called "Mocha 3D Track Importer". Go to https://borisfx.com/downloads to get the plugin.

You have two steps for camera solves:

1. Export Camera Data from Static Objects

This is the standard export. The basic procedure is:

  1. Select the layers you used to do the initial solve in the layer panel (these are still selected if you have just completed a camera solve). These layers are normally tracked to static objects, such as walls, ground, a parked vehicle, a dinosaur fossil etc.

  2. Do not choose any layers that are tracking moving objects (people, moving cars, badgers etc.)

  3. Click Export Camera Data…​

  4. Choose the format you wish to use from the drop-down.

    EXPORT CameraSolve

    • If you are exporting to After Effects, click Copy to Clipboard.

    • If you choose FBX, click Save and create a filename.

    • If you choose HitFilm Composite Shot, click Save and create a filename.

      1. You can then paste into After Effects using the "Paste Mocha camera" option in the Edit menu, or import your FBX or HitFilm data into the program of your choice.

When you paste into After Effects you will get a camera and a number of nulls depending on the type of solve you did. PTZ will only export a single null to help define the camera motion. The other 2 solves will create a null for each corner of your layer surface objects in Mocha.

2. Export Camera Data from Moving Objects

This is a secondary export. The basic procedure is:

  1. Once you have exported a camera from the static solve, select any layers that you used to track moving objects in the shot. If you have not tracked any moving objects you can do this now.

  2. Click Export Camera Data…​

  3. Choose the format you wish to use from the drop-down.

    • If you are exporting to After Effects, click Copy to Clipboard.

    • If you choose FBX, click Save and create a filename.

    • If you choose HitFilm Composite Shot, click Save
      and create a filename.

  4. You can then paste into After Effects using the "Paste Mocha camera" option in the Edit menu, or import your FBX or HitFilm data into the program of your choice.

When you paste into After Effects you will get a camera and a number of nulls depending on the type of solve you did. PTZ will only export a single null to help define the camera motion. The other 2 solves will create a null for each corner of your layer surface objects in Mocha.

Note You will get a second camera object when you export moving layers. You can delete this camera if you have already exported the camera from step 1 of the export.

Tips for Camera Solves

The resulting track drifts or jumps

This can be from the solver not having enough reliable information from the tracks.

  • Any tracked layers with the cog on are assumed to move with camera motion only. If you have layers checked that are moving objects, Mocha will not solve the scene correctly. You can export moving object tracks AFTER the scene is solved however.

  • Check the Solve Quality bar to make sure the solve has been accurate

  • Make sure your planar tracks are accurate and locked on well to their static objects.

  • Check that there is enough overlapping frames in the layers if you have had to do more than one track along the timeline. If you start one track exactly where the last finished, the solver may not be able to accurately blend the resulting data.

  • You may not have enough layers tracked to get an accurate solve. Try adding further tracks to help the solve.

  • Try a different solve type. Sometimes one solver may give better results than another.

  • Try a different focal length.
    '''

The Insert Module

Overview

Note This section only relates to Mocha Pro. This feature is not available in Mocha HitFilm or Mocha AE. For a full comparison of features, please refer to the comparison chart online.

The Insert module is where you choose the image you would like to insert into your tracked layer. You can import a still frame or a moving sequence. Once imported, the Insert module provides a comprehensive range of tools for matching this new image to the original background layer. The skill here, naturally, is to make the newly imported image look like it was in the original shot all along.

inserttabfull

Input

This is where you choose the Input Clip or background layer and the Insert Clip or foreground layer, and optionally a separate input clip with an alpha channel for compositing.

insert input

Background Clip

By default Mocha Pro selects the last clip that was tracked as the input. If you want to change the input, just select a different clip from the pulldown menu.

Insert Clip

This clip mirrors the Insert Clip inside Layer properties, i.e. if you change one, the other also changes.

By default mocha Pro selects None as the foreground input, expecting you to make a choice of your own. To choose an insert select the Import button and use the file browser to locate a still frame or a file sequence that you would like to appear over the tracked background clip.
In the Mocha Pro Plugin, you can choose an 'Insert Layer' placeholder that reads from layers back in the host timeline to render in Mocha.

Pre-multiplied

Check this is you want to force the alpha in the insert clip to be pre-multiplied. Off means the clip remains straight alpha.

Output [Standalone only]

Here you can select the name of the clip to be output. Once a clip has been rendered it is automatically named Composite_<clipname>.

To choose a different name for the output clip select the New…​ button and choose a new name.

The remainder of the controls in the Insert module dictate both how much of the insert is displayed and how it is displayed during the course of the shot.

Source

This controls the area of the insert clip that you would like to be displayed in the tracked layer.

The source "Region of Interest" (ROI) can move anywhere on the insert image, including outside it.

As you adjust the ROI, the insert is scaled to fit the surface.

There is also a Reset button to reset the ROI to the corners of the insert image.

By default, the aspect ratio is locked. Uncheck Lock Aspect Ratio to allow arbitrary ROI changes.

insertroi

To adjust the ROI aspect ratio to match that of the background image given its current position and shape in the background image,
click on Fit ROI to Surface.

Conversely, the Fit Surface to ROI button moves the surface position to match the aspect ratio of the insert image, given its ROI settings.

These controls will work best if you are in a frame where the insert is as front-on as possible.
For them to work correctly, the pixel aspect ratio of both the input clip and insert clip must be correct.

A common issue is that if the resolution of either clip is not recognized when the clip was imported, it is assigned the PAL camera type.

This may not give the correct pixel aspect ratio. To check this, switch to the Clip module and select each clip in turn,
checking the appearance on the screen to make sure that each clip appears correct on the screen.

If not, change the Film Type. If you know that the pixel aspect ratio of the clip is one (square pixels)
select Custom as the Film Type and set the pixel aspect ratio to one.

The number fields are positioned in the menu to relate to the edge of the ROI that they adjust.
So, to reduce the height of the insert ROI at the top of the frame, decrease the value in the top ROI number field by
dragging or highlighting the current value and typing in a new value.

Similarly, to reduce the height of the insert ROI at the bottom of the frame, increase the value in the bottom number
field by dragging or highlighting the current value and typing in a new value.

The same applies for the left and right edges of the frame with the left and right number fields.

Comp

comp

Layer

This section handles how to warp the Layer Insert Clip

Grid Warp

If you turn on "Grid Warp" in the warp tools you can use the a grid to distort the image inserted in the layer.

The dropdown can set the level of detail in the grid. There are 4 levels, with Level 1 being the lowest detail.

Below is an example of Grid Warp set to Level 2:

insert gridwarp level2

You can warp the grid points in the viewer to adjust your insert, or use the outer yellow lines to bulge or pinch the edges.

Grid Points Only

This shows only the intersections of the grid lines instead of the lines. This can be useful when you need to see the underlying insert image while adjusting the warp.

PowerMesh Warp

This checkbox activates the controls so the grid warp can be weighted and distorted organically by the PowerMesh.
When this option is off, the grid warp only follows the planar motion of the track.

Note You need to have tracked a PowerMesh before this option will have any effect. See PowerMesh and Mesh Tracking for more details.

Mesh Weighting

This controls how much the Grid Warp is distorted by the PowerMesh. At 100% weighting, the PowerMesh warps the grid at full strength. At 0% the grid only follows the planar surface.

Mesh Falloff

This controls how much the Grid Warp is affected when overlapping the edges of the PowerMesh. If the Grid is outside the PowerMesh area, it will still be influenced if the falloff is above zero.

In the example below, the grid point is being warped too far by the PowerMesh:

insert powermesh falloff

Adjusting the PowerMesh falloff to 0% tells Mocha to ignore the grid outside the mesh boundaries, and pulls it back into place:

insert powermesh falloff zero

Reset

This button resets the Grid Warp back to the original unmodified grid and changes the PowerMesh warp settings back to the defaults.

Blend

Mode

This dropdown sets the blend mode. Options include:

  • Darken

  • Multiply

  • Color Burn

  • Lighten

  • Screen

  • Color Dodge

  • Overlay

  • Softlight

  • Hardlight

  • Color

  • Luminosity

Opacity

This parameter controls the opacity of the foreground image insert. It is a multiplier of the alpha of the insert, applied before the composite.

Gain

This is where you color correct the insert once it has been added to the tracked layer.

Motion Blur

Select this button if you want to apply motion blur to your insert.

Render Insert Cutout (RGBA)

This renders the cut out of the insert with alpha along with the composite file. Turn off if you only want the composite render of the insert.

Masks

Use All Layers

If you want to mask off an area of your insert, clicking on this tool will cause the rendered
insert to only change the pixels within the mattes above and including the current layer.
If the checkbox is switched off, you can select an individual matte to use instead.

Invert

Inverts the mattes of the Insert.

Invert Alpha

Inverts the Insert Alpha if it exists.

Erode Alpha

Change this value from its default zero value to erode the alpha channel of the insert by the given number of pixels.

Feather

If you want to add a soft edge around the edges of the insert, use the Feather controls. There are separate controls for the left, right, top and bottom edge widths, which are between 0 and 1, where the value 0 indicates no edge and 1 means that the edge covers the whole of the insert.

edge

If you switch on Lock, all four edges are locked to the same edge width. H Lock and V Lock apply lock separately to the left/right and the top/bottom edges respectively.

Transform

This section controls a level of corner pin control on top of the adjusted track. This feature is particularly useful for curved surfaces. It allows the corners of the surface to be used in the same way as the warp control points (described below) – by aligning the newly imported insert with a region of the tracked image independently of the blue surface contour, which follows the adjusted track.

The offset region is drawn in yellow underneath the existing blue surface. You can use the new points either by dragging the sliders to increase or decrease the value of the coordinates, or by highlighting the numeric field and typing in a new value. In addition to this you can hold down the Alt and Control keys on the keyboard (Alt+Cmd on a Mac) whilst dragging a surface point or line to achieve the same result. The new points created are offset in a controlled way from the adjusted track.

Hold down Alt, Control and Shift (Alt+Shift+Cmd on a Mac) to gear the changes down 10 times. There is finally a Reset button to return the offset parameters to their defaults.

insert transform

When using the rotate tool to rotate the offset surface, the pixel aspect ratio of the insert clip will be used to create the correct effect. If it is not correct the offset surface will appear to squeeze or stretch as it is rotated. See the ROI section to see how to fix this problem.

Export Offset Tracking Data

Export the transformed track. The offsets are keyframed settings of the position of the insert.

Inserting in Stereo

All inserts are warped in stereo if you have tracked both views.
You can render the insert for both views by selecting Operate on All Views button next to the Render buttons on the timeline.

operate on all views render

Rendering the Insert in the Plugin

You have a lot of control over the Insert renders in the plugin interface.

See Rendering Insert Layers in the Mocha Pro Plugin section of the User Guide.

Insert Render Resampling

If you want to change the type of resampling applied to an Insert render, you can change this in the Project Settings.

Go to `File > Project Settings…​`and look for the "Resampling" section:

project settings resampling

Resampling types are:

  • Bilinear: The default setting. A very common resampling method that produces decent results

  • Nearest neighbour: Fast, but can be lower quality

  • Lanczos 2-4: Good for preserving details and minimising artifacts, but can produce ringing on certain images

Ultimately the resampling can be subjective so you may need to test what works best for the given render, but we highly recommend either Bilinear or Lanczos for Insert renders.


The Mega Plate Module

Note This section only relates to Mocha Pro. This feature is not available in Mocha HitFilm or Mocha AE. For a full comparison of features, please refer to the comparison chart online.

Overview

The Mega Plate module is designed to build complete scenes from your footage to create large clean plates for the purpose of inserting and removing.

Once rendered, Mega Plates can be used as a regular oversized clean plate in the Remove module (otherwise known as a Mega Clean Plate), or exported to be used as a background insert.

Much of the workflow is similar to the Remove Module in that you track areas of the scene and can also remove foreground objects,
but the main goal is to make a full picture of the scene from the moving camera.

Important The Mega Plate module is GPU optimised. Make sure you have GPU processing turned on in the 'GPU' page of Preferences for optimal results.

The Mega Plate Building Process

Mega Plates require a few simple steps to work correctly. The key to a good Mega Plate is a series of one or more tracked backgrounds and masked foreground objects.

The final rendered plate will be centred on the original source frame you rendered from, in order to line up the plate correctly for further work.

Important Since the final mega plate is centred on the frame you rendered on, there may be a large amount of alpha padding to one side of your resulting render. To reduce this, aim to render from a frame that is approximately in the middle of the camera motion.

1. Identify your foreground and background planes

First of all, scrub through your timeline and identify the planes of depth within your shot.
Background often consists of multiple planes of motion, and there can also be obstructing foreground material.
For example, in the shot below, the snowboarder is in front of the mountains.

megaplates shot 001

2. Track and roto your foreground elements

We handle the foreground first as we need to mask them off from the background plane and from each other.
You don’t actually need to worry too much about tracking the foreground:
If the object is untrackable for whatever reason, just hand-animate a spline around it.

You absolutely must track an object if it is going to be used to build the actual Mega Plate.
For more information on effective tracking, please refer to the tracking section of the documentation.

In the example below, we have tracked and rotoscoped the snowboarder which would otherwise obscure the mountains.

megaplates shot 002

3. Make sure your layer order is correct

Layer order matters in Mocha. The closer to the camera an object is, the higher in the layer stack it should be. Far background should be on the bottom layer, foreground objects should be on top, in order of closeness.

In the example here, we show the snowboarder layer is above the mountains layer

megaplates shot 003

4. Track your background planes

Once you have your foreground objects masked out across the timeline, draw as big a shape as possible. Make sure the background layer is under the foreground layers, and track.
For multiple planes of background, such as a floor and a wall, you will have to track two separate planes of motion. You must specifically track the background layer in order for the Mega Plate build to work.

Here we can see the background mountains tracked at the bottom of the layer stack, covering the large area of mountains in the distance:

megaplates shot 004

5. Adjust the size of your Mega Plate layer mattes

Once tracked, Mega Plates will only build the plate within the confines of the layers you want to use.

Because of this, you want to expand the size of your matte to accommodate the final render.

In the image below, we expand out the matte to approximate the size of the final built plate.

megaplates shot 005

Important Don’t make your layer TOO big! If there is a widely distorting perspective track, the matte may become too distorted and Mega Plates will not be able to build a full plate.

6. Turn on the cogs of the background layers you want to build from and adjust your parameters

Switch to the Mega Plate tab and adjust your parameters (see Mega Plate Parameters below).

Key things to focus on are:

  • Your search range

  • Whether to autoscale based on the data or define a final mega plate size

  • If you need to use an illumination model.

We recommend trying to build a Mega Plate with Illumination modelling set to None first. This is the fastest setting for rendering, and can quite often be all you need if there is not much light difference in the background over time.

7. Render

Once your layers are ready and the parameters are set, click the render button.

This will generate a large plate either based on your own dimensions, or autoscaled if you have set Autoscale on:

megaplates shot 006

Depending on what frame you render your plate, there may be a large amount of alpha padding to one side of the plate.
To avoid this, try rendering from the middle of the overall camera motion.

For example, in a simple left-to-right pan, render on the frame that is in the centre of the pan to fill out more the detail to either side of the centred frame.

Note Building a Mega Plate can be a slow process depending on the resolution of the footage and the amount of frames you are building from. You can optimize your search range (see Mega Plate Parameters below) but keep in mind that build quality can vary.

8. Remove foreground objects (optional)

When you have rendered your plate, you can then try to remove the foreground object from the resulting image:

  1. Select the foreground objects by turning on their cogs

  2. Click "Remove foreground" to initiate the removal.

Note that standard rules for removing foreground apply. See The Remove Module for more information on removing foreground objects.
The background layers you generated the Mega Plate with must be encompassing the foreground layers in order to remove them.
In the image below, we see the snowboarder layer is sitting over the mountain layer and can there fore be removed:

megaplates shot 007

9. Create a Mega Clean Plate

Now that you have rendered a final image, with or without removing the foreground objects from the plate, you can then turn it into a clean plate clip and save it to disk.

To do this:

  1. Scrub to the frame you rendered a Mega Plate

  2. Click the "Create" button under the Clean Plate clip settings in the bottom left of the module parameters

  3. Save the Mega Clean Plate to your preferred place on disk

This will create a Mega Clean Plate clip which can now be referenced by the Remove module.

megaplates shot 008

create megacleanplate

Mega Plate vs Mega Clean Plate - What is the difference?

With all these "Mega" terms floating around let’s clarify what we mean by the two terms:

Mega Plate

The Mega Plate is the large scene generated by the Mega Plate module. This is essentially using parameters similar to the Remove module to make a full representation of the entire tracked footage.

Mega Clean Plate

This is a frame or series of frames that are saved to disk from the Mega Plate render for the purpose of painting or "cleaning up" (thus the term "Clean Plate").

The Mega Clean Plate clip created from Mega Clean Plates is what is referenced by the Mocha Remove module to help replace pixels.

The Mega Plate makes the Mega Clean Plate

To distinguish the three steps clearly:

  1. You generate a Mega Plate from the tracked scene

  2. You create a Mega Clean Plate from the generated Mega Plate and save it to disk for further editing/cleaning

  3. The Remove module can use the Mega Clean Plate for further work.

Mega Plate Troubleshooting

One or more background layers must be defined that include all areas that the foreground object moves across during the shot.

To get the result you expect you should observe the following rules:

  • If you are getting a large amount of alpha padding to one side of the plate, try rendering from the middle of the camera motion. For example, in a simple left-to-right pan, render on the frame that is in the centre of the pan to render the detail to either side of the centred frame.

  • As the tracker computes the motion of planar objects in the scene, you get the best results if the background is planar, or it has been subdivided into planar elements. Otherwise you might see artifacts.

  • If Mocha Pro cannot track the background accurately you will probably get artifacts. If your selection of the background includes objects that move differently to the background this can reduce the accuracy of the computed motion.

  • If your selection of the background includes parts of the foreground objects then this can cause problems for the tracker as it will compute a motion for the background that is influence by the movement of the foreground. This may also cause artifacts when the Mega Plate render is performed.

  • If the background contains e.g. a waterfall or another object that changes appearance from frame to frame, you will most likely get artifacts if you try to build a plate or remove an object that moves across such a background. Mocha Pro will not know how to handle the changes. Another cause of such artifacts is moving specular reflections.

Mega Plate Parameters

Here we provide a breakdown of each Mega Plate parameter and how to use it effectively.

megaplate tabfull

When changing parameters in Mocha Pro the change only affects the currently selected layer. To change the parameters of a layer other than the currently selected layer that layer must first be selected.

Input Tab

Here you specify the input clip for the mega plate process and any cleanplates you wish to import.

megaplate input

Input Clip

You can choose from any of the Mocha Pro result clips to be used as the source clip to fill the requested layers, instead of the default, which is to use the originally imported clip as the input clip. This can be useful if you have to do multiple passes to get an effective plate.

Cleanplates

Here you can import Mega Clean Plates to replace frames in your footage via the Remove module. Note that in order to tell Mocha the plate is oversized (i.e doesn’t match the original project source dimensions), import the plate from the Mega Plates module rather than the Remove module.

If you import the Mega Plate via the Remove module, Mocha will ask you if you want to create a Mega Clean Plate clip.

To import one or more cleanplates:

  1. Click on Import. This pops up the Cleanplates window.

  2. Click on the file Import…​ button to specify the file(s) you want to use. If they are numbered in the same way as the input clip, they will be given corresponding frame numbers. Otherwise, edit the Frame Number field for each cleanplate to set up the correct frame number. The entries for two cleanplates will look like this:

    remove cleanplates

  3. By default the Preview option is switched on. This means that the selected (highlighted) cleanplate will be shown in the display window. The current frame viewed on the timeline is also changed to the selected cleanplate frame. When Preview is switched off, the view switches back to the clip you are viewing.

  4. Click on the File name or Frame Number for any cleanplate to change the selection. The Preview option allows you to select the correct frame number for your cleanplate(s). If you import a single cleanplate, the frame number will be listed as "All". This means that the cleanplate will be used for all the frames of the clip. Use this option if the camera is locked off. Change "All" to a particular frame if want to change this behavior and track the cleanplate from the specified frame into the other frames.

Note The All option only applies when you are using a single cleanplate.

If you import two or more cleanplates, Mocha Pro will try to guess the frame numbers from any numbering in the file name. When using the cleanplates between those frame numbers, Mocha Pro will blend the nearest two cleanplates to produce a smooth transition through the clip.

If you want to change the cleanplate settings after exiting the cleanplate window, click on Edit…​ You would need to do this if you are using the frames on a new machine where the cleanplates are stored in a different location, or just to add new cleanplates. If you re-import files with the same name but different directory to existing cleanplate files, Mocha Pro will update the file to the new directory.

Create (Mega Clean Plate)

Once you have rendered a Mega Plate within Mocha Pro you can create a Mega Clean Plate from the currently viewed frame.

To do this, make sure you are viewing a frame you have rendered and click on the Create button. This will create a clip containing the rendered frame you are viewing, and set the Cleanplates clip to the new clip. You can then touch up this Mega Clean Plate from your saved folder.

When you save your edits, it will automatically be updated in Mocha Pro to be used in the Mega Clean Plate list.

Important Creating a Mega Clean Plate in the Mega Plate module does NOT use that clean plate for subsequent renders in the Mega Plate module. To use a Mega Clean Plate, switch to the Remove module.

Output Tab

This assigns an output clip for the render. You can create new output clips if needed here.

Search Range

Used to specify which frames should be used when building a Mega Plate. The First Frame, Last Frame, # Frames Before and# Frames After settings can be keyframed.

  • First Frame and Last Frame specify an absolute range in the input clip

  • # Frames Before and # Frames After settings specify the range relative to the currently rendered frame. If both options are used the intersection of the two frame ranges is used.

search range

Step

With this option you can specify that not every frame in the reference range is to be used.

Setting it to three, for instance, means that only every third frame will be accessed.
This feature can speed up the removal process for large projects, especially film projects, which are very memory intensive.

Important Setting a step value can skip over clean plates for specific frames causing them to not be used in the Mega Plate calculation.

Auto Step

This is an automatically calculated version of the manual Step field. If you’re not quite sure what step is optimal,
Auto Step will look at the motion of the layers and try to determine the best step to use.

Illumination Model

This specifies how to model changes in illumination.

illumination

  • The None option will not model changes, giving you a result very quickly.

  • Linear will model global changes and should hence be used if the brightness change between frames are caused by e.g. changes in aperture.

  • Interpolated will model global and local changes and is often useful when there are erratic lighting changes or a clean plate is used.

Smoothing Level

This controls the amount of smoothing applied in the Interpolated model. Increase the value if there are artifacts which might be resolved with more smoothing, either spatial variations or temporal variations.

Blend Interior

This option causes pixels from different frames to be blended into each other to avoid tearing artifacts inside the Mega Plate.

Blend Amount

Select either Blend or Randomize and increase the value to reduce artifacts which sometimes can be seen when illumination modelling fails.

  • Blend uses alpha blending from the replaced areas to either the original pixels or the recently replaced areas.

  • Randomize mixes original and replaced pixels in a random way to achieve a similar effect.

3D Compensation

3D compensation can be switched on to try to remove artifacts due to the background layer not being planar.

For example, if you have tracked a background that has subtle parallax it can cause removal in other frames to look incorrect. 3D compensation attempts to model the parallax change in the target frame.

Flood Fill

If part of the missing background has not been found anywhere in the clip, and the plate cannot be completely built, Flood Fill can be switched on to fill the remaining region using a flood fill method.

Mega Cleanplates

Remove Foreground

This button will remove any foreground objects in the Mega Plate.

To remove foreground layers in a mega plate:

  1. Render the mega plate first using your background layers by selecting the layer processing cogs and pressing the render button

  2. Switch on the cogs of the foreground layers you want to remove

  3. Press Remove Foreground

Any layers selected will then remove the underlying foreground objects from the mega plate, providing they have removable background behind them.

See the Remove Module documentation for more information on how foreground objects are removed with background data.

Autoscale
On by default, this option will automatically calculate the required size of the plate. If unselected, the dimensions in the fields below the autoscale option will be used.

Important If you don’t have enough memory to build the autoscaled plate, Mocha will automatically reduce the size of the plate to fit the available memory.

Tips for Mega Plates

Some of the foreground object is still visible after using Remove Foreground.

  • Remember that you can only remove an object if the background behind it is also tracked. Track the background layer(s) before removing a foreground object.

  • Check that the object is inside the selection contour in every frame. If it isn’t, move the control points outwards as necessary to completely enclose the object. Use linking forwards/backwards to apply changes to the contour in multiple frames.

  • Check whether the relative motion of the foreground and background layers is sufficient to see "behind" the whole of the foreground object. Mocha Pro only needs to see the background in one frame to achieve good results. If more images are available in the clip, track the selections over a few more images. This may provide Mocha Pro with the extra information it needs.

  • Try pulling the selection contour closer to the edge of the object. This will provide Mocha Pro with extra background pixels.

The built Mega Plate is brighter/darker in sections rather than being evenly lit.

  • Changes in illumination or camera aperture will change the overall brightness of the image, making direct replacement of pixels inappropriate. Select the Linear illumination model to compensate for the brightness changes and repeat the render.

  • If the variation is more complex than a simple brightness change, try the Interpolated illumination model, which will compute and compensate for changes in apparent brightness and color that vary across the region being built.

Some Mega Plate sections don’t line up with the rest of the image.

  • This may be due to inaccurate tracking of the background. If you think this is possible, see the above hints on improving the tracking.

  • If the tracking accuracy cannot be improved, increase the Blend amount. This will dissolve the plate sections into the original image and reduce the tearing artifacts.

  • For small foreground objects such as wires, in front of a non-planar background, switch on 3D Compensation. This will attempt to model the effect of the varying 3D depth of the background.

  • If there is more than one background selection, special treatment of the boundary between them is often required. If the background layers are joined, such as a wall and floor selection, use the Attach Layers tool to join them together and avoid artifacts at the boundary. If they are moving independently, you need to adjust the boundary in the front background selection to accurately delineate the boundary between the two background selections.

Render is slow.

If you have a long clip, especially working with high resolution footage, Mega Plate renders can be slow because Mocha has to search over a large number of images with a large memory footprint.

Before you change any settings in the Mega Plate parameters, it is worthwhile checking to see if GPU Processing is turned on in Preferences under the GPU page.

GPU Processing can have a significant impact on your render times.

Mega Plate and Remove are the most memory intensive modules in Mocha Pro, and it will always benefit the performance to add more memory.
If Mocha Pro can fit all the images it needs in memory, performance will be dramatically accelerated when rendering Mega Plates with multiple frames, because it will minimize the amount of disk accesses.

Your aim should be where possible to change the settings to achieve this:

  • Change the First Frame and Last Frame in Range to a smaller range of frames. Experiment by reducing the range of frames searched.

  • Increase the Step in Range to sample less frames.

  • Create clean plates on key frames (such as the start, middle and end of the shot, or wherever there is significant change) and check "Use Cleanplates Exclusively" to reduce the need to look for other frames.

Using Mega Clean Plates in the Remove Module

Ultimately once you have created a Mega Clean Plate, it can be used as a single clean plate for your scene.

This means you can paint on one large plate and then reference only this clean plate in remove, by turning on "Use cleanplates exclusively".

To use the Mega Clean Plate in the Remove module:

  1. Follow the Mega Plate rendering procedure listed above

  2. Create the Mega Plate (step 9 of the process)

  3. Make any changes to the clean plate you need in your image editor

  4. Switch to the remove module in Mocha

  5. Create a foreground layer if one doesn’t exist yet then select the foreground

  6. Choose the Mega Clean Plate clip from the "Cleanplate Clip" section

  7. Select "Use Cleanplates Exclusively"

  8. Render forwards

Any changes you have painted into the clean plate will then be applied across the whole timeline.

For more details on how to use clean plates in the Remove module, see The Remove Module section.

Examples of Using Mega Clean Plates in compositors

You can also import the rendered Mega Plate into a compositor and use the Mocha tracking data to align the plate.

Below are some basic examples of how to do this.

Inserting a Mega Clean Plate into an After Effects Composition

You can insert a Mega Plate into an After Effect composition the same way as you do with a regular insert.

However, since the Mega plate will always be larger than your original composition, you need to do some extra steps to set up the plate:

  1. Export the mega plate to disk, either by creating a clean plate in the Mega Plates module or exporting the single frame in Export Rendered Clips.

  2. Align your Surface to the frame you used to create the mega plate. For example, if you rendered a Mega Plate on frame 200, align the surface to frame 200.
    AlignSurface 2x

  3. Go to Export Tracking Data and export After Effects CC Power Pin (or Use Create Track Data in the Mocha Adobe Plugin)

  4. Import the mega plate into After Effects and drag it to your composition

  5. Precompose the mega plate and select the Leave All Attributes option

    megaplates ae precomp

  6. Turn on Collapse Transformations on the new precomp layer
    megaplates ae collapsetransforms

  7. Apply the CC Power Pin track data to the mega plate precomp layer, either by pasting from the clipboard or using "Apply Export" in the Mocha Pro Adobe plugin.

Now the corner pin will be applied to the precomped layer, but with the Collapse Transformations option set, the whole plate will be distorted in place.

Inserting a Mega Clean Plate into a Nuke node graph

You can insert a Mega Plate into Nuke the same way as you do with a regular insert.

However, since the Mega plate will always be larger than your original composition, you need change to do some extra steps to set up the plate:

  1. Export the mega plate to disk, either by creating a clean plate in the Mega Plates module or exporting the single frame in Export Rendered Clips.

  2. Align your Surface to the frame you used to create the mega plate. For example, if you rendered a Mega Plate on frame 200, align the surface to frame 200.
    AlignSurface 2x

  3. Go to Export Tracking Data and export Nuke Corner Pin

  4. In Nuke, import your original footage to a read node

  5. Paste the corner pin into the node graph. If the "From" fields in your corner pin are not set to the original footage size, set them now.

    megaplates nuke cornerpin from

  6. Import the mega plate to a new read node

  7. Apply a Reformat node to the mega plate to fit to the project size, but set the Resize type to "None"

    megaplates nuke reformat

  8. Cut and paste the corner pin to mega plate or just hook up the inputs

  9. Merge the mega plate over the top of your original footage.

megaplates nuke cornerpin
'''

The Remove Module

Note This section only relates to Mocha Pro. This feature is not available in Mocha HitFilm or Mocha AE. For a full comparison of features, please refer to the comparison chart online.

Overview

The remove module is designed to remove foreground objects from your footage to create clean plates. A removed object can be anything: wires, poles, signs, people and so on. The only requirement for a good removal is enough background to use.

To understand how Mocha Pro removes a foreground object consider how you would do it yourself. A common method is to select a source image where the foreground object does not obscure the background region you are trying to paint in the target frame. You would then clone or otherwise copy the pixels from the source frame to the target frame. If the background is not in the same position in the two frames you would have to track the patch of pixels into the frame, and if the lighting is different between the two frames you would have to adjust the brightness of the patch.

The remove module attempts to do this for you automatically using a method called motion keying. As it has tracked the background areas you have defined, it can move pixels of these background areas from one frame to another. Hence, if a part of a background area is obscured in one frame, Mocha Pro can search the rest of the clip for a frame where the obscured background area is visible, and move the pixels correctly into the target frame. During this process Mocha Pro will evaluate and compensate for the lighting differences between the source and the target frame.

Important The Remove module is GPU optimised. Make sure you have GPU processing turned on in the 'GPU' page of Preferences for optimal results.

The Removal Process

Object removal requires a few simple steps to work correctly. The key to a good remove is adequate, tracked background and a correctly masked foreground.

1. Identify your foreground and background planes

First of all, scrub through your timeline and identify the planes of depth within your shot. Background often consists of multiple planes of motion, and there can also be obstructing foreground material. For example, in the shot below, the sign is in front of the ground, and the car door is in front of (but not obscuring) the sign.

remove shot 001

2. Track and roto your foreground elements

We handle the foreground first as we need to mask them off from the background plane and from each other. You don’t actually need to worry too much about tracking the foreground: If the object is untrackable for whatever reason, just hand-animate a spline around it. You absolutely must track an object if it is going to be used as a background pass to replace foreground. For more information on effective tracking, please refer to the tracking section of the documentation.

In the example below, we have tracked and rotoscoped the sign and the door frame, which would otherwise obscure the ground plane.

remove shot 002

3. Make sure your layer order is correct

Layer order matters in Mocha. The closer to the camera an object is, the higher in the layer stack it should be. Far background should be on the bottom layer, foreground objects should be on top, in order of closeness.

In the example here, we show the door layer is above the sign layer, and the sign is above the ground layer in the stack.

remove shot 003

4. Track your background plane

Once you have your foreground objects masked out across the timeline, draw as big a shape as possible to cover as much of the possible area you want to remove. Make sure the background layer is under the foreground layers, and track. For multiple planes of background, such as a floor and a wall, you will have to track two separate planes of motion. You must specifically track the background layer in order for the removal to work, even if you are working with a locked-off shot.

Here we can see the background drawn on a layer at the bottom of the layer stack, covering the large area of grass.

remove shot 004

5. Select the layer you want to remove and adjust your removal parameters

Switch to the remove tab and adjust your parameters (see Remove Parameters below). Key things to focus on are your search range, whether or not you need to create or adjust a cleanplate, and if you need to use an illumination model.

We recommend trying a remove with Illumination modeling set to None first. This is the fastest setting for removals, and can quite often be all you need if there is not much light difference in the background over time.

6. Render

Once your layers are ready and the parameters are set, click the render button or render forward.

remove shot 005

Note Removal can be a slow process depending on the resolution of the footage and the amount of frames you are removing on. You can optimize your search range (see Remove Parameters below) but keep in mind that removal quality can vary.

Removal Troubleshooting

One or more background layers must be defined that include all areas that the foreground object moves across during the shot.

To get the result you expect you should observe the following rules:

  • As the tracker computes the motion of planar objects in the scene, you get the best results if the background is planar, or it has been subdivided into planar elements. Otherwise you might see artifacts.

  • If Mocha Pro cannot track the background accurately you will probably get artifacts. If your selection of the background includes objects that move differently to the background this can reduce the accuracy of the computed motion.

  • If your selection of the background includes parts of the foreground objects then this can cause problems for the tracker as it will compute a motion for the background that is influence by the movement of the foreground. This may also cause artifacts when the removal is performed.

  • If the background contains e.g. a waterfall or another object that changes appearance from frame to frame, you will most likely get artifacts if you try to remove a foreground object that moves across such a background. Mocha Pro will not know how to handle the changes. Another cause of such artifacts is moving specular reflections.

Remove Parameters

Here we provide a breakdown of each remove tool parameter and how to use it effectively.

removetabfull

When changing parameters in Mocha Pro the change only affects the currently selected layer. To change the parameters of a layer other than the currently selected layer that layer must first be selected.

Input Tab

Here you specify the input clip for the remove process and any cleanplates you wish to import.

input

Input Clip

You can choose from any of the Mocha Pro result clips to be used as the source clip to fill the requested foreground layers, instead of the default, which is to use the originally imported clip as the input clip. This can be useful if you have to do multiple passes to get an effective remove.

Cleanplates

Here you can import cleanplates to replace frames in your footage. If you don’t have enough background to use in your shot, importing your own cleaned up version of a frame can assist the remove tool greatly.

To import one or more cleanplates:

  1. Click on Import. This pops up the Cleanplates window.

  2. Click on the file Import…​ button to specify the file(s) you want to use. If they are numbered in the same way as the input clip, they will be given corresponding frame numbers. Otherwise, edit the Frame Number field for each cleanplate to set up the correct frame number. The entries for two cleanplates will look like this:

    remove cleanplates

  3. By default the Preview option is switched on. This means that the selected (highlighted) cleanplate will be shown in the display window. The current frame viewed on the timeline is also changed to the selected cleanplate frame. When Preview is switched off, the view switches back to the clip you are viewing.

  4. Click on the File name or Frame Number for any cleanplate to change the selection. The Preview option allows you to select the correct frame number for your cleanplate(s). If you import a single cleanplate, the frame number will be listed as "All". This means that the cleanplate will be used for all the frames of the clip. Use this option if the camera is locked off. Change "All" to a particular frame if want to change this behavior and track the cleanplate from the specified frame into the other frames.

Note The All option only applies when you are using a single cleanplate.

If you import two or more cleanplates, Mocha Pro will try to guess the frame numbers from any numbering in the file name. When using the cleanplates between those frame numbers, Mocha Pro will blend the nearest two cleanplates to produce a smooth transition through the clip.

If you want to change the cleanplate settings after exiting the cleanplate window, click on Edit…​ You would need to do this if you are using the frames on a new machine where the cleanplates are stored in a different location, or just to add new cleanplates. If you re-import files with the same name but different directory to existing cleanplate files, Mocha Pro will update the file to the new directory.

Create (Cleanplate)

Important Clean plates are created based on the bit depth of the current source clip.

One useful option within Mocha Pro is to create a cleanplate from the currently viewed frame.

To do this, make sure you are viewing the frame you want to use and click on the Create button. This will create a clip containing the frame you are viewing, and set the Cleanplates clip to the new clip. You can then touch up this cleanplate from your Results folder.

The frame that is saved will be based on the current bit depth of the source clip, which will change the image format.
For low bit depth clips, this will either be tif (the default), or dpx. For float, this will be exr or tif.

You can change to the preferred image type in preferences under the clip tab.

When you save your edits, it will automatically be updated in Mocha Pro to be used in the cleanplate list.

Use Cleanplates Exclusively

If this option is checked, only the cleanplates will be used by Remove to remove the pixels in the selected layer. If it is unchecked, the normal Remove process will be used, pulling in pixels from other frames in the input clip. The cleanplates will then only be used to remove the remaining pixels.

Output Tab

This assigns an output clip for the removal render. You can create new output clips if needed here.

Search Range

Used to specify which frames should be used when removing a layer. The First Frame, Last Frame, # Frames Before and# Frames After settings can be keyframed.

  • First Frame and Last Frame specify an absolute range in the input clip

  • # Frames Before and # Frames After settings specify the range relative to the currently rendered frame. If both options are used the intersection of the two frame ranges is used.

search range

Step

With this option you can specify that not every frame in the reference range is to be used.

Setting it to three, for instance, means that only every third frame will be accessed.
This feature can speed up the removal process for large projects, especially film projects, which are very memory intensive.

Important Setting a step value can skip over clean plates for specific frames causing them to not be used in the Remove calculation.

Auto Step
This is an automatically calculated version of the manual Step field. If you’re not quite sure what step is optimal,
Auto Step will look at the motion of the layers and try to determine the best step to use.

Illumination Model

This specifies how to model changes in illumination.

illumination

  • The None option will not model changes, giving you a result very quickly.

  • Linear will model global changes and should hence be used if the brightness change between frames are caused by e.g. changes in aperture.

  • Interpolated will model global and local changes and is often useful when a cleanplate is used.

Smoothing Level

This controls the amount of smoothing applied in the Interpolated model. Increase the value if there are artifacts which might be resolved with more smoothing, either spatial variations or temporal variations.

Blend Interior

This option causes pixels from different frames to be blended into each other to avoid tearing artifacts inside the Remove area.

Blend Amount

Select either Blend or Randomize and increase the value to reduce artifacts which sometimes can be seen when illumination modelling fails.

  • Blend uses alpha blending from the replaced areas to either the original pixels or the recently replaced areas.

  • Randomize mixes original and replaced pixels in a random way to achieve a similar effect.

3D Compensation

3D compensation can be switched on to try to remove artifacts due to the background layer not being planar.

For example, if you have tracked a background that has subtle parallax it can cause removal in other frames to look incorrect. 3D compensation attempts to model the parallax change in the target removal frame.

Flood Fill

If part of the missing background has not been found anywhere in the clip, and the foreground object therefore cannot be completely removed, Flood Fill can be switched on to fill the remaining region using a flood fill method. This is especially useful when it is the matte you are interested in, as you then don’t care too much about the quality of the removal but require that the foreground object is completely removed to avoid holes in the matte. The Smoothing Level should be increased if you result is not as smooth as it should be or there are temporal variations in the results.

Stereo Remove

Stereo Remove works in exactly the same way as Mono Remove above, with the additional bonus of being able to render both views at the same time and also choosing whether or not each view assists the other view during the remove process.

To render a remove in stereo:
  1. Track the background in both views with a layer as outlined in "Stereo Tracking" above

  2. Mask out and animate the foreground object you want to remove. You will need to check to make sure the object is correctly covered by the layer in both views.

  3. Make sure the foreground layer is above the background layer in the layer controls.

  4. Adjust your remove parameters (See the full User Guide for details on Remove parameters)

  5. If it is not already on, press the "Operate in all views" button on the right side of the render buttons.

    operate on all views render

  6. Click the render button

prefer same view Remove

By default "Prefer Same View" is checked on in the search range section of the Remove tab. This will attempt to use the current view rather than both views to perform the remove.
If you have useful information in the other view that may assist the remove, you can uncheck this option.

Tips for Removal

Some of the object is still visible after removal.

  • Remember that you can only remove an object if the background behind it is also tracked. Track the background layer(s) before removing a foreground object.

  • Check that the object is inside the selection contour in every frame. If it isn’t, move the control points outwards as necessary to completely enclose the object. Use linking forwards/backwards to apply changes to the contour in multiple frames.

  • Check whether the relative motion of the foreground and background layers is sufficient to see "behind" the whole of the foreground object. Mocha Pro only needs to see the background in one frame to achieve good results. If more images are available in the clip, track the selections over a few more images. This may provide Mocha Pro with the extra information it needs.

  • Try pulling the selection contour closer to the edge of the object. This will provide Mocha Pro with extra background pixels.

The replaced background region is brighter/darker than the surrounding image.

  • Changes in illumination or camera aperture will change the overall brightness of the image, making direct replacement of pixels inappropriate. Select the Linear illumination model to compensate for the brightness changes and repeat the object removal.

  • If the variation is more complex than a simple brightness change, try the Interpolated illumination model, which will compute and compensate for changes in apparent brightness and color that vary across the region being removed.

The background patches don’t line up with the surrounding image.

  • This may be due to inaccurate tracking of the background. If you think this is possible, see the above hints on improving the tracking.

  • If the tracking accuracy cannot be improved, increase the Dissolve Width. This will dissolve the patches into the original image and reduce the tearing artifacts.

  • For small foreground objects such as wires, in front of a non-planar background, switch on 3D Compensation. This will attempt to model the effect of the varying 3D depth of the background.

  • If there is more than one background selection behind the foreground selection, special treatment of the boundary between them is often required. If the background layers are joined, such as a wall and floor selection, use the Attach Layers tool to join them together and avoid artifacts at the boundary. If they are moving independently, you need to adjust the boundary in the front background selection to accurately delineate the boundary between the two background selections.

Remove is slow.

If you have a long clip, especially working with HD or film, Remove can be slow because it has to search over a large number of images with a large memory footprint.

Before you change any settings in the Remove parameters, it is worthwhile checking to see if GPU Processing is turned on in Preferences under the GPU page.

GPU Processing can have a significant impact on your render times.

Remove is the most memory intensive module in Mocha Pro, and it will always benefit the performance to add more memory.
If Mocha Pro can fit all the images it needs in memory, performance will be dramatically accelerated when rendering Remove in multiple frames, because it will minimize the amount of disk accesses.

Your aim should be where possible to change the settings to achieve this:

  • Change the First Frame and Last Frame in Range to a smaller range of frames. Sometimes Mocha Pro can spend a lot of time removing a small part of the foreground image, and if your layers were chosen loosely, not all of the foreground needs to be removed. Experiment by reducing the range of frames searched.

  • Increase the Step in Range to sample less frames.

  • Create clean plates on key frames (such as the start, middle and end of the shot, or wherever there is significant change) and check "Use Cleanplates Exclusively" to reduce the need to look for other frames.
    '''

The Stabilize Module

Overview

Note This section only relates to Mocha Pro.
The Stabilize module is unsupported for 360 Equirectangular footage in VR Mode. Use the Reorient module to stabilize 360 footage.
This feature is not available in Mocha HitFilm or Mocha AE.
For a full comparison of features, please refer to the comparison chart online.

The stabilize feature in uses the data you have tracked to lock down a moving shot. You can think of it as the inverse of what tracking does: It moves the footage around an area rather than an area around the footage. Stabilization is useful for:

  • Removing camera jitter and bumps

  • Locking off a shot so it is easier to work with, before restoring the motion back into the final composition

The Main Stabilization Parameters Interface

Stabilization is a fairly straightforward operation. Once you have selected the tracked layer you wish to work with you have options to restrict the stabilization to key details.

StabilizeParameters 001

Input Tab

Select the clip that you wish to use to stabilize here.

StabilizeInput 001

Range Tab

Select the frame range for the stabilization.

StabilizeRange 001

Fixed Frames

Here you can enter the frames you want to be unaffected by stabilization. Mocha will adjust the stabilization between these frames. You can either enter them into the field, or go to a frame and press the + key.

StabilizeFrameList 001

Fixed frames can be useful when you want stabilization across a shot but would like to keep the general motion of the original shot intact.

When using Warp Mapping, the fixed frames list is limited to one frame. Warping is reset to warp from that frame.

Smooth

This is the main section for controlling how you want the shot to stabilize.

StabilizeMotion 001

All Motion

This checkbox sets all the options below it.

X Translation

Stabilize translation in X

Y Translation

Stabilize translation in Y

Rotation

Stabilize rotation

Zoom

Stabilize the scale/zoom

X Shear

Distort the footage according to the tracked surface’s shear data in X

Y Shear

Distort the footage according to the tracked surface’s shear data in Y

X Perspective

Distort the footage according to the tracked surface’s perspective data in X

Y Perspective

Distort the footage according to the tracked surface’s perspective data in Y

Shear and Perspective stabilization can be useful when you want to straighten out a plane in your footage to work on it flat before restoring it to its original perspective and motion.

Maximum Smoothing

Stabilize across the entire track. Setting this value will override the #Frames value beneath it.

# Frames

Stabilize variation across a certain amount of frames. Setting this to a low value will focus the stabilization to only pick up motion that occurs in short bursts (such as a bump in the road). A higher value will try to adjust longer movements.

Warp Mapping

Warp Mapping utilizes the PowerMesh tracking to lock down warping areas.

Warp Mapping parameters

warp mapping parameters

To use warp mapping:

  1. Track using the Mesh tracking parameter in the Track Module

  2. Switch to Stabilize

  3. Turn on "Mesh Warp" under the Warp Mapping column

  4. Choose if you want to add a fixed frame to the Frame List

  5. Choose whether you want to Unwarp or Warp to the tracked area

  6. Check "Use Matte" if you want to matte out the stabilized region

  7. Choose the render quality in the drop down

Warp Mapping will preview in the Viewer.

The Warp Mapping Parameters have the following effects:

Mesh Warp

This turns on the Warp Mapping. When it is turned off, Stabilize will use regular the regular planar stabilization controls.

Unwarp

Unwarp locks the frame to the "Fixed Frame" value set in "Frame List" to the right of the stabilize module parameters.
By default, this is set to the frame the PowerMesh frame was generated on.

Warp

This is the inverse of the Unwarp render. It warps the area to the motion of the tracked mesh.

Use Matte

The Matte uses the warped layer matte to mask out the warped region.

Quality

You can set 3 types of render quality for Warp Mapping:

  • Draft: A very fast render preview, but lower quality. Draft can produce triangulation on warped edges and is not recommended for final renders.

  • Normal: A balance of render quality and speed.

  • High: A much denser render warp mapping that produces high quality results but will render slower.

Warp Mapping Workflow

You can use warp mapping in two main ways:

  • Directly applying warping to images or footage with the intention of compositing back over the top of the footage.

  • Unwarping, editing then rewarping the original footage

Direct Warping Workflow

Direct Warping is the recommended workflow for Warp Mapping as it is a one-way change that avoids losing pixel information.

Warping workflow utilises the singular "Warp" option in Warp Mapping to modify an overlay, usually with alpha.

Direct Warping Workflow in the Plug-In
  1. Apply the Mocha Pro Plug-In to your footage layer or node

  2. Open the Mocha GUI

  3. Track the area you want to stabilize using the Mesh option

  4. Switch to Stabilize and turn on "Mesh Warp"

  5. Preview the warp and unwarp

  6. Close and save the project

  7. Create an overlay clip or image that you want to warp to the original shot.

From there, the workflow can depend on the host you’re using the Plug-In with:

For layer-based workflow such as After Effects, Premiere, HitFilm, etc.:
  1. Create a new layer above the source footage track using the overlay image you want to warp over your footage,

  2. Copy the Mocha Pro effect that contains your tracked mesh data

  3. Paste the Mocha Pro Plug-In to the overlay image as a new layer above the source image.
    warp overlay layers aftereffects

  4. In the Mocha Pro Plug-In interface, select "Stabilize: Warp" from the Module render drop down.
    warp mapping aftereffects

  5. If required, turn on "Apply Matte" in the Plug-In to isolate the region

For Node-based compositors such as Nuke, Silhouette, Flame and Fusion:
  1. Create a new image/clip node containing the overlay you want to warp over the source.

  2. Copy the Mocha Pro node that contains your tracked mesh data

  3. Paste the Mocha node again and then change the Source input to the overlay image node

  4. In the plug-in interface, select "Stabilize: Warp" from the Module render drop down.
    warp mapping nuke

  5. If required, turn on "Apply Matte" in the Plug-In to isolate the region

  6. Use a Merge to composite the warped overlay back on the source
    warp overlay nodes nuke

Note than in Fusion you need to make sure single-frame images or effects are read as the same length as your source footage or Mocha may not read the frames.

You can do this via a merge over the top of the original source footage and setting the merge up to only show the foreground. This will then adopt the frames of the footage when you feed the merge into Mocha.

To view the matte masking out the render, you may need to set 'Premultiply Output' from "Auto" to "On":

premultiply output

For Media Composer:
  1. Create a new video track above the source footage track and place your overlay on this new video track

  2. Drag the Mocha Pro efect that contains your tracked mesh data onto the track above and use the "Apply Mate" to mask RGB items over the top. Keep in mind however than alpha and blending is not supported in Media Composer without addtional plug-ins.
    warp overlay layers avid

  3. In the plug-in interface, select "Stabilize: Warp" from the Module render drop down.
    warp mapping avid

  4. Turn on "Apply Matte" in the Plug-In to isolate the region

Important Avid Media Composer doesn’t currently overlay alpha in the Warp Render, so masking is necessary to composite the warped shot.

This now warps the image back over the top of the original.

Overlay Images

Overlay images can either be transformed images (for example brand logos) set in place then comped on top of your reference frame, or painted areas on top of a full frame alpha.
As long as the final image matches the dimensions of the original source image, the frame should line up and be warped correctly.

For example, if your shot is 1920x1080, you would want to make a 1920x1080 overlay image and keep alpha in the area you don’t need modified.

You can also choose to just directly paint on top of a single still frame of the source footage and then use the masking tool to mask out the remainder of the frame.

Unwarping and Warping Workflow

When you want to make changes to the pixels of the whole stabilized sequence, the Unwarp/Warp method can be helpful.

It is important to know however that Unwarping and Warping is a destructive process. You may not be able to fully recover pixels lost to Unwarping when you rewarp it back into position.

For example, if you are tracking a person’s eyes opening and closing, the Unwarp process may be able to stabilize the skin until it crunches up and disappears, but rewarping means those stabilized pixels may stretch or tear unnaturally.

This doesn’t of course mean that unwarping and rewarping isn’t a valid approach. You just need to be aware of the limitations.

Unwarp/Rewarp workflow is a 3 stage process:

  1. Render the stabilized and unwarped area

  2. Make modifications to the stabilized region, such as paint, clean up etc

  3. Render a Warp of the modified result to restore back to the original motion.

In the Mocha Pro Plug-In most of this happens in the Plug-In interface.

Unwarp/Rewarp Workflow in After Effects
  1. Apply the Mocha Pro Plug-In to your footage layer

  2. Open the Mocha GUI

  3. Track the area you want to stabilize using the Mesh option

  4. Switch to Stabilize and turn on "Mesh Warp"

  5. Preview the warp and unwarp

  6. Close and save the project

  7. In the plug-in interface, select "Stabilize: Unwarp" from the Module render drop down.

  8. Turn on the Render checkbox. If you scrub the timeline you should now see the unwarp.

  9. Make a copy of the Mocha Pro Plug-In

  10. Precomp your existing layer and move all attributes into the new composition

  11. Paste the copied effect on top of the Precomp

  12. In the plug-in interface for the pasted effect, select "Stabilize: Warp" from the Module render drop down.

  13. Either Turn on "Apply Matte" or use the "Use matte" option in the Warp mapping to isolate the region

Now you can make any changes to the precomped version of the warp and it will rewarp correctly in the parent composition.

Unwarp/Rewarp Workflow in Node-based workflow (Nuke/Fusion/Silhouette/Flame)
  1. Apply the Mocha Pro Plug-In to your footage node

  2. Open the Mocha GUI

  3. Track the area you want to stabilize using the Mesh option

  4. Switch to Stabilize and turn on "Mesh Warp"

  5. Preview the warp and unwarp

  6. Turn on "Use Matte" if you want to matte out the render using the stabilized mask

  7. Close and save the project

  8. In the plug-in interface, select "Stabilize: Unwarp" from the Module render drop down.

  9. Turn on the Render checkbox. If you scrub the timeline you should now see the unwarp.

  10. Make a copy of the Mocha Pro node

  11. Paste the copied node on top of the original

  12. In the plug-in interface for the pasted node, select "Stabilize: Warp" from the Module render drop down.

To view the matte masking out the render, you may need to set 'Premultiply Output' from "Auto" to "On":

premultiply output

Now you can make any changes in the middle of the two Mocha Pro nodes and it will rewarp correctly in the parent composition.

Unwarp/Rewarp Workflow in the Standalone Application

The Standalone application is slightly more involved as you need to use an external application to make any changes to the rendered result.

  1. Track the area you want to stabilize using the Mesh option

  2. Switch to Stabilize and turn on "Mesh Warp"

  3. Preview the Unwarp

  4. Render forwards

  5. Export the clip to a lossless format, such as TIF

  6. Work on the rendered clip

  7. Go to the Clip module in Mocha and Import the modified clip back to your Mocha Project

  8. While in the import dialog, inherit the attributes of the origial clip via the "Inherit Attributes from" dropdown

  9. Go to the Stabilize module and choose the new clip from the "Input" dropdown on the far right

  10. Turn on Warp.

The modified clip should now warp back to the correct spot.

The Borders Tab

This tool helps automate removing the black edges you gain from the footage being stabilize.

Center

This centers the footage around the stabilized area.

Zoom

This zooms into the footage to push the edges out of frame.

Apply Crop

This applies the Clip mask from the Clip Module to crop down the edges.
If this is not applied, the stabilize will render outside the clip mask to the full dimensions of the original source footage.

The Auto Fill Tab

You can use Auto Fill to help fill in the black edges with previously tracked layers, similar to how the Remove Module uses tracked background layers to remove foreground objects.

If you have sufficient usable background available, you can avoid reducing the quality or resolution of footage, which is a common problem in stabilization.

For a better understanding of background fills, please refer to the Remove documentation.

Auto Fill

This turns on the auto fill function. You will not see the effect of fill however until you render the result.

Search Range

The range of frames to look for possible fill frames.

Model Illumination

Like the Illumination modeling in the remove tool, this tries to calculate the correct lighting for a filled-in edge.

Dissolve

This gives the option of dissolving the edge of frame into the filled frame to reduce obvious mismatches.

Fill from Background

If you haven’t set up a tracked background layer to use to help fill the edges, you can let Mocha attempt to fill by analyzing the footage. This is mostly useful for filling in frames where there is only position and rotation jitter.

Stabilizing Shaky Camera Footage

One of the most common reasons to stabilize is to remove jitter from a shaky camera shot. With shaky camera footage you are primarily concerned with removing position and rotation data. This means you do not have to use the shear or perspective options when tracking. Here is the common method:

  1. Track a static area of the shot using Translation, Scale and Rotation only. You don’t want to track a moving object within the shot as this will throw off the stabilization.

  2. Once tracked, switch to the Stabilization tool.

  3. Choose which fields of motion you wish to stabilize in the Smooth parameters. By default, translation is automatically selected. In many cases you may only be interested in position stabilization, but hand-held cameras can introduce scale and rotation jitter as well.

  4. Adjust the number of frames you want to look for jitter over. A small amount of frames will look for tiny adjustments in the overall motion, whereas bigger values in this field will adjust larger ranges of motion.

  5. If there is a significant amount of motion being stabilized and you are losing a lot of your picture in some frames, try fixing those frames by adding them to the Frame List on the left. Mocha will then interpolate the stabilization between these fixed frames.

Locking Down Areas of Motion

Sometimes you want to be able to completely lock down a section of the footage so that it stays in one place and everything else moves around it. For this you can use more aggressive stabilization:

  1. Track the area you want to lock down using whichever of the motion parameters you require. Tracking perspective also works for this technique.

  2. Once tracked, switch to the Stabilization tool.

  3. Choose which fields of motion you wish to lock down in the Smooth parameters. By default, translation is automatically selected. If you want to completely lock down everything, just choose the "All Motion" checkbox.

  4. Adjust the number of frames you want to use to look for stabilization. A small amount of frames will look for tiny adjustments in the overall motion, whereas bigger values in this field will adjust larger ranges of motion. Again, if you want to completely lock down everything for all motion, choose the "Maximum Smoothing" option.

  5. When you play back the timeline you will see the rest of the footage warp and move around your locked off area.

Exporting Stabilized Tracking Data

Stabilize Export

Exporting Stabilization is similar to exporting tracking. When you hit the Export Stabilized Tracking Data button you will be presented with a dropdown box with options for various applications.

StabilizeExportOptions 001

Stabilize in Stereo

All stabilization occurs in stereo if you have tracked both views.
You can render the stabilization for both views by selecting Operate on All Views button next to the Render buttons on the timeline.

operate on all views render

The Lens Module

Overview

Note Some features in the Lens Module are not available in Mocha HitFilm or Mocha AE and only relate to Mocha Pro (such as rendering). For a full comparison of features, please refer to the comparison chart online.

The Mocha lens module helps locate and undistort lens distortion.

To compute lens distortion you need an image with one or more distorted straight lines or a distortion map (Mocha Pro only).

For line calibration you can either use your source material if it has suitable lines or take an image of a calibration grid. Using either 1-Parameter or 2-Parameter radial distortion models will allow you to straighten up the image. There is also an Anamorphic model that will accurately model the distortion in anamorphic and extreme wide-angle lenses.

If you have a Distortion Map, you can also remove or work with distortion by importing your maps instead of calibrating.

Distortion of the images can also influence the performance of other modules in Mocha Pro, because the tracker tools assume that the camera obeys a simple pinhole camera model. Severe distortion effects are most likely when a fish-eye or other short focal length lens is used.

Typical lens distortion makes a square object appear either barrel shaped or pin cushion shaped in the image.

The most obvious way to tell whether your images are distorted is to look at the straight edges of objects in the scene. If lines that should be straight are actually curved in the image, this is indicative of distortion. If there are no long straight edges in the scene (for instance a natural scene) then it is much more difficult to discern distortion, even when it is significant.

With the Mocha lens module you can compute, apply and remove distortion automatically. There are two parts to this process – firstly compute the distortion and secondly correct the distortion.

To compute distortion automatically you will need to have some straight lines in your image(s).

It is useful to toggle the grid on and off during the different stages of calibrating the lens to see a visual representation of what is actually happening. Just select the Grid button in the View Controls bar to switch the grid on and off.

Lens Workflow with Line Detection Calibration

Lens calibration is dependent on working with the parameters, which are described in detail below.
The basic workflow for line-based lens calibration is as follows:

  1. Set your input clip and your calibration clip. These can be the same if there are obvious distorted lines in your input clip, but you can also opt to use a Grid Image (see Using Grid Images)

  2. Use the Locate Lines button to find the straight lines in your calibration clip. Adjust the Min Line Length if needed.

  3. Click the new line button (Or press N on your keyboard) and click on line segments to define what should be straight lines. Every time you need to define a new line, make sure you click on the button again or press N.

  4. Once you have defined enough lines, click on the Calibration dropdown and select a camera model (Usually 1-Parameter or 2-Parameter).

  5. If you are calibrating with a grid, choose Equidistant Lines

  6. Click the Calibrate button.

  7. To check the distortion, turn on your grid

Lens Workflow with Layer Splines

The basic workflow for lens calibration using splines is as follows:

  1. Set your input clip and your calibration clip. These can be the same if there are obvious distorted lines in your input clip, but you can also opt to use a Grid Image (see Using Grid Images)

  2. Select the "Use Layer Splines" checkbox

  3. Draw splines to match the curved areas of the shot. With the "Use Layer Splines" turn on, the splines will be open lines instead of closed shapes by default

  4. Once you have defined enough lines, click on the Calibration dropdown and select a camera model (Usually 1-Parameter or 2-Parameter).

  5. If you are calibrating with a grid, choose Equidistant Lines

  6. Click the Calibrate button.

  7. To check the distortion, turn on your grid

You can now choose to render out the distortion, or use the current calibration to assist your tracking and insertion workflow.

For further detail on the calibration tools, see Lens Parameters below.

Equirectangular Lens Workflow with 360 VR

Note The Equirectangular and other 360 video features are only available in Mocha Pro and not accessible via other Mocha products such as Mocha AE.

The first step for working in 360 VR mode is define you are working in Equirectangular space.

Mocha Pro can set this in the New Project dialog on standalone:
NewProject 360VR

Or in the Views drop down in the plugin:
mochapro ae plugin stereo views

You can also change to Equirectangular in the Lens module:

  1. Go to the Lens module

  2. In the “Calibrate” section, choose “Equirectangular” from the drop down.

calibratedropdown

Warning VR footage with an odd pixel width may not wrap correctly and you could see artifacts.

And that’s it! You’re now ready to work in VR lens space and don’t need any further calibration. If at any time you want to adjust the 360 view numerically, the fields Longitude, Latitude and Field of View are available to adjust in the Lens page.

Note that if you are rendering a 360 lens distortion in the plugin version, you can control the Lens distortion from the plugin interface without having to open the Mocha GUI.

See Equirectangular Lens Workflow with 360 VR for more details on using the Equirectangular lens calibration effectively.

Lens Parameters

lenstabfull

Input tab

Here you have two options:

  • The Calibration Clip is the clip used for finding and selecting lines to calibrate with – just select the clip from the pulldown menu if you have imported it or import it by selecting the Import button and using the file browser to locate the file.

  • The Input Clip is the input for the distort/undistort process – just select the clip you want to distort or undistort from the pulldown menu.

lens input

Output tab

This is a way to re-name a distortion setting if you want to have more than one distortion applied. You can choose to leave the input clip intact and create a new clip containing the output from the Lens module, and then rename the rendered distorted or undistorted file and carry on working. Just select the clip from the pulldown menu and select the New…​ button to name the new clip. The new clip will be the same as the current output if you choose to select that it inherits the attributes of that output clip.

Distortion Map tab

Here you have two options:

  • The Undistort (Inverse) is the distortion map clip used to set Undistortion for the input clip

  • The Distort (Direct) is the distortion map clip used to set distortion for the input clip

lens distortion map

Calibration Lines

Line calibration is the most important part of the process for 1-parameter, 2 parameter and Anamorphic calibration: These buttons work to locate and then define the straight lines in your shot. See below.

calibration

Use Splines

Turn this option on if you want to draw layer splines to calibrate the lens.

When this option is in use, any splines you draw in the viewport will be open splines, allowing you to define curves in the scene more easily than the line detection method.

In order to use a spline in the layer list, its processing cog must be turned on. The cog is on by default when you draw a new layer.

Locate Lines

Select the Locate Lines button once for the image you want to use for calibration.

The output of the Locate Lines process is an overlay showing all the line segments that were detected in the image. Typically longer lines will be divided into two or more line segments. See "Min Line Length" below.

lens locatelinesscreen

New Line

Using the New Line button you can start selecting line segments to define the straight lines in your scene.

  • To select which lines you want to use for calibrating the distortion, select the New Line button each time you want to select an entirely new line.

  • Select one or more line segments lying on the same line in the scene by placing the cursor over each segment and selecting them.

  • As you hover over the lines the currently closest line will be highlighted in red to indicate which line will be selected.

  • As you add more segments, the completed line is rendered so that you can check for mistakes. Each line you select will be colored differently to clarify the groupings of the line segments.

  • Try to choose lines that exhibit the most distortion, typically those reaching towards the edge of the image, and not pointing towards the center .

  • Try also to achieve good coverage of the whole image, because otherwise the distortion may only be computed correctly in the part of the image where the lines are chosen. If you select a line segment incorrectly, click on it again to deselect it.

It is important to remember to select New Line each time you want to select the segments of a new line in the scene.

Min Line Length

Increase the Min Line Length parameter to show only longer lines and simplify the display, or if you only short line details, try a smaller line value.

Calibrate Parameters

calibratedropdown

Having chosen your lines (see above), you need to select a camera model:

  • If only a small amount of distortion is present in the images, choose the 1-Parameter radial distortion model. Then press the Calibrate button. This will find the optimal value for the radial distortion parameter to straighten the selected lines.

  • You can use the 2-Parameter radial distortion model if the 1-Parameter model doesn’t capture all the distortion in the image. This distortion model is often used when there is a wave or irregularity in the lens.

  • Anamorphic can be used for any lens with Anamorphic or different vertical and horizontal distortion.

  • Distortion Map is only used with Distortion Maps and is not related to line-selection based calibration (see below)

  • Equirectangular will automatically set and calibrate the lens to standard Equirectangular lens format and needs no further calibration. See the Equirectangular Lens Workflow with 360 VR section above for more details.

The Grid display option will show a reference grid with the computed distortion added.

Here is an example grid of a 1-Parameter distortion model:

Simplegrid 1 param

Here is an example grid of a 2-Parameter distortion model:

Simplegrid 2 param

Here is an example grid of an anamorphic distortion model:

Simplegrid anamorphic

Calibrate button

Once you have selected your lines and set either the 1-Parameter, 2-Parameter or Anamorphic models, you can click this button to start computing the calibration. This will invoke the Mocha Pro camera calibration algorithm which will apply the new calibration parameters to any image you are working on in the current project.

The No Distortion parameter does not compute any distortion and the 1- Parameter Inv model is only for use with RealViz Rz3 files.

If you have a grid image, select the Equidistant Lines box and then select lines appropriately for a grid as explained above.

Note: You only need to render the image and remove the computed distortion if you want to save the output – Mocha Pro will use the calibration data generated without having to use an undistorted clip. To render the clip use the Distort/Undistort controls.

lens calibratedscreen

Lens

The image center is naturally set at the center of the image by default. Again the coordinates can be entered manually if you want to eye match the center position of the lens by dragging the Center %X or Center %Y sliders or highlighting the current value and typing in a new value. Alternatively, switch on the Calibrate option so that it will be adjusted automatically when you invoke the camera calibration algorithm.

lensdistortion

Distortion

The distortion values for the current camera model can be entered manually if you want to match the lens distortion by eye, or they can be computed automatically using the Calibrate button – which is considerably quicker and easier. To adjust manually simply drag the sliders to increase or decrease the values in the K1/Cxx, K2/Cyx, Cxy & Cyy fields or highlight the current value and type in a new value.

Enable

This checkbox Eeables the calibration lens distortion for the scene.

Select whether when you render an image you want to remove or add distortion here by selecting the Undistort radio button to remove distortion or the Distort radio button to add distortion.

Distort/Undistort

These buttons are for rendering the clip with the distortion or undistortion values selected.

K1/K2/Cxy/Cyy

These fields define the exact numerical values for the calibrated distortion.
If your calibration doesn’t look quite right, you can adjust these fields to modify the result.

Exporting

Export Lens Data

You can export the lens parameters to a variety of formats. See "Exporting Lens Data" below for more information:

  • Mocha Lens for After Effects: This format is used exclusively with the Mocha Lens plugin for After Effects, which you can download separately from the Boris FX Website.

  • Distortion Map: A renderable Distortion map to use in supported applications, such as Nuke.

  • Mocha XML Lens Data: You can export the lens parameters in a simple XML file format by selecting the Export Lens Data…​ button. This can be used to import into future Mocha projects so you don’t need to recalibrate the same lens. The parameters are written in a resolution-independent way. The focal distance and image center x/y are represented as multiples of the image width and height. The distortion parameters are written directly. They are defined in the later section called "For the technically minded".

Import Lens Data

Here you can import Mocha XML Lens Data to define pre-calibrated lenses.

When imported, the K1, K2, Cxx and Cyy fields are populated and the calibration type is set, ready for use.

Rendering lens distortion

Once you have a calibrated lens, you can render using the timeline controls:

  • Selecting the right arrow renders the clip forward from the current point in time.

  • Selecting the left arrow renders the clip backwards from the current point in time.

  • Selecting the central button with a square stops Mocha Pro from rendering, which can also be done by selecting the escape or space keys on the keyboard instead.

  • Selecting the cog render button just renders the single frame at the current point in time. This is useful for testing a single frame before deciding to render an entire sequence.

Using Grid Images

A common way to generate accurate distortion models is to take an image of a calibration grid, which not only provides long straight lines that exhibit the distortion clearly, but also restricts the lines to a rectilinear grid. The latter constraint can be used to improve on the simple "straightening lines" technique.

If you are using a grid image, select the Equidistant Lines
button. This will enforce a regular grid structure on the selected lines, by forcing the distance between adjacent horizontal and vertical lines to be a constant fixed value.

To use this feature, select lines a fixed distance apart on the grid. You can use a different separation horizontally and vertically. You don’t have to select the lines in the right order - Mocha Pro will re-order the lines according to their horizontal and vertical position on the image.

You also don’t have to select all the grid lines. All that matters is that the distances on the grid between adjacent sampled horizontal lines are the same, with the same rule applying vertically as well.

LENS equidistantlines

Grid image with sampled equidistant horizontal and vertical lines. Image courtesy of Jean-Yves Guillernaut, University of Surrey

Note that when you fit a grid, the Grid display option attaches the rendered grid lines to the image grid, so that you can easily see the result.

Anamorphic Camera Model

In cases where even the radial distortion models are not sufficient, or you have an anamorphic shot for which a radial distortion model is not suitable, select the Anamorphic camera model. This allows for different horizontal and vertical distortion. This is the model used in 3D Equalizer V3, although without the inversion of the model used in that product, and we use the "raw" curvature parameters cxx , cxy , cyx , cyy .

You will probably need a grid image to compute the parameters of this model accurately.

Calibrating the Image Center

The image center is by default set to the center of the frame, i.e. 50% of the frame dimensions in both directions. If the center of distortion is or may be offset from the center of the frame, these values need to be modified.

You can either select the correct image center manually by eye or switch on calibration for the image center , which will then calibrate for the image center along with the distortion parameters. A yellow cross indicates the image center position.

Manual calibration

If you don’t get good results from the Mocha Pro calibration procedure, or you have known distortion parameters that you wish to use in Mocha Pro, you can select the distortion parameters manually.

By manipulating the distortion parameters and observing the effect on the image, choose the parameters that straighten up the curved lines as accurately as possible. This should at least deal with the worst effects of the distortion.

Mocha Pro also has the capability to import camera parameters computed by Realviz’s MatchMove 3D camera tracking software.

Lens Workflow with Distortion Maps

If you are working with Distortion Maps (sometimes called UV maps or ST Maps), a lot less calibration is required. You can simply bring in your map and it will automatically set the lens.

Note Distortion maps need to be 32-bit floating-point component RGBA in order to be read correctly by Mocha.

lens distortion map example

An example of a Distortion Map

  1. Go to the "Distortion Map" tab on the left side of the Lens Module

    lens distortion map

  2. Use the "Undistort (Inverse)" and "Distort (Direct)" drop downs to import your maps files

  3. Click on the Calibration dropdown and select "Distortion Map"

    lens distortion map calibration

  4. To check the distortion, turn on your grid

You can now choose to render out the distortion, or use the current calibration to assist your tracking and insertion workflow, as you would a line calibration.

Keep in mind the hard boundaries of the Distortion map being imported may affect the tracking of your shot.

Note You cannot export Lens Data with a Distortion Map calibration. You will only be able to perform track and render operations.

Exporting Lens Data

The Lens Module provides different exports for getting your lens data out to other applications.

Mocha Lens for After Effects

This format provides a way to get the Lens data into After Effects via the Mocha Lens for After Effects plugin which you can download and install separately.

Exporting data to After Effects is done via the clipboard, similar to the tracking and shape data methods. To bring data into After Effects:

  1. Click on Export Lens Data in the Lens Module or the File menu

  2. Select "Mocha Lens for After Effects" in the drop down

    lens exportlensdata ae

  3. Click "Copy to Clipboard"

  4. Switch to After Effects

  5. Select the layer you wish to add the effect to

  6. Press CMD/Ctrl+V to paste the data

A lens effect will then be created in the layer with parameters from Mocha. You can choose to Remove Distortion or Add Distortion from the Effects panel.

lens pastelensdata ae

Distortion Maps

Note Distortion maps feature in the Lens Module only relate to Mocha Pro and are not available in Mocha HitFilm or Mocha AE

This format will render a map for programs that support color-based displacement or distortion (such as UV or STMaps). This is also useful if you want to save a calibration so it can be used on another shot, by importing the Distortion Map back into Mocha.

By default the Distortion Map will only render 1 frame, unless you have an animated distortion calibrated in Mocha.

Distortion Maps may also generate a map larger than your footage dimensions in order to accommodate overscan of the distortion.

  1. Click on Export Lens Data in the Lens Module or the File menu

  2. Select "Distortion Map Clip" in the drop down

    lens distortion map export 01

  3. Note that:

    1. The dimensions of the distortion map will be automatically calculated at a larger size to your footage to make sure there is enough overscan for correct distortion.

    2. The frame range is automatically set to only render 1 frame unless you have an animated distortion.

  4. Choose whether you want to render a map to Undistort or Distort with the radio buttons on the right

  5. Choose a destination folder for the image

  6. Distortion maps must be 32 bit floats, so TIF or DPX will be the best options

  7. Click "Save"

  8. Load the Distortion Map into the program of your choice

Using Tracking Data Exports with Lens

Using Tracking Data Exports with Undistorted Shots

If you have undistorted a shot and plan to export tracking data to the result, you will need to check "Remove lens distortion" in the tracking data export dialog in order to match the undistorted data.

lens exporttrackingdata ae

This will make sure the tracking information is set to fit the same flattened information you are using elsewhere.

Using Tracking Data Exports with Distorted Shots in After Effects
Note Equirectangular Lens Distortion does not currently support After Effects Lens data export.

If you want to keep a shot distorted and plan to export tracking data, you will also need to check "Remove lens distortion" in the tracking data export dialog and then apply the lens distortion to the result in After Effects.

Because of the way After Effects handles render order, you need to do a few extra steps to get a corner pin working correctly:

  1. Click on Export Tracking Data…​ in the Track Module or the File menu.

  2. Select your format and select the "Remove lens distortion" checkbox.

    lens exporttrackingdata ae

  3. Click "Copy to Clipboard".

  4. Switch to After Effects.

  5. Make sure your insert layer is the same size as the source comp. If not:

    1. Precompose the layer and move all attributes into the new composition.

      precompose ae

    2. Open the Precomp and fit the layer to the composition dimensions (Layer | Transform | Fit to Comp).

      fittocomp ae

    3. Paste the tracking data you exported on the clipboard to the insert layer. You will notice that it will probably not be sitting in the right spot. This is normal.

      lens cornerpinpaste ae

  6. In order to apply the lens distortion to the insert layer correctly, you now need to Precompose the layer to make it fit the same dimensions as the original source.

    lens distortprecomp ae

  7. You can now go back to Mocha and export the Mocha Lens for After Effects data.

    lens exportlensdata ae

  8. Paste the lens data you exported on the clipboard to the Precomposed insert layer.

  9. Choose "Apply Distortion" from the drop down in the effect.

    lens applydistortionplugin ae

If you notice your insert is clipping, this may be because the precomposed layer is going past the boundaries of the pre-composition. You can fix this by opening the precomp and making it larger:

  1. Open the Lens-Distorted Precomp

  2. Open Composition Settings

  3. Increase the dimensions of the Composition. For example with a 1920x1080 shot with large distortion try adjusting the width to 2500.

  4. Close Composition Settings and go back to your original composition to check the clipping

Tips for Lens Calibration

When working on large files, drop the proxy scale

If you set the proxy scale in View Controls from Full Res to Half Res it should still give enough information to locate good lines, and will be a lot faster.

Make sure your aspect ratio is correct

Note that for the radial distortion models you need to have selected the correct pixel aspect ratio for the images when you started the project. If you have chosen the correct aspect ratio the image will appear in the correct proportions on the screen.

The film back width and height selected when you started the project determine the pixel aspect ratio. Mocha Pro will normally select the correct film back from the image dimensions, but sometimes it may be necessary to make manual adjustments if the correct match was not found.


Using Mocha Pro for 360 VR workflow

The Mocha Pro 360 features are specifically designed to work on equirectangular shots.

To use Mocha Pro on a 360 equirectangular shot you need to first set up the 360 image. You can then begin using Mocha just like you would any other footage.

Using Equirectangular footage in Mocha Pro

1. Load Equirectangular footage into Mocha and set the Lens type

The first step for working in 360 VR mode is to import and define you are working in Equirectangular space.

Mocha Pro can set this in the New Project dialog on standalone:
NewProject 360VR

Or in the Views drop down in the plugin:

mochapro ae plugin stereo views

You can also change to Equirectangular in the Lens module:

  1. Go to the Lens module

  2. In the “Calibrate” section, choose “Equirectangular” from the drop down.

calibratedropdown

Warning VR footage with an odd pixel width may not wrap correctly and you could see artifacts.

And that’s it! You’re now ready to work in VR lens space. If at any time you want to adjust the 360 view numerically, the fields Longitude, Latitude and Field of View are available to adjust in the Lens page.

2. Switch to the Track module and view your footage in 360 mode

As soon as you have set the Equirectangular lens type, a new “360” button will appear in the view controls. Switch over to the Track module and click on this button to immediately jump to 360 Rectilinear space.

mocha 360 button

If you press and hold the 360 button, you can also jump to a specific 360 view, such as Zenith, Nadir, Front, etc.

To navigate in the 360 view:

  • The Pan tool (X by default) pans the view in all directions

  • The Zoom tool (Z by default) changes the Field of View (FOV). You can reset the FOV in the Lens module

You can change the Pan and Zoom shortcut keys in preferences.

Note Panning and Zooming in 360 mode also updates the Latitude, Longitude and FOV parameters in the Lens module. Panning and Zooming outside of 360 mode just zooms and pans the image as normal.

3. Draw a layer and start tracking

You can draw layers in either 360 view or Equirectangular mode.

We recommend working in 360 view, as this is the intended workflow and is much more natural because you don’t have to consider seams or poles.

5.5.0 mochavr 360 vs equi view

See the Tracking Basics chapter for more details on how to set up layers for optimal tracking.

(Images courtesy of Makoto Hirose, SeaPics Japan)

4. Rotoscope in 360 mode

Like tracking, we recommend doing all roto in 360 mode. Roto will automatically warp, cross over poles and seams and create seam duplicates to make it easier for rendering and export.

5.5.0 mochavr 360 vs equi view seams

Feathering is also handled in 360 mode using the inner and outer edges.

You can preview the flattened version of the roto at any time by simply toggling off the 360 button.

See the Rotoscoping Basics section for more details on Rotoscoping effectively.

(Images courtesy of Makoto Hirose, SeaPics Japan)

5. Work in Insert, Remove and Reorient modules

The Insert module and Remove module work exactly like regular Mocha Pro. See their respective chapters in the user guide for more details.

You still draw the layers and set up renders in the same way, and they are rendered across the 360 seams correctly.

For Reorienting and stabilzing the horizon of a VR shot, you will need to use the Reorient module, which is only available when your project is set to work with 360 footage.
See Mocha Pro: The Reorient Module for more details on how to Reorient a VR shot.

See other relevant module sections of this user guide for more details on each module use.

Note The Camera Solve and Stabilize module are presently unsupported in VR mode.

6. Render and Export

Rendering

Renders work in the same way as they do in the standard Mocha Pro workflow. You can either render them to file, or render via the plugin host.

You can render the current 360 view from the Lens tab, as panning and zooming in 360 mode is a lens calibration. In the standalone, this is controlled via the Lens tab.

In the plugin, you can control and render the lens directly from the Mocha Pro plugin interface. See Mocha Pro Lens Plugin Rendering Workflow for 360 VR below for more details.

For everything else, such as Remove and Insert, renders are rendered into Equirectangular space.

Exporting

Currently export of tracking data is unsupported. Tracking data will paste to the correct location in your equirectangular view,
but will not be corrected for Lens distortion due to most editors and compositors not correctly supporting pole or seam splitting of tracking data.
It is best to use the Insert module render process to get what tracking data you need out of Mocha.

Shape export data presently exports as duplicate splines. This means that any roto shape that crosses the seam will automatically be duplicated into two separate splines on either side of the Equirectangular view.
Split VR shape data is presently supported for:

  • After Effects and Premiere shapes

  • Nuke Roto and RotoPaint

  • SSF

For other compositors and editors you can either use the matte rendering in the Mocha Pro plugin, or render matte clips from Mocha directly.

See Using the Mocha Pro Plugin for more details on controlling mattes in the plugin interface and Exporting Rendered Shapes for how to render mattes to file.

Mocha Pro Plugin Lens Rendering Workflow for 360 VR

You can use the Lens: Undistort and Lens: Distort options in Mocha Pro Plugin to render out 360 patches for easier paint and effect work back in the host.

The patch workflow is a one-way control system in the plugin interface independent of the Mocha GUI, which means you don’t need to open Mocha to control the lens view.

5.5.0 mochavr 360 adobe lens section

By choosing Lens: Undistort from the render options in the plugin, you can then control the view by adjusting three controls:

  • VR Lens Latitude

  • VR Lens Longitude

  • VR Lens FOV

Alternatively you can pick a view using the Views dropdown option.
This replicates the 360 views in the Mocha GUI, allowing you to choose between specific angles such as Zenith, Nadir, Front, etc.

The lens distortion workflow for the plugin is:

  1. Click Render in the 'Module Renders' section of the plugin interface and choose Lens: Undistort from the 'Module' drop down. You should see the view change to a rendered 360 view.

  2. If you don’t see the view change after choosing Lens: Undistort:

    1. Open the Mocha GUI and set your footage to Equirectangular mode in the Lens module.

    2. Close and save Mocha

  3. Set your view using the VR lens parameters in the plugin interface

  4. Copy the current Mocha effect

  5. If necessary, Nest/precomp the rendered lens patch. You must precomp in After Effects for the next steps to work correctly.

  6. Paste the original effect back on top of the nested comp.

  7. Choose Lens: Distort from the 'Module' drop down in the pasted effect to restore the warp back to its original position

  8. Merge/layer the final result back on top of your original footage.

You can then perform any paint or effect work on the lens-distorted version of the footage and it will be re-distorted correctly on top of the original footage.


The Reorient Module

Note This section applies specifically to Equirectangular 360 VR footage

To use the Reorient module on a 360 equirectangular shot you need to first set up the 360 image.

See the Using Mocha Pro for 360 workflow section for details on how to set up and work in a 360 shot.

Reorienting Equirectangular Footage in Mocha Pro

The Mocha Pro Reorient Module provides two useful tools for adjusting the VR camera:

  • The ability to track and stabilize the VR horizon in each rotational axis

  • The ability to control the position of the VR horizon in tilt in each rotational axis

1. Track Horizon or Track Near-Objects

Horizon Tracking

The most efficient way to stabilize and reorient is to track a layer (or series of layers) near the horizon.
It doesn’t have to be exactly on the horizon, but it helps to be as close as possible. Multiple layers in sequence will concatenate for a single solution (see below).

Note Mocha assumes that if you are tracking with more than one layer at a time that you’re using a near-object track. See "Near Object Tracking" below.
Near-Object Tracking

From Mocha version 5.6.0 onwards, if you do not have an obvious horizon to track or it is constantly obscured,
the next best option is to use a series of layers closer to the camera.
You will need at least two layers that are non-coplanar, which is a fancy way of saying "Not on the same plane".
This is necessary for the Reorient module to work out the relative motion between the planes and calculate a smooth result.

For example, if you are trying to reorient a scene with a corridor, tracking one wall is not enough:
You will need to also track the opposite (non-coplanar) wall or the floor/ceiling to get the near-object depth for mocha to understand the movement of the scene.

A Mix of Near-object and Horizon Tracking

If you have a long shot where you can see the horizon in parts and not in others you can track both the horizon and near objects in sequence.
Mocha will assume that a single layer is tracking the horizon and multiple layers on the same frames are tracking near-objects.

For example, you can track the ground plane and a wall plane and they are on different planes.

Tracking Long or Rapidly Changing Shots

If a shot is moving very far, or has a lot of changes (such as moving through trees), you can concatenate tracked layers together.

However, it is important to make sure there is a little overlap between the tracked layers in order to blend the tracked layers together, for example:

  • Layer 1: Tracked from frame 0 to frame 100

  • Layer 2: Tracked from frame 90 to frame 280

  • Layer 3: Tracked from frame 265 to 400

  • Etc.

This helps to smooth any jumps from one tracked layer to the next.

2. Adjusting the Horizon

Like most modules in Mocha, to use the Reorient module stabilization you first need a tracked layer.

  1. Track a layer(s) for the stabilization (see step 1 above!)

  2. Move to the Reorient module. This will turn on the 'View Horizon' checkbox, which shows the red horizon line on screen. It will also disable Preview so you can work with the original clip.
    mocha reorient parameters +

  3. Adjust the red horizon line to fit your horizon using the column “Horizon Align”. You can do this in either 360 mode or in Equirectangular mode. We recommend Equirectangular mode, as it is much easier to see the whole horizon.

  4. If you would prefer a visual control, you can turn on “Show Control” under the Horizon Align rotation fields:

    • Move up and down to control tilt

    • Left and right to control pan

    • Rotating the circle controls roll.
      The Horizon Align Control +

  5. Once your line fits the horizon, you can turn off the 'View Horizon' check box.

  6. If 'Preview' doesn’t turn on immediately, you can toggle it in the view controls. The button is to the left of the 360 icon in the view controls.
    module preview button

3. Smoothing the Horizon

You can control the Smoothing to any rotational axis by turning off the tilt, roll and pan controls.

For example, if you’re only interested in stopping the camera from panning, you can just leave “Pan” on.

If you don’t want to lock the smoothing completely, you can turn off “Maximum Smoothing” and adjust the number of frames to stabilize the horizon jitter.

mocha reorient parameters

4. Reorienting the Horizon

Finally, if you want to position the camera exactly, you can do so by using the ‘Horizon Reorient’ column.

This has exactly the same parameters as the Horizon Adjust column, allowing you to either move the camera via the fields, or via the on-screen control.

The Horizon Orient Control

If you have the Preview button turned on, it will update in the view automatically.

5. Rendering

Like all modules, you can choose to either render in the Mocha GUI, or choose “Reorient” from the render options in the main plugin interface back in the host.

(Footage images courtesy of Makoto Hirose, SeaPics Japan)


The Dope Sheet and Curve Editor

The Dope Sheet

The Dope Sheet is used to move, copy and paste keyframes in your layers.

Navigating the Dope Sheet

You can navigate the Dope Sheet space by using the scroll bars horizontally and vertically.

Holding CTRL/CMD+Scrolling the mouse wheel will let you scale up and down the timeline.

You can also zoom to specific ranges by selecting one of the options from the "View" drop down at the top of the dopesheet view:

dopesheet zoom keys

Group Keyframes vs Parameter Keyframes

DOPESHEET 001

As you create animation or tracking data, you will see a number of hollow keyframes appear in the Dope Sheet. These are known as Group Keyframes which are keys that contain multiple sets of Parameter Keyframes underneath them.

You can move the Group Keyframes like normal animation keyframes, but instead of a single animation key, they will move all the keyframes underneath them.

This is useful when you need to shift a whole section of animation in a layer, and not just an individual point or parameter.

Expanding a section of the layer tree in the dope sheet will reveal either Parameter Keyframes or more Group Keyframes, depending on how many levels in that layer tree there are.

Selecting and Moving Keys

To select keyframes, you either click on one of them in the Dope Sheet, or marquee select a section. You can use SHIFT to pick multiple keys.

DOPESHEET 002

You can move the keyframes manually by dragging them with the mouse, or you can use the standard Copy/Paste keys (CTRL/CMD+C, CTRL/CMD+V) to copy keys and paste them at the current playhead position.
NOTE: At this time you cannot copy and paste Group Keyframes, only Parameter/Animation keyframes.

Sliding Keys

To move all keyframes in the project up or down the timeline to accomodate frame offsets or new clip lengths, you can use "Slide Keys".

dopesheet sliding keys

You can slide keyframes one of two ways:

  1. Enter the keyframe position you want into the Slide Keys field and press enter

  2. Select the "Move to playhead" button to push the keyframes to the current playhead position.

If you need to only move some of the keyframes, just select the ones needed and use the "Selected" radio button option before performing the slide.

The Curve Editor

The Curve Editor is used to review how the data in your animation and tracking looks, as well as some value and frame manipulation options.

Navigating the Curve Editor

You may navigate the Curve Editor space by using the middle mouse button to Pan and the mouse wheel to zoom. Alternately, you may pan using the ‘x' key on the keyboard and zoom using the ‘z' key on the keyboard. When zooming with the ‘z' key, left/right mouse movements will zoom in/out horizontally and up/down mouse movements will zoom vertically.

Selecting and Moving Keys

To select keyframes, you must first select the curve, then the keyframes. Keyframes of unselected curves are not selectable.

curve_001

You may move the keyframes manually by dragging them with the mouse, or you may type in a "Nudge" value at the top right of the Curve Editor.

curve 002

Entering a negative value in the "Nudge Time" field and hitting the button will move selected keyframes backwards in time by that amount every time you hit the button. Entering a positive value in the "Nudge Value" field and hitting its button will move selected keyframes up in value by that amount every time you hit the button.

Changing the Interpolation of Keys

Interpolation describes the method of how values are calculated between keyframes. It defaults to linear interpolations between keyframes but you may wish to convert them to Bezier for easing in and out. Or if you wish them to hold their position until the next keyframe, you may wish to select Constant as the mode of interpolation.

curve_003

Right click on a selected keyframe and choose Interpolation->Bezier. Bezier tangent controls will appear on your keys and you may adjust them for easing in and out.

Changing the Extrapolation of Keys

If a keyframe is the first or last keyframe on the curve, its extrapolation can be chosen. Extrapolation describes the method of how values are calculated "off into space" before the first keyframe or after the last keyframe. It defaults to Constant, which simply holds the value steady.

Choose linear extrapolation and the curve editor will continue the value on its current slope (sometimes called Gradient Extrapolation in other applications).

curve_004

The Clip Module

Managing clips

You can import any number of clips into the project. Much like a compositing application, you can have a multitude of assets in the application you may wish to work with at any given time. As clips are imported into the project, they populate Clip list drop-down menus found throughout the application.

clip 001

Above is shown a list of clips that have been loaded into a project.

You can also add additional footage streams to each clip in Mocha Pro using the Add…​ button.

Importing New Clips

The first clip is always imported when you start a new project, and the location of the clip’s footage stream is shown in the Footage Streams section to the right.
The first clip you start with establishes the aspect ratio and resolution for that project. This can be adjusted in the clip tab.

Additional clips can be imported into the project through the Clip tab.

clip 003

The clips should match the original project clip ratio set for the project (the dimensions of the first clip you imported when you started the project). You can choose the "inherit attributes" drop down to match the original project clip settings.

clip 002

Clip and Footage Stream Workflow

The Clip tab handles multiple footage streams in a single Mocha clip.

Clips consist of a container and one or more footage streams. Clips can contain any number of footage streams, which you can then map to a view if required.

Most commonly you will only be working with one footage stream, which is mapped to the Mono view. If you are working in stereo (Mocha Pro only) you will have multiple views.

If you import multiple footage streams into the same clip, you can use the View Mapping dropdown to change which footage stream is shown.

Clip Tab Streams

If you are dealing with multi-channel clips such as EXR files, all views are loaded automatically.

If you are working with individual views (TIF, DPX, JPG etc), you can import the additional footage streams using the Add…​ button under the Footage Streams dropdown (Mocha Pro only).

Importing New Footage Streams to an existing Clip

Note This feature is only available in Mocha Pro.

If you want to import additional footage streams in Mocha Pro, you can do so using the Import button under the Footage Streams dropdown.

clip stream addbutton

You can then choose a new footage stream to add to the current clip from the Import dialog.

clip importfootagestream

Removing Clips

You may clean up the project by deleting clips you no longer need. Select the clip in the clip drop-down list and hit Delete. That clip will be removed from the project.

Relinking Clips

When moving project files or updating footage, you may need to relocate the footage on your system. To do this:

  1. Select the clip you need to relink from the clip drop-down list

    clip 001

  2. In the Footage Streams section of your clip, choose the footage stream you want to relink. Most commonly for non-stereo projects there will only be one clip stream.

    clip stream relinkbutton

  3. You will be presented with a relink dialog. Click the Choose…​ button to browse for a new clip you wish the original to be replaced by.

    clip relinkfootagestream

  4. Make sure an imported footage stream has the same aspect ratio as the original project clip. You can conform your relinked clip to the current settings in the project, or keep them the same.

Selecting a Clip to Track

Most often, the first clip you imported will be the one you wish to track. There are times when you may get an updated shot with color correction or some other enhancements to make tracking easier. To use this new clip, you must first import it into the project as described above.

To select to track on this new clip, you must choose it in the Track tab’s Input drop-down.

Note An imported clip must have inherited attributes from the original base clip to become trackable. See "Importing Clips" above.

Selecting a Clip to Rotoscope

Rotoscoping can be done on any of the clips you have imported. To change the clip you are viewing in the canvas, select the clip in the View Controls drop-down list. You will notice that any clip you’ve imported into the project will appear here.

clip 001

Note An imported clip must have inherited attributes from the original base clip to be able to roto correctly. See "Importing Clips" above.

Keyboard Shortcuts

Keyboard Shortcut customization

You can now customize keyboard shortcuts for almost every tool, action and menu item in Mocha.

You can access the keyboard shortcut customization dialog in two ways:
  1. Directly, via File | Keyboard | Customize…​

  2. By going to Mocha Preferences and clicking the Key Shortcuts tab.

You can create a new profile by duplicating a default profile, then customize the keys. These profiles are then available from the Keyboard menu:

Keyboard customization is very simple:
  1. Duplicate one of the default profiles and rename it

  2. Select a category and choose an action you want to change or add a key sequence to

  3. Click in the "Shortcut" column

  4. Enter your key sequence

  5. Click anywhere outside of the entry cell to complete

  6. Click "Default" if you want to revert your change back to the default shortcut

Important Pressing return or delete/backspace counts as a key entry, so please click outside the cell to complete the entry and use the "Clear" button to clear an entry.

Default Mocha Shortcuts

Below are some of the common default shortcuts for Mocha

Tools

CTRL/CMD + F

Enable Picker tool

I

Toggle insert point mode on/off

Z

Enable Zoom tool while pressed

X

Enable Pan tool while pressed

CTRL/CMD + L

Enable X spline tool

CTRL/CMD + B

Enable Bezier spline tool

CTRL/CMD + Click

Break Bezier handle

CTRL/CMD + Z

Undo

CTRL/CMD + SHIFT + Z

Redo

C

Close contour

D

Delete point

Transform

W

Rotate

Q

Translate

E

Scale

Down Arrow

Nudge Point/Layer down 1 pixel

Up Arrow

Nudge Point/Layer up 1 pixel

Left Arrow

Nudge Point/Layer left 1 pixel

Right Arrow

Nudge Point/Layer right 1 pixel

SHIFT + Down Arrow

Nudge Point/Layer down 10 pixels

SHIFT + Up Arrow

Nudge Point/Layer up 10 pixels

SHIFT + Left Arrow

Nudge Point/Layer left 10 pixels

SHIFT + Right Arrow

Nudge Point/Layer right 10 pixels

Viewer Canvas

-

Zoom out

+

Zoom in

/

Zoom to 100%

*

Zoom to fit

Alt + 1

Show/Hide Mattes

Alt + 2

Show/Hide Color Layer Mattes

Alt + 4

Show/Hide Layers

Alt + 5

Show/Hide Spline Tangents

Alt + 6

Show/Hide Surface

Alt + 7

Show/Hide Grid

Alt + 8

Show/Hide Zoom Windows

` (Back dash)

Show/Hide All Overlays

Timeline

Alt + Left Arrow

Go to start of clip

CTRL/CMD + Left Arrow

Go to previous frame

CTRL/CMD + Right Arrow

Go to next frame

Alt + Right Arrow

Go to end of clip

ESC

Stop processing

Space

Start/stop playback

Alt + Down Arrow

Set in-point

Alt + Up Arrow

Set out-point


Preferences

Note Some of the preferences below relate to Mocha Pro. Some preferences may not be available in the Mocha Pro Plugin, Mocha AE and Mocha HitFilm.

Preferences location

Preferences are accessed through File > Preferences on Windows or Linux (Mocha Pro only) and Application Menu > Preferences on OS X.

Preferences are not changed until you click the OK button.
In some cases you will need to restart the Mocha application for preferences to take effect.

You can also choose to reset all preferences back to the default using the "Restore Defaults" button in the bottom left of the dialog.

Output Settings

File Storage

Output Directory (Standalone only)

The Output Directory settings specify the default location of the directory in which the project file and rendered clips are stored. There is a choice between:

  • Relative Path: The project directory is a subdirectory of the directory containing the original project clip. By default, the subdirectory is Results. If you often load your project clip over a network, it would be best not to choose Relative Path, because the performance of project and clip I/O will not be as fast as the local disk.

  • Absolute Path: The project directory as an absolute path. For the best performance choose a folder on a fast disk, with plenty of disk space available.

Autosave

The Autosave box is selected by default. This will automatically save the project you are working on.

Set the interval between saves by increasing or decreasing the value in the Interval (minutes) box.
The default is 5 minutes. If Save Images Every Frame is checked, rendered frames are saved to disk as soon as they are created in memory; otherwise the render to disk only occurs when rendering a sequence of frames.

You can define the Autosave directory or leave it to the system default.

In the standalone, if there is an autosave file available for the project you have loaded, a dialog will appear asking if you want to open that instead.

In the plugin, the dialog will appear if there is an autosave available for a Mocha project done in that host. You can then choose to open, save or remove the project file.

For example, if you are working in After Effects and there is a problem, recovering your AE project and opening the Mocha GUI will show a Mocha Autosave recovery dialog for the project made in After Effects.
If you have other autosaves (for example from another Mocha Pro plugin host), the recovery dialog will NOT appear, as it was a project made in another program.

An example autosave file is called:

"mochaAE_plugin-6_aftereffects-16.mocha.autosave"

This literally translates to: "Mocha AE Plugin project saved in After Effects v16".

In standalone, Autosave is per-project, i.e it will be directly related to the project you are working on. This is because we work with a 1-to-1 match of the project file name.

In the plugin, we can only save an autosave file per HOST, that is, we have no knowledge of the project/layer that is being worked on, so we can only save based on what we know, i.e the host the mocha project was saved in.

This means that in the plugin, a crash from a previous project will trigger a load prompt in ANY project you open created in the same host. For example:

  1. Create an After Effects project with Mocha

  2. Autosave kicks in

  3. Force quit with mocha still open

  4. Reopen host

  5. Start or open another AE project with Mocha

  6. Open mocha GUI

  7. A Load-Autosave file prompt shows up

We time-stamp the autosave dialog so you can have a better idea of when the file was saved, but if you open the autosave it will replace your existing work.

If your plugin autosave doesn’t automatically prompt to open, you can locate the directory in the support path. By default these are:

  • Windows: C:\Users\[username]\AppData\Roaming\BorisFX\Autosave

  • macOS: ~/Library/Application Support/BorisFX/Autosave

  • Linux: ~/.config/BorisFX/Autosave

You can then Open or Merge the file into a new or existing project.

Autosave Backups

We also back up each session autosave just in case a previous autosave has a problem or you want to revert back to an older state.

You can define how many backups in the "Number of Backups field" next to the Autosave interval field.

Autosave backups are saved to an "autosave_history" folder relative to the current autosave file.

Cache Directory

Specify here the folder to use for caching image data and storing auto-saved project files. For the best performance, choose a folder on a fast disk with plenty of disk space available. A lot of data is written out in the background while you work, approximately three times as much disk space as the taken up by the original clip will be used.

The Cache Original Clip box (Standalone only) is selected by default. This will cache the original clip to the File Cache when a project is created or opened for a more efficient playback and workflow. It is only necessary to check this if you are getting footage from a slow network.

Disk Space Available

The available space in the given disk drive is shown here.

System

Application

Undo History Size

The Maximum Size of the history is the number of user interactions stored in the undo/redo command list. The limit is used to conserve memory.

Maximum Memory Usage

The Maximum percentage of memory Mocha will attempt to use.

Maximum threads per thread-pool (Advanced)

This feature is to limit the number of threads Mocha will use on multi-core machines.

On a machine with many cores, users may wish to limit the number of threads per thread pool
to prevent Mocha from creating too many threads and potentially crashing.

We recommend turning this feature on if you experience frequent crashes when rendering or tracking on high-core machines.

The default value will be the number of available cores. A value of 16 is a good base value to start from.

Track in Mocha AE

Check the box if you want to open Mocha Pro via the "Track in Mocha AE" option inside After Effects, rather than loading the bundled Mocha AE.

UI Look and Feel

Number of Shown Layouts

Set how many layouts you want to appear in the View menu. The default is 3.

Field Controls

You can set either:

  • Rotation Controls: Adjusts the value in the field by moving the mouse in a circular motion. The larger the circle motion, the more refined the adjustment.

  • Linear Controls: Drag left or right in the field to adjust the value.

Invert Mouse Wheel

Inverts the motion of when scrolling in a field increases the value or decreases it.

Enable mouse timeline scrolling

Toggles scrolling the timeline playhead with the mouse wheel. This is on by default.

Tablet pressure sensitivity

Toggles whether Mocha reads tablet pressure sensitivity for tools such as the Area Brush. On by default.

Layer Settings

Default Colors

Defines the default colors for Splines, Mattes and Points

Default Opacity

Defines the default opacity for mattes

X-Spline Default Weight

Sets the default weight of the x-spline control points

Default Bezier Length

Sets the default normalized length of the bezier tangent handles.

GPU

Note Any changes to GPU settings requires a restart of Mocha. For standalone, this is simply closing Mocha and reopening.
For the Mocha plugin, you need to restart the host environment to reload the plugin completely.

Display

Use Vertical Sync

Enable vertical sync in the frame display. We highly recommend you keep this on.

Amount of Texture RAM to Reserve

The amount of memory that you want to be reserved for textures. This determines how many frames can be played back in real-time.

Textured rendering may not be compatible with Microsoft Windows Remote Desktop Connection.

Stereo [Mocha Pro Only]

Here you can enable Active Stereo viewing mode if it is available to you.

Matte Rendering

By default, Mocha will generate matte clips and track mattes by rendering with OpenGL to an offscreen buffer.
If Disable Offscreen Buffers is checked, Mocha will fall back to a software-based matte rendering implementation which is slower and produces lower-quality results, but will work on all hardware.

Most users should not need to use this option.

GPU Processing

This option is on by default and sets the planar tracker to use the graphics card instead of the CPU.
If this option is disabled it means you do not have a supported graphics card for GPU tracking.

OpenCL Device

This option lets you choose the graphics card you want to use for GPU tracking.
By default this is set to Automatic, which attempts to choose the best available option.

Allow unsupported GPUs

This option lets you override the officially supported graphics card list and choose any GPU on your system.
Use this option with care as it may lead to unstable results.

Software Update [Mocha Pro Only]

Settings to check for software updates.

Color

Handles defaults for OCIO color settings. See the OpenColorIO (OCIO) chapter for more details.

Clip

If you are working on a number of shots that share the same clip attributes (the same video standard, frame rate and color space), it can be useful to set a default clip setting. Then you will not have to re-enter the same clip information each time you load a clip.

Defaults

FPS

Sets the default frame rate.

Custom PAR

Sets the default Custom option in Pixel Aspect Ratio

Frame Offset controls

Options to set you default timeline as frames or timecode, and set a fixed frame offset.

Output matte clips
Check this option to output matte clips to disk when previewing mattes (this option is only available in the standalone version of Mocha).

Revert in input clip
Check this option to revert to the source clip if there is an unrendered frame displayed in the viewer.

A yellow warning telling you the frame is not rendered will appear over the source frame.

Format

Setting the format defines what results are rendered out to, but also define what your Cleanplate clips will be saved as.

Integer result clip format

What to set you rendering result output to for integer clip formats. Currently the choice is between DPX and TIFF.

Float result clip format

What to set you rendering result output to for float clip formats. Currently the choice is between EXR and TIFF.
Float clips will be generated internally as 32-bit float, increasing the precision of compositing operations but using more memory.

Interlacing

Select the Separate Fields button if you normally use field-based clips.

This will usually consist of a video clip with options for PAL (upper field first, also used for SECAM) or NTSC (lower field first) field ordering. Separate Fields will de-interlace the clip and display both fields. When a clip is rendered, the fields will automatically be interlaced back together again. There is also a 3:2 Pulldown option if you mainly work with 3:2 pulldown material.

Video Files

Read/write using

The footage handling process to use. The default is GStreamer. You also have the option to use QuickTime.

Note that your choice of clip media handler does not affect the opening of image sequences such as TIFF, DPX, EXR and so on.

It also doesn’t affect any host source material being opened from the Mocha Plug-In, but will affect any clip media you import directly from disk.

GStreamer

This is a versatile media handling library for reading in various codecs and footage containers.

GStreamer currently has limited support for writing out of clips. More will be available in later versions.

If you need to render out a clip to disk, we recommend using a lossless sequence such as TIFF or DPX.

Important GStreamer is not supported on Apple M1 ARM-64 hardware at this time.
Run in Rosetta mode if you need to use clip support on 10.15+
QuickTime

Open files using the QuickTime library. This will only open footage that QuickTime can open.

Important QuickTime is unsupported on macOS 10.15 and above.
QuickTime will not work on systems that don’t have the QuickTime essentials installed.

You must restart the host or the standalone application for any change to the read/write settings.

Mask

Sets the default clip mask.

Lens [Mocha Pro Only]

Camera Model

Sets the default distortion mode.

Logging

Diagnostic Logging

Enable Diagnostic Logging

This is selected by default. The file generated is useful for Boris FX engineers to diagnose error messages and fix any problems. You can view the log by selecting View Log from the Help menu. You can also change the location of the Log File from its default.

Verbose Mode

This is set to off by default. If you are working on a labor-intensive project, you can switch to only log errors as they occur, rather than constantly checking. This provides less information in the event of an error, but can marginally improve performance.

Verbose mode also logs render times. If you are interested in measuring render performance in your projects, check your log after rendering.

Usage Data Collection

Turn on this option to periodically send anonymous usage data to Boris FX so we can improve our products.

Crash and Error Reporting

Keep this option on to send anonymous crash and error data to Boris FX.
This is extremely useful for helping the Mocha team fix defects in future versions and help narrow down problems.

Key Shortcuts

See the chapter on Keyboard Shortcuts for more information.


OpenColorIO (OCIO) Color Management

OCIO Color Management

Important Some OCIO features are only available in Mocha Pro and may be missing from Mocha AE.

Mocha has extensive color management tools based on the Open Source Color Management framework called OpenColorIO (OCIO) .

To see more on OCIO, please visit the OCIO website: https://opencolorio.org/

A Brief Overview of Color Management

Color management in Visual Effects is very important for maintaining consistency throughout a project.
There are numerous footage sources of varying bit depths and color spaces. Equally, there are numerous software and hardware solutions for processing that footage.
Industry standards (such as ACES) were put in place to make it easier to pass footage in and out of an application without losing the color information required to match other parts of the pipeline.

Mocha in the Color Pipeline

In order to match what is seen in the compositing or editing environment, Mocha can match the colorspace use by the host (in a plug-in environment) or can be configured to match the colorspace of supported software.

Since Mocha often renders out a result (be it a Matte or a render in Mocha Pro) we need to make sure we are matching the original source Mocha is working with, otherwise the output will not match.

Setting the Working Color Space

Note Mocha defaults to an OCIO configuration that matches the nuke-default configuration found in Nuke by The Foundry.

To set a working colorspace, you can open the Viewer Preferences, which is located in the top right-hand corner of the viewer:

ICON ViewerControls 001

Then, choose a role from the “Working Color Space” drop down that matches your current working space:

viewer preferences dialog

These options default to the Mocha OCIO config file, but may show varied options if you are using a custom configuration file (ACES,for example).

Setting the Display View color space

To set a Display View colorspace, you can open the Viewer Preferences, which is located in the top right-hand corner of the viewer:

ICON ViewerControls 001

Then choose a Display View type from the list in the drop down:

viewer preferences display view

Defining the Clip Color Space

To set a Clip color space, go to the Clip Module and switch to the Color Space tab.

You can then choose an option from the “Clip Color Space” drop down:

ocio clip colorspace

You can also convert the image Depth to float or 8-bit if so required:

ocio clip colorspace depth

These options default to the Mocha OCIO config file, but may show varied options if you are using a custom configuration file.

Defining the Overall Project Color Space

You can define general color settings for the overall Project in the Project Settings dialog.

This gives you all the colour settings in one place to setup the color workflow for clips, display and working space.

To access Project Settings, go to File > Project Settings…

ocio project settings

Here the Color Space section is divided into several sections:

  • OCIO config: Here you can change the OCIO config or reset back to the default.

  • Working Color Space: The color space or Role you want to work with

  • Display View: The color view you want to display, such as sRGB, Rec709 etc

  • Clip Color space Mode: This is either OCIO or Legacy, which is important if you are opening projects from an earlier version of Mocha.

  • Default Color Spaces: Here you can define what color space to set for clips at various bit depths.

  • Depth conversion: This lets you define if you want to convert clips by default to 8-bit or Float.

Loading OpenColorIO configurations into Mocha

Loading via the Mocha interface

You can load the path to a different config by accessing any of the config path options in Mocha.

You can load a new config file path via:

  • The Color tab in Preferences (where you can set defaults)

  • The Viewer Preference dialog in the view controls

  • The Project settings of a specific project

ocio change config

Configuration files are usually named as config.ocio in the directory of the color standard you are working with.

Changing the color configuration will automatically update the Working Space, clip space and Display View options.

Clicking the "Reset" button will reset your color to the Mocha default configuration.

OCIO Environment Variable

You can define an OCIO environment variable on your system to point to a custom configuration.

For example, if you wanted to use the default Nuke OCIO config, you could define:
export OCIO=$HOME/OCIO/nuke-default/config.ocio

Then run Mocha (or your plugin host) from the terminal after defining this variable.

You could also set the OCIO environment variable system-wide using an appropriate OS-specific method (e.g. the Environment Variables dialog in Windows).
If there is no config set, you should see the Mocha default configuration in the interface.

If you set a valid config path, you should see the complete list of supported color spaces.

Once set, the OCIO config will be saved with the project.

Mocha Pro OCIO inside Silhouette

When using the Mocha Pro plugin inside Silhouette, you don’t generally need to worry about setting a color space, as the plugin will try to inherit the current working color space that Silhouette is using.

Setting Defaults for Color Space Workflow

If you’re planning on being in a particular working space for ongoing projects, you can define defaults in Mocha Preferences under the Color tab:

ocio preferences settings

These map exactly like the controls in Project Settings, but will be assigned automatically when creating new projects.


File Formats

Note Format support is mainly relevant to the standalone version of Mocha Pro. The Mocha plugin reads the native host source, with the exception of imports done inside the Mocha GUI.

Reading files via the Mocha Plug-In

If you are using the Mocha plug-in, footage handling is done via the host you are using the plug-in with.

File input happens automatically when you launch the Mocha GUI. Mocha reads the source footage directly from the layer, node or track you have applied Mocha to.

The formats below are only relevant to you if you need to import an external file from disk, such as an additional Insert clip or matte clip.

Reading files via Mocha Standalone

Mocha can read in sequences, still images and video clip files.

In order to read in video clip files, you need to set the way video files are read in via Preferences.

Mocha Standalone has two standards for reading in Media files from disk, which you can set via the Clip section in Preferences:

  • QuickTime: This is the legacy way of reading clip files. This method will only read clip files that QuickTime supports. In order to use clips with QuickTime (i.e. not image sequences) you must have QuickTime installed. Level of QuickTime support can vary depending on the operating system.

  • GStreamer: This is an open source multimedia framework for reading many different file formats. It is the current default for reading clips into Mocha.

Supported in this version

Mocha supports most standard movie clip and image sequence formats.

Note that some of the file formats and codecs below will vary depending on whether you have QuickTime or GStreamer selected in Preferences (see above).  

Movie clip formats

  • AVI files (.avi)

  • DV Stream files (.dv)

  • MP4 files (.mp4)

  • MPG files (.mpg)

  • QuickTime Movie files (.mov and .qt)

  • RED files (.r3d)

  • AVCHD files (.mts, .m2t, .m2ts)

  • Windows Media files (.wmv)

  • MKV files (.mkv)

  • MPEG movie files (.mpg, .m2v, .MPG)

  • MXF files (.mxf)

Warning Some clip formats such as MXF will use codecs that Mocha does not support.
In this case you may need to convert the clip to another format. See 'What to Do if Mocha Does Not Support Your Footage' below.

Image formats

  • OpenEXR files (.exr)

  • OpenEXR 2.0 files (.exr)

  • Cineon files (.cin)

  • DPX files (.dpx)

  • JPEG files (.jpg and .jpeg)

  • PNG files (.png)

  • SGI files (.bw, .iris, .rgb, .rgba and .sgi)

  • TGA files (.tga)

  • TIFF files (.tif and .TIFF)

Not Directly Supported in this version

These formats are either not supported directly by Mocha or require additional plugins for QuickTime or your system.

Movie clip formats

  • Cineform files (without supporting codec)

Image formats

  • RAW image files (.RAW)

  • BMP files (.bmp)

What to Do if Mocha Does Not Support Your Footage

In the event that you are working in a format that Mocha doesn’t support, we recommend converting the footage to an image sequence.

If you are just tracking, you can use any compressed format such as a JPG sequence and then use your original footage when you apply the data.  

If you are going to be doing rendering, such as using Mocha Pro’s remove or insert modules, then we recommend converting to a DPX or TIFF sequence.

Make sure of the following when converting to an image sequence:

  1. The frame rate, aspect ratio and dimensions are the same as the original footage.

  2. If you are creating proxy footage, make sure the aspect ratio and frame rate are the same.

  3. If you are using a particular bit depth, make sure you convert to the same depth if you are using the footage for rendering inside Mocha

  4. If using compressed footage, don’t set the compression too low, as this will create artefacts that may hinder tracking and roto.

  5. Make sure Mocha supports the sequence you are converting to!

If you would prefer to convert to a movie clip format then we recommend a standard format that QuickTime would understand, such as Animation or ProRes.

Note Apple and ProRes are trademarks of Apple Inc., registered in the U.S. and other countries and regions.

Command Line

Below you will find a list of command line arguments that can be used to load mocha with preset parameters.

Note that loading a project file on the command line will ignore all other parameters.

Standard usage:

+mocha [arguments] [file…​] +

Table 1. Arguments

--in frame

Specifies an in-point frame for your footage. The frame value is zero-indexed, so all in points assume a base of 0. For example, If your frames start at 250 and you want to begin at 261, you would type mocha --in 12 myFootage.mov. A 0.5 value will let you set on the second field in interlaced footage, for example: mocha --in 12.5

--out frame

Specifies an out-point frame for your footage. The frame value is zero-indexed, so all out points assume a base of 0. For example, If your frames start at 250 and you want to end at 261, you would type mocha --out 12 myFootage.mov. A 0.5 value will let you set on the second field in interlaced footage, for example: mocha --in 12.5

--frame-rate fps

Set the frame rate for the imported footage. For example mocha --frame-rate 24 myFootage.mov

--par par

Set the Pixel Aspect Ratio for the imported footage. For example mocha --par 0.5 myFootage.mov

--interlace-mode mode

Set the interlacing mode for field ordering and pulldown for the imported footage. For example mocha --interlace-mode 1 myFootage.mov See Table 18.2 below for interlace mode codes.

Table 2. Interlace Modes

0

Progressive

1

Sets interlaced mode UPPER FIELD FIRST

2

Sets interlaced mode LOWER FIELD FIRST

3

Sets interlaced mode 3:2 PULLDOWN UPPER FIELD FIRST AA

4

Sets interlaced mode 3:2 PULLDOWN UPPER FIELD FIRST BB

5

Sets interlaced mode 3:2 PULLDOWN UPPER FIELD FIRST BC

6

Sets interlaced mode 3:2 PULLDOWN UPPER FIELD FIRST CD

7

Sets interlaced mode 3:2 PULLDOWN UPPER FIELD FIRST DD

8

Sets interlaced mode 3:2 PULLDOWN LOWER FIELD FIRST AA

9

Sets interlaced mode 3:2 PULLDOWN LOWER FIELD FIRST BB

10

Sets interlaced mode 3:2 PULLDOWN LOWER FIELD FIRST BC

11

Sets interlaced mode 3:2 PULLDOWN LOWER FIELD FIRST CD

12

Sets interlaced mode 3:2 PULLDOWN LOWER FIELD FIRST DD


Environment Variables

Mocha can be initialised with several different environment variables to make it easier to configure across studios.

Checking and Setting Environment Variables

Depending on your system, there are different ways to setup the environment variables. Here is a general guide.

Linux and macOS

The most common way to set environment variables in Linux and macOS is via the command line.

It is best to check if an environment variable is set before you try creating it.
You can do this on Linux or macOS by typing the following into the terminal:

printenv

Alternatively if you want to check the specific variable you can type it after the command:

printenv MOCHA_INIT_SCRIPT

To set an environment variable on Linux or macOS for any programs run from the current shell, you use the export command:

export MOCHA_INIT_SCRIPT="/path/to/my/scripts"

To set an environment variable persistently, including for programs launched from the UI, varies by platform.

On macOS the recommended way is <transcribe from the shotgun website>.

On Linux, set it in your bashrc file or follow directions for your Linux distribution.

Windows

The most common way to set environment variables in Windows is via the Environment Variables dialog in System Properties.

There are numerous ways to get to this dialog, but the easiest on Windows 10 is to:

  1. Press the Windows key or click the start menu

  2. Type "environment"

  3. Select the "Edit the system environment variables" option that appears at the top of the list.

  4. Click the "Environment Variables…​" button at the bottom of the dialog that appears

Once in the dialog, it is best to check if an environment variable is set before you try creating it.

To set an environment variable on Windows:

  1. Click the "New…​" button in the user variables section

  2. Enter your environment variable name into the "Variable name" field (such as MOCHA_INIT_SCRIPT)

  3. Enter the value you want to set to this variable in the "Variable Value" field (eg. /path/to/my/scripts)

  4. Click "OK"

Path variables

MOCHA_INIT_SCRIPT

This is used to set the Python init.py script directory.

If the MOCHA_INIT_SCRIPT environment variable points to a file, that file will be used, if it points to a directory, it will look specifically for init.py in that directory.
If unset, the default locations be used.

An example of setting the MOCHA_INIT_SCRIPT variable as a directory:

MOCHA_INIT_SCRIPT='/Users/Mocha/my_scripts/'

See the Mocha Python Guide for more details on how to use init.py and Python scripts in Mocha.

OCIO

If you need to point to your OCIO config across many applications, or just want to automate the configuration, you can use the standard OCIO path environment variable.

This should specifically point to the config file rather than the directory, for example:

OCIO='/Users/Mocha/my_LUTS/ocio.config'

Display Variables

QT_SCREEN_SCALE_FACTORS

While not specific to Mocha, this environment variable is mostly used to adjust the scaling of the graphics and text in the GUI when working on high resolution monitors.

If you are having difficulty getting GUI scaling to work, try this variable.

The default for this variable is 1.0, that is, the same scale as the current display scale.

A scale of 0.5 would be half the current display scale, and a scale of 2.0 would be double the size.

An example of setting the QT_SCREEN_SCALE_FACTORS variable to 2.0:

QT_SCREEN_SCALE_FACTORS=2.0

If there is more than one screen, you can separate the displays with semicolons. For example in a two-monitor setup with different resolutions:

QT_SCREEN_SCALE_FACTORS=2;1

MOCHA_QT_SCREEN_SCALE_FACTORS

If you are already using QT_SCREEN_SCALE_FACTORS to affect other programs, you may get conflicting scales with Mocha.

To get around this, you can use MOCHA_QT_SCREEN_SCALE_FACTORS which overrides the more general environment variable above.

An example of setting the MOCHA_QT_SCREEN_SCALE_FACTORS variable to 2.0:

MOCHA_QT_SCREEN_SCALE_FACTORS=2.0

If there is more than one screen, you can separate the displays with semicolons. For example in a two-monitor setup with different resolutions:

MOCHA_QT_SCREEN_SCALE_FACTORS=2;1

License Variables

If you want to point to a default Mocha license directory or file via environment variable, use genarts_LICENSE, which affects all Boris FX products.

It uses the usual RLM syntax, e.g:

`genarts_LICENSE=5053@server-name`
`genarts_LICENSE=/path/to/file.lic`

You can also set up the RLM environment variable to read all .lic files in a directory:

genarts_LICENSE='your/rlm/directory`

If you wish to point all RLM-based software, including products from other companies such as the Foundry, to a common license server, you can point to RLM_LICENSE instead:

RLM_LICENSE='your/rlm/directory`

Installing Node-Locked Licenses

Node-locked Installation

  1. Make sure you have downloaded the correct version of Mocha for your operating system. The licensing system for this version is different from v5 and earlier.

  2. Make sure that your version of Mocha is the product you have purchased (You will not be able to use a Mocha Pro AVX Plugin activation code for Mocha Pro standalone unless you have a multi-host license for example.).

  3. You will need to install the Mocha package:

    • Apple OS: Double-click the dmg package and drag the application to your application folder

    • Windows: Double-click the exe package and follow the instructions

    • Linux: Double-click the installation rpm file and follow the on screen instructions. (64-bit versions of the software will not run on a 32-bit version of Linux).

Standard Node-Locked License Activation for Mocha Pro Standalone

When you purchase your license, you will be emailed a serial number. To activate:

  1. Make sure you are connected to the internet

  2. Open Mocha and choose 'Activate' from the welcome screen or 'Activate nodelocked License' from the help menu.

  3. The BorisFX License Tool will load. Choose "Activate your license now":
    mochapro license tool 001

  4. Paste the serial number into the available activation field and click 'Continue'
    mochapro license tool 002

  5. If the activation is successful, details will appear on the next page:
    mochapro license tool 003

  6. Your license should now be installed and Mocha will close to reset into a licensed state:
    mochapro license tool 004

  7. Reopen Mocha to start using your licensed version!

If your machine is not connected to the internet, or you are behind a firewall:

  1. Open Mocha and choose 'Activate' from the welcome screen or 'Activate nodelocked license' from the help menu.

  2. . The BorisFX License Tool will load. Choose "Activate your license manually" from the alternative options:
    mochapro license tool 001

  3. You will be provided with file fields to load a key file:
    mochapro license tool 005

  4. Download and save the key file that you received from your license email from a computer that has Internet connection.

  5. Transfer the key file to your offline machine you are going to activate via a flash/thumb drive or a shared network.

  6. Select the location of the key file in the first field.

  7. Pick a location for the request file (which will be created) in the second field.

  8. Copy the request file (.req) to a machine with an Internet connection.

  9. Upload it to http://activation.borisfx.com/offline-activation.php.

  10. Save the activation file it returns (via download or email), and copy that back to the offline machine.

  11. Enter its location into to the license tool:
    mochapro license tool 005

  12. Your license should install automatically and Mocha will close.

  13. Reopen Mocha to start using your licensed version!

Standard Node-Locked License Activation for Mocha Pro Plugin

First locate the licensing button for your host plugin.

Adobe After Effects Plugin License

For After Effects this is called "License…​" and sits on the bar of the effect title in your Effect Controls:

5.0.0 mochapro ae plugin license control

Adobe Premiere Plugin License

For Premiere, click the small icon next to the effect title:

5.0.0 mochapro premiere plugin license control

Avid Media Composer License

For Avid, click the 'License Control' checkbox under the 'License and Registration' section at the bottom of the plugin controls:

5.0.0 mochapro avid plugin license control

OFX Hosts License

For OFX hosts such as Nuke, Fusion, Hitfilm, Vegas, Flame and so on, click the 'License Control' button under the 'License and Registration' section at the bottom of the plugin controls:

mochapro OFX plugin license control

Note that the look of this button will vary in the OFX plugin from host to host, but the location and button name will always be the same.

Follow the regular activation procedure

After that, the rest of the activation procedure is the same as the process above for Mocha standalone. See "Standard Node-Locked License Activation for Mocha Pro Standalone" for more details.
We recommend restarting the host if you see any issues with licensing.

Node-Locked License Troubleshooting

  1. It is important that your Mocha software matches your activation code, so check your purchase order to make sure everything matches up version wise. It may be that you don’t have the correct version of Mocha installed from our download section. This is especially important for legacy software before V5, where a different licensing method is used.

  2. If you are attempting to install via a terminal instead of directly on the machine itself and you are having trouble getting Mocha to install, try installing directly on the machine.

  3. Check to make sure you are not restricted to using certain ports due to a firewall or other admin permissions. When in doubt, temporarily turn your firewalls off for the duration of the installation and then turn them back on when you are done.

  4. Troubleshoot your machine; try uninstalling all your Mocha software, restarting your machine, and installing the software again from scratch, and make sure you follow installation directions off our website exactly. It sounds redundant, but sometimes it’s a great way to figure out what is going on inside your machine.

  5. If all else fails, our support team is happy to help you figure this out. Please contact support!


Installing Floating Licenses

This guide will walk you through the process of installing floating licenses. Installing node-locked licenses does not require the use of the license manager. See above.

Floating licenses - How it works

A floating license allows central administration of your license deployment, avoiding the need to manually activate and deactivate our software on every machine, which is particularly beneficial for large facilities.

Configuring a new machine to use your floating license server is very straightforward and requires no internet connection.

Similarly, replacing a failed machine can be done without needing to contact technical support for the license to be released.

How do I Install the Floating License Server?

Mocha uses the Boris FX RLM License server for floating licenses.

You can download the license server from the Boris FX website. See the steps below.

Floating licenses are easy to set up if if you are familiar with configuring network services, but if you need any help with the process, please contact technical support.

Note To configure a license server you must have Administrator (or root) privileges

Installing Floating Licenses with Online Activation

  1. Download the RLM License Manager from the download section here: RLM License Server.

  2. Run the License Manager file then follow the installation prompts

  3. Open a Web browser and go to: http://SERVERNAME:5054/goforms/activate (Replace “SERVERNAME” with the name of the license server)

  4. Click "BEGIN License Activation"

  5. Enter activation.genarts.com in the “ISV activation website” field provided and click “Next”.

  6. Enter genarts in the “ISV” field

  7. Copy and paste your Mocha Activation Key license that you received from your license email into the “License activation key” field. Then, click “Next”

  8. Your Ethernet address will auto-populate in the “License Server or Node-lock hostid” field. Accept the auto-populated Ethernet address

  9. Enter the number of licenses that should be locked to this server in the “License count (for floating licenses)” field. Or just enter 0 to assign all licenses to the specified server. Click “Next”

  10. A default license location will auto-populate in the “License File to create or edit” field. Accept the default license location and click “Next”.

  11. On the “Activation Request Data” screen, verify all the information you have entered, and click “REQUEST LICENSE”

  12. On the “License Activation” page, click on “(Re)start License Server”

  13. Then, on the “Reread/Restart Servers” page, click on “Reread/Restart”

The license server should now be set up.

To confirm that the Boris FX license server is working, go to http://SERVERNAME:5054 (replace SERVERNAME with the name of the server), and click “Status” on the top left hand corner.

genarts should show up under the ISV Servers and it will say Running: Yes.

Installing Floating Licenses with Offline Activation

In cases where you cannot install the license via an Activation code (normally where the server is not connected to the internet) you can manually install your license:

  1. On a machine with internet access, download the RLM License Manager from the download section here: RLM License Server

  2. Install the License Manager on both the machine that has an internet connection AND the offline server you intend to run on (You will use the online machine to get the license for your offline server)

  3. One the online computer, open a web browser and go to: http://SERVERNAME:5054/goforms/activate (Replace “SERVERNAME” with the name of the license server)

  4. Click "BEGIN License Activation"

  5. Enter activation.genarts.com in the “ISV activation website” field provided and click “Next”.

  6. Enter genarts in the “ISV” field

  7. Copy and paste your Mocha Activation Key license that you received from your license email into the “License activation key” field. Then, click “Next”

  8. The Ethernet address of the machine you are on will auto-populate in the “License Server or Node-lock hostid” field.
    You will need to overwrite it with the Ethernet address of the offline license server.
    To find the Ethernet address on the offline license server:

    1. For RLM Server v13 and newer:

      • On Windows: Go to start → Boris FX RLM Server → Get RLM HostID

      • On Mac: In a console type: “/Library/Application Support/BorisFX/rlm/Get Hostid.py”

      • On Linux: In a terminal type: /usr/borisfx/rlm/hostid_wrapper.py

    2. For older versions of RLM Server:

      • On Windows: Go to start → GenArtsRLMServer → Get RLM HostID

      • On Mac: In a console type: “/Library/Application Support/GenArts/rlm/Get Hostid.py”

      • On Linux: In a terminal type: /usr/genarts/rlm/hostid_wrapper.py

  9. The command above will print out the results – Get the first mac address from the first line: “Hostid of this machine:“

  10. Enter the mac address into the online “License Server or Node-lock hostid” field.

  11. Enter the number of licenses that should be locked to this server in the “License count (for floating licenses)” field. Or just enter 0 to assign all licenses to the specified server. Click “Next”

  12. A default license location will auto-populate in the “License File to create or edit” field. Replace the default location to a location that you can easily write to and access the file, such as your Desktop or the Downloads folder.

  13. Click "Next"

  14. On the “Activation Request Data” screen, verify all the information you have entered, and click “REQUEST LICENSE”

  15. On the “License Activation” page, click on “(Re)start License Server”

  16. Then, on the “Reread/Restart Servers” page, click on “Reread/Restart”

  17. Transfer the License File on to the offline license server and save the License File to the RLM directory.

    1. For RLM Server v13 and newer:

      • For Windows: C:\Program Files\BorisFX\rlm

      • For Mac: /Library/Application Support/BorisFX/rlm/

      • For Linux: /usr/borisfx/rlm/

    2. For older versions of RLM Server:

      • For Windows: C:\Program Files (x86)\GenArts\rlm

      • For Mac: /Library/Application Support/GenArts/rlm/

      • For Linux: /usr/genarts/rlm/

  18. Open the License File in a text editor and edit the file with your offline server’s Hostname

  19. Open a Web browser on the offline server, go to http://localhost:5054 and click on “(Re)Start License Server”

This completes the License server set up.

To confirm that the Boris FX license server is working, go to http://SERVERNAME:5054 (replace SERVERNAME with the name of the server), and click “Status” on the top left hand corner. genarts should show up under the ISV Servers and it will say Running: Yes.

Now that everything is installed and activated, you no longer need the RLM server installed on the temporary online computer – you can remove it at this time.

Installing the Floating Client License on a Client Machine (Manual Install)

If you haven’t yet installed the server license, follow the instructions above in How do I Install the Floating License Server.
Once you have the server license installed, perform the following steps to get the client license running:

  1. Install Mocha on the client machine

  2. Get the host line from the server license, which looks like this: HOST ServerName EthernetAddress PortNumber

    For example, HOST camelot 00000000042e 5053

  3. Create a new file in a text editor called mocha_client.lic. The file name is not important, as long as the '.lic' extension exists.

  4. Paste in the HOST line into the client license file and press enter to create a new line

  5. You can either keep the server Mac address in the client or replace it with the word "any". See example below:

    mocha_client.lic
    HOST camelot any 5053
  6. Save the file to the Mocha RLM directory. For your particular system this is:

    • For Windows: C:\ProgramData\GenArts\rlm

    • For Mac: /Library/Application Support/GenArts/rlm/

    • For Linux: /usr/genarts/rlm/

  7. If the installation is successful, you will now be able to use Mocha

How do I point to the server license using an Environment Variable?

If you want to point to a license file via environment variable, use genarts_LICENSE. It uses the usual RLM syntax, e.g:

genarts_LICENSE=5053@server-name

genarts_LICENSE=/path/to/file.lic

You can also set up the RLM environment variable to read all .lic files in a directory:

genarts_LICENSE=your/rlm/directory

Note The genarts in the environment variable name must be lower case.

Troubleshooting Floating Licenses

As with any software, problems may arise during the installation process. Please take a moment to read our troubleshooting section and check for common errors.

If you continue to have issues installing, please contact support and we will be happy to help you. You may contact our support team here: https://borisfx.com/support/open-a-case/

Verify your server license has been successfully installed

Check that your license actually exists on the Server:

For RLM Server v13 and newer:

  • For Windows: C:\Program Files\BorisFX\rlm

  • For Mac: /Library/Application Support/BorisFX/rlm/

  • For Linux: /usr/borisfx/rlm/

For older versions of RLM Server:

  • For Windows: C:\Program Files (x86)\GenArts\rlm

  • For Mac: /Library/Application Support/GenArts/rlm/

  • For Linux: /usr/genarts/rlm/

Verify your client license has been successfully installed

Check that your client license actually exists on the client machine:

  • For Windows: C:\ProgramData\GenArts\rlm

  • For Mac: /Library/Application Support/GenArts/rlm/

  • For Linux: /usr/genarts/rlm/

Verify you are using the latest version of the license server software.

Check to make sure your License Manager is up to date.

Verify there is not a firewall running between the server and the client computer

If your organization needs to run a firewall, you will need to check if the ports for the RLM server are open for use.

Check to make sure your Mocha software matches your activation code

Check your purchase order to make sure everything matches up version wise. It may be that you don’t have the correct version of Mocha installed from our download section. This is especially important for legacy software.

Check for conflicting licenses installed in your licensing folder

If you have more than one Mocha license installed on the server or client machine check to make sure they are not expired licenses. While rare, sometimes these licenses can conflict with any current ones you have on your system.

The client does not connect or see the server host name

If your client machine does not connect to the server based on the server name, try replacing the server name with the IP address of the server instead in the license file. You can easily do this via the License Manager or via a text editor.

When in doubt, check the logs!

Check logs and their paths: Read the logs from Mocha and from your server, they will tell you all about what is happening to your machine.

Check your firewall settings

Check to make sure you are not restricted to using certain ports due to a firewall or other admin permissions. When in doubt, temporarily turn your firewalls off for the duration of the installation and then turn them back on when you are done.

Check your host name settings

If your client machine is not able to connect to the server you may have a networking issue. Try changing the server name in the client license to the IP address of the server instead, or check to see if your host has ".local" appended to the end of it.
You can also do this in any text editor by opening up the client license and server license and manually editing the server name.

Sometimes the best solution is to start again

You might roll your eyes at this one, but try uninstalling, restarting your machine, and installing the software again from scratch. Make sure you follow installation directions off our website exactly. It sounds redundant, but sometimes it’s a great way to troubleshoot what is going on inside your machine.

When all else fails…​

Contact us!
Our support team are more than happy to help you fix any floating license issues you may have.
Please contact support here: https://borisfx.com/support/open-a-case/


Installing Render Licenses

This section will discuss the installation of floating render licenses and how they differ from standard interactive floating licensed.

Render Floating Licenses vs Interactive Floating Licenses

A render license is a specific kind of floating license that only allows rendering of Mocha project output, be it inside a plugin or in the standalone application.

When you are using a floating license, it is broken into two parts: The interactive portion and the rendering portion.

For plugins, this is separated like so:

  1. If you open the Mocha GUI in the Mocha Pro Plugin (and a license is available) you are entering the interactive portion.

  2. If you are back in the host and not using interactive elements such as layer choosing or opening the GUI, you are using the rendering portion of the license.

For the standalone, this is separated like so:

  1. If you open the Mocha Pro standalone application (and a license is available) you are entering the interactive portion.

  2. If you have the Mocha Pro standalone application closed and are using the mocharender.py render script, you are utilizing the rendering portion. (See the Python guide for more details on rendering with mocharender.py)

If the interactive license is in use elsewhere or missing, the Mocha GUI will become unlicensed and attempting further work may encrypt your project if you choose to save.
If you have no interactive floating licenses available to render with, additional render licenses can be helpful to let you free up interactive licenses elsewhere.

Workflow for Render Licenses: Example 1

To help illustrate the Render License workflow, let’s look at the following situation:

  • 5 floating licenses (interactive)

  • 10 render licenses (render only)

  • There is only 1 user

The license server is operating with both sets of licenses.

  • If only one person is using Mocha on the network, there are 4 interactive and 10 render licenses still available to use.

  • If only that one person was using Mocha on the network, they would have 15 render machines available for use including the one they were working with.

  • If another person started working and all machines were in use for rendering, their version of Mocha would be unlicensed, as there would be no available seats.

Workflow for Render Licenses: Example 2

To help illustrate the Render License workflow, let’s look at another situation:

  • 5 floating licenses (interactive)

  • 10 render licenses (render only)

  • There are 5 users

The license server is operating with both sets of licenses.

  • There are 5 people working in Mocha.

  • If another user tries to work on a 6th machine, they will open Mocha unlicensed, because all interactive licenses are in use.

  • They open an existing project with Mocha in it (or render from the command line), they will be able to render, because all render licenses are available.

Now, say one person wants to send off a render to the network:

  • If 5 people are using Mocha on the network already, there would be 11 render machines available for use including the one the user was presently working with.

  • If another person stopped working in Mocha, the interactive license would be released, and a new machine would then be free to either use for work (interactive) or render (non-interactive) by another user.

Installing Render Floating Licenses

The installation of a render license is exactly the same as that of a standard interactive floating license. See the 'Installing Floating Licenses' for a complete guide.

File Management for Rendering on a Network

If you are planning to render either via the Mocha render scripts, an Adobe watch folder or a render farm (for example in Nuke), there are some file workflows you need to adopt.

You will need to make sure the necessary source footage is available for all machines. This includes anything you have imported into the Mocha GUI such as clean plates, insert clips and other imported files.

These files need to be managed by any of the following methods:

  • Placed in the same file structure on all machines

  • Relinked manually with an interactive license on all machines

  • Pointing to the same shared directory.

Failing to set this up may result in incorrect renders.

Important If you are using the plugin, you may have imported footage into the Mocha GUI separate from the host source footage. Make sure any imported footage is also available.

Troubleshooting Mocha issues

Uh Oh. You’ve run into a problem using Mocha. Here are some guides to tackling some roadblocks.

Common Error Messages

Mocha will occasionally throw out an error message when launching, tracking, or performing rendering tasks.

Here are a fe of the more common messages you’ll see, and what they mean.

Tracking

"Tracking Terminated Prematurely"

Often paired with the error "One or more layers were not tracked properly."

This usually means Mocha can’t see where to track next. This can be for a variety of reasons:

  1. Your tracking area is too small or does use enough pixels. Try increasing the size of the spline area or the Min % of pixels used.

  2. The area you are tracking has jumped a significant distance. Try moving back a frame where the tracking was good and increase
    the horizontal and/or vertical search area.

  3. The area has become completely obscured by something else, the edge of the shot or by motion blur. Check the next frame to see where it went. If
    you can’t see an obvious reason, try expanding the spline area, increasing the percentage of pixels used, or move the spline to
    a different part of the shot that is coplanar to the area you were tracking.

  4. Mocha can’t find the frame. This could be because the host hasn’t sent the plugin a frame or you have a corrupted frame on disk.
    Check if you need to purge your cache or free up some memory.

"Tracking failed: couldn’t decompose motion matrix"

This usually means the tracking surface has gone behind the camera and cannot calculate the plane as it’s gone out of bounds.
Normally this happens in tracking with extreme perspetive distortion.

One way around this is to track from the middle of the motion as opposed to starting at one end.

Splines

"Point could not be transformed into frame due to distortion. Error: SEL3"

When you move a point and get this error, there can be a couple of reasons for the problem:

  1. Usually this is a symptom of a bad track. The track has becme very distorted and moving the point is trying to translate within that space.

  2. A corrupted spline. This can happen when points are very close together or have very extreme handles, or are looping in on themselve.

In both situations it’s often best to either find the problem point or keyframe and delete it or remove the spline and attempt to retrack it.

File and clip problems

Frame Not Rendered in Clip

If you open Mocha and you may see a yellow warning that says "Frame X not Rendered in Clip" and the name of a rendered clip, like Remove, Insert, Stabilize etc.

This is very normal. Your render cache is just cleared and needs to be re-rendered.

To go back to seeing your footage, you can either use the top left hand dropdown in the viewer to select "Selected Layer" to view the source clip
or you can click "Render" to re-render the frames of the clip that you are missing.

If you’re wondering why you get this message at all, read on:

When you are in the standalone version of Mocha, you will often see the rendered clip when you reopen,
because it is not cleared unless you tell it to.
In the plugin, however, the render is always cleared on exit. You won’t ever see the render
when you go back to the Mocha GUI in the plugin, because it is always removed.

Because a plugin environment relies on the host’s images, if any changes are made to the source footage
(brightness, color correction, editing, effects etc) the plugin needs to be updated with the new information.
If we retain the old cached render, the output wouldn’t reflect the changes made by the user in the host
and you would get inconsistent results.
So, when you see a message saying “Frame X not rendered”, it literally just means there isn’t currently
a frame to view, because it’s either never been rendered, or it’s been cleared.

"Failed to open file"

This error will also say "The file is corrupted or in an unsupported format."

Generally the reason this occurs is for that very reason: The file can’t be read because it’s not currently supported.
In most cases the best way to get back to work is to convert the clip in question to an image sequence such as TIF or DPX.

You can also try to convert to one of the suppported media formats listed in the File Formats section of the user guide.

"Bad Argument Provided"

If you get this error, it usually means the host hasn’t sent Mocha any readable information.

This can be for several reasons:
. The host has run out of cache memory and can’t supply any new frames
. The node or layer you’ve added the Mocha effect to has hold or retiming applied to it and is feeding Mocha incorrect frames.
. A frame is missing or corrupted

In most cases, you need to solve this on the host end and find where the problem has occured. If you’re unsure, please contact Boris FX support.

“Clip must be converted to 8 bit greyscale for use as a matte clip.”

If you need to use a matte clip in your project you need to import a Grey formatted file, not RGB.

If you don’t have a file that supports Grey as a color format, we do the conversion for you and save the resulting clip to the clip cache.

License problems

"Licensing error: heartbeat failure"

The error occurs when a floating license client loses connection to the license the server.

Normally to fix this you need to restablish the connection to the license server.

Common problems encountered when working with Mocha

Tracking

Tracking slips or becomes erratic

In most cases, a slipping, drifting or jumping track is going to be because Mocha
cannot find the area you were tracking on the next frame.

There can be multiple causes for this, so let’s take a look at some common cases.

The tracking area has been interrupted or obscured

This is probably the most common. When the area you are tracking has something else enter
the layer shape, it can throw off the track.

This can be a small, high-contrast object entering the edges of the shape or even completely covering the main area.

It can also be caused by the area itself updating, such as screens or reflective objects.

It’s important to check over your clip to see if anything (e.g. a bird, elbow, hair, etc)
has drifted into the space you are tracking. If it has, you need to either adjust your
tracking shape to avoid the object, or create a separate layer mask on top of your tracking layer.

In cases where the foreground interruption is very large, you may not have enough information
left in the tracking shape to get any worthwhile tracking data.
In this case, you may need to track a coplanar area or manually adjust the tracking to
ignore the problem.

The tracking area is moving very fast

If an object is moving fast, you can get two problems: The tracking not being able to keep up and the introduction of motion blur.

If the object is moving very fast vertically or horizontally, you may need to turn
off the "Auto" checkboxes in the search area parameters and enter a larger value.
If the object is rotating or zooming/scaling very quickly, you can also adjust the
angle and zoom parameters to provide an estimate of the speed of motion.

For motion blur, it can be trickier. Start by increasing the Min % of Pixels used to see if there is
enough detail to keep Mocha latched on. If the track is still slipping, it may be worth continuing the track and adjusting the drift with
AjustTrack afterwards.


Third Party Open Source and Commercial Licenses Used by Mocha

Mocha uses the following third-party libraries and commercial licenses.
Where relevant, full license text is listed under each heading.

Qt 5.12.3

Qt is available under the GNU Lesser General Public License version 3.

The source code for Qt 5.12.3 can be obtained from https://github.com/boris-fx/qt5/tree/bfx/5.12.3

License
GNU LESSER GENERAL PUBLIC LICENSE
    Version 3, 29 June 2007

Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.

0. Additional Definitions.

As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.

"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.

An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.

A "Combined Work" is a work produced by combining or linking an
Application with the Library.  The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".

The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.

The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.

1. Exception to Section 3 of the GNU GPL.

You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.

2. Conveying Modified Versions.

If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:

a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or

b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.

3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from
a header file that is part of the Library.  You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:

a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.

b) Accompany the object code with a copy of the GNU GPL and this license
document.

4. Combined Works.

You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:

a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.

b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.

c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.

d) Do one of the following:

0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.

1) Use a suitable shared library mechanism for linking with the
Library.  A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.

e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)

5. Combined Libraries.

You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:

a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.

b) Give prominent notice with the combined library that part of it
is a work based on the Library, and explaining where to find the
accompanying uncombined form of the same work.

6. Revised Versions of the GNU Lesser General Public License.

The Free Software Foundation may publish revised and/or new versions
of the GNU Lesser General Public License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the
Library as you received it specifies that a certain numbered version
of the GNU Lesser General Public License "or any later version"
applies to it, you have the option of following the terms and
conditions either of that published version or of any later version
published by the Free Software Foundation. If the Library as you
received it does not specify a version number of the GNU Lesser
General Public License, you may choose any version of the GNU Lesser
General Public License ever published by the Free Software Foundation.

If the Library as you received it specifies that a proxy can decide
whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.

Python

License
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2

1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.

2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation;
All Rights Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.

3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.

4. PSF is making Python available to Licensee on an "AS IS"
basis.  PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED.  BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.

5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.

6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.

7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee.  This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.

8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.

OpenColorIO

License
Copyright Contributors to the OpenColorIO Project.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

* Redistributions of source code must retain the above copyright
  notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
  notice, this list of conditions and the following disclaimer in the
  documentation and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
  contributors may be used to endorse or promote products derived from
  this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

OpenSSL

License
  LICENSE ISSUES
  ==============

  The OpenSSL toolkit stays under a double license, i.e. both the conditions of
  the OpenSSL License and the original SSLeay license apply to the toolkit.
  See below for the actual license texts.

  OpenSSL License
  ---------------

/* ====================================================================
 * Copyright (c) 1998-2018 The OpenSSL Project.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. All advertising materials mentioning features or use of this
 *    software must display the following acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
 *
 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
 *    endorse or promote products derived from this software without
 *    prior written permission. For written permission, please contact
 *    openssl-core@openssl.org.
 *
 * 5. Products derived from this software may not be called "OpenSSL"
 *    nor may "OpenSSL" appear in their names without prior written
 *    permission of the OpenSSL Project.
 *
 * 6. Redistributions of any form whatsoever must retain the following
 *    acknowledgment:
 *    "This product includes software developed by the OpenSSL Project
 *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
 *
 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
 * OF THE POSSIBILITY OF SUCH DAMAGE.
 * ====================================================================
 *
 * This product includes cryptographic software written by Eric Young
 * (eay@cryptsoft.com).  This product includes software written by Tim
 * Hudson (tjh@cryptsoft.com).
 *
 */

 Original SSLeay License
 -----------------------

/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
 * All rights reserved.
 *
 * This package is an SSL implementation written
 * by Eric Young (eay@cryptsoft.com).
 * The implementation was written so as to conform with Netscapes SSL.
 *
 * This library is free for commercial and non-commercial use as long as
 * the following conditions are aheared to.  The following conditions
 * apply to all code found in this distribution, be it the RC4, RSA,
 * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
 * included with this distribution is covered by the same copyright terms
 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
 *
 * Copyright remains Eric Young's, and as such any Copyright notices in
 * the code are not to be removed.
 * If this package is used in a product, Eric Young should be given attribution
 * as the author of the parts of the library used.
 * This can be in the form of a textual message at program startup or
 * in documentation (online or textual) provided with the package.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *    "This product includes cryptographic software written by
 *     Eric Young (eay@cryptsoft.com)"
 *    The word 'cryptographic' can be left out if the rouines from the library
 *    being used are not cryptographic related :-).
 * 4. If you include any Windows specific code (or a derivative thereof) from
 *    the apps directory (application code) you must include an acknowledgement:
 *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
 *
 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * The licence and distribution terms for any publically available version or
 * derivative of this code cannot be changed.  i.e. this code cannot simply be
 * copied and put under another distribution licence
 * [including the GNU Public Licence.]
 */

libpng

License
This copy of the libpng notices is provided for your convenience.  In case of
any discrepancy between this copy and the notices in the file png.h that is
included in the libpng distribution, the latter shall prevail.

COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:

If you modify libpng you may insert additional notices immediately following
this sentence.

This code is released under the libpng license.

libpng versions 1.0.7, July 1, 2000 through 1.6.35, July 15, 2018 are
Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are
derived from libpng-1.0.6, and are distributed according to the same
disclaimer and license as libpng-1.0.6 with the following individuals
added to the list of Contributing Authors:

   Simon-Pierre Cadieux
   Eric S. Raymond
   Mans Rullgard
   Cosmin Truta
   Gilles Vollant
   James Yu
   Mandar Sahastrabuddhe
   Google Inc.
   Vadim Barkov

and with the following additions to the disclaimer:

   There is no warranty against interference with your enjoyment of the
   library or against infringement.  There is no warranty that our
   efforts or the library will fulfill any of your particular purposes
   or needs.  This library is provided with all faults, and the entire
   risk of satisfactory quality, performance, accuracy, and effort is with
   the user.

Some files in the "contrib" directory and some configure-generated
files that are distributed with libpng have other copyright owners and
are released under other open source licenses.

libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
libpng-0.96, and are distributed according to the same disclaimer and
license as libpng-0.96, with the following individuals added to the list
of Contributing Authors:

   Tom Lane
   Glenn Randers-Pehrson
   Willem van Schaik

libpng versions 0.89, June 1996, through 0.96, May 1997, are
Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
and are distributed according to the same disclaimer and license as
libpng-0.88, with the following individuals added to the list of
Contributing Authors:

   John Bowler
   Kevin Bracey
   Sam Bushell
   Magnus Holmgren
   Greg Roelofs
   Tom Tanner

Some files in the "scripts" directory have other copyright owners
but are released under this license.

libpng versions 0.5, May 1995, through 0.88, January 1996, are
Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.

For the purposes of this copyright and license, "Contributing Authors"
is defined as the following set of individuals:

   Andreas Dilger
   Dave Martindale
   Guy Eric Schalnat
   Paul Schmidt
   Tim Wegner

The PNG Reference Library is supplied "AS IS".  The Contributing Authors
and Group 42, Inc. disclaim all warranties, expressed or implied,
including, without limitation, the warranties of merchantability and of
fitness for any purpose.  The Contributing Authors and Group 42, Inc.
assume no liability for direct, indirect, incidental, special, exemplary,
or consequential damages, which may result from the use of the PNG
Reference Library, even if advised of the possibility of such damage.

Permission is hereby granted to use, copy, modify, and distribute this
source code, or portions hereof, for any purpose, without fee, subject
to the following restrictions:

  1. The origin of this source code must not be misrepresented.

  2. Altered versions must be plainly marked as such and must not
     be misrepresented as being the original source.

  3. This Copyright notice may not be removed or altered from any
     source or altered source distribution.

The Contributing Authors and Group 42, Inc. specifically permit, without
fee, and encourage the use of this source code as a component to
supporting the PNG file format in commercial products.  If you use this
source code in a product, acknowledgment is not required but would be
appreciated.

END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE.

TRADEMARK:

The name "libpng" has not been registered by the Copyright owner
as a trademark in any jurisdiction.  However, because libpng has
been distributed and maintained world-wide, continually since 1995,
the Copyright owner claims "common-law trademark protection" in any
jurisdiction where common-law trademark is recognized.

OSI CERTIFICATION:

Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is
a certification mark of the Open Source Initiative. OSI has not addressed
the additional disclaimers inserted at version 1.0.7.

EXPORT CONTROL:

The Copyright owner believes that the Export Control Classification
Number (ECCN) for libpng is EAR99, which means not subject to export
controls or International Traffic in Arms Regulations (ITAR) because
it is open source, publicly available software, that does not contain
any encryption software.  See the EAR, paragraphs 734.3(b)(3) and
734.7(b).

Glenn Randers-Pehrson
glennrp at users.sourceforge.net
July 15, 2018

libjpeg

This software is based in part on the work of the Independent JPEG Group.

PySide2

The source code for PySide2 can be obtained from https://github.com/boris-fx/mocha-pyside2/tree/5.12

PySide2 uses Lesser General Public License (LGPL) version 2.1

License
GNU LESSER GENERAL PUBLIC LICENSE
               Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

                Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

          GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

             END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

Shiboken2

The source code for Shiboken2 can be obtained from https://github.com/boris-fx/mocha-shiboken2/tree/5.12

Shiboken uses Lesser General Public License (LGPL) version 2.1.

License
GNU LESSER GENERAL PUBLIC LICENSE
               Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

                Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

          GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

                NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

             END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

FBX SDK

The FBX SDK is supplied by Autodesk.

License
This software contains Autodesk® FBX® code developed by Autodesk, Inc. Copyright 2018 Autodesk, Inc. All rights, reserved. Such code is provided "as is" and Autodesk, Inc. disclaims any and all warranties, whether express or implied, including without limitation the implied warranties of merchantability, fitness for a particular purpose or non-infringement of third party rights. In no event shall Autodesk, Inc. be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of such code.

OpenEXR

License
Copyright (c) 2002-2011, Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:


Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of Industrial Light & Magic nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

R3D SDK

This software is based in part on the work of RED.COM, LLC

FreeType

License
Portions of this software are copyright ©2009 The FreeType Project (www.freetype.org).
All rights reserved.

fontconfig

License
Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard
Copyright © 2005 Patrick Lam
Copyright © 2009 Roozbeh Pournader
Copyright © 2008,2009 Red Hat, Inc.
Copyright © 2008 Danilo Šegan
Copyright © 2012 Google, Inc.


Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the name of the author(s) not be used in
advertising or publicity pertaining to distribution of the software without
specific, written prior permission.  The authors make no
representations about the suitability of this software for any purpose.  It
is provided "as is" without express or implied warranty.

THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

libtiff

License
Copyright (c) 1988-1997 Sam Leffler
Copyright (c) 1991-1997 Silicon Graphics, Inc.

Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
that (i) the above copyright notices and this permission notice appear in
all copies of the software and related documentation, and (ii) the names of
Sam Leffler and Silicon Graphics may not be used in any advertising or
publicity relating to the software without the specific, prior written
permission of Sam Leffler and Silicon Graphics.

THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.

uuid

OSSP uuid uses the MIT license.

License
OSSP uuid -- uuid Library
  Copyright (c) 2002-2008 Ralf S. Engelschall
  Copyright (c) 2002-2008 The OSSP Project

  This file is part of OSSP uuid, a uuid library which
  can be found at http://www.ossp.org/pkg/lib/uuid/.

  Permission to use, copy, modify, and distribute this software for
  any purpose with or without fee is hereby granted, provided that
  the above copyright notice and this permission notice appear in all
  copies.

  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  SUCH DAMAGE.

libxml

License
Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is fur-
nished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

libz

License
zlib.h -- interface of the 'zlib' general purpose compression library
 version 1.2.11, January 15th, 2017

 Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler

 This software is provided 'as-is', without any express or implied
 warranty.  In no event will the authors be held liable for any damages
 arising from the use of this software.

 Permission is granted to anyone to use this software for any purpose,
 including commercial applications, and to alter it and redistribute it
 freely, subject to the following restrictions:

 1. The origin of this software must not be misrepresented; you must not
    claim that you wrote the original software. If you use this software
    in a product, an acknowledgment in the product documentation would be
    appreciated but is not required.
 2. Altered source versions must be plainly marked as such, and must not be
    misrepresented as being the original software.
 3. This notice may not be removed or altered from any source distribution.

 Jean-loup Gailly        Mark Adler
 jloup@gzip.org          madler@alumni.caltech.edu

GStreamer

The source code for GStreamer 1.16.3 can be obtained from
https://gitlab.freedesktop.org/gstreamer. Boris FX modifications to
gst-plugins-good are available at https://github.com/boris-fx/gst-plugins-good/tree/1.16.

License
		  GNU LIBRARY GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1991 Free Software Foundation, Inc.
                    51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the library GPL.  It is
 numbered 2 because it goes with version 2 of the ordinary GPL.]

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it.  You can use it for
your libraries, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.

  Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library.  If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software.  To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.

  Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs.  This
license, the GNU Library General Public License, applies to certain
designated libraries.  This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.

  The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it.  Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program.  However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.

  Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries.  We
concluded that weaker conditions might promote sharing better.

  However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves.  This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them.  (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.)  The hope is that this
will lead to faster development of free libraries.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, while the latter only
works together with the library.

  Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.

		  GNU LIBRARY GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License").  Each licensee is
addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    c) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    d) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

			    NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

		     END OF TERMS AND CONDITIONS

     Appendix: How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!

Alembic

License
TM & © 2009-2015 Lucasfilm Entertainment Company Ltd. or Lucasfilm Ltd.
All rights reserved.

Industrial Light & Magic, ILM and the Bulb and Gear design logo are all
registered trademarks or service marks of Lucasfilm Ltd.

© 2009-2015 Sony Pictures Imageworks Inc.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Industrial Light & Magic nor the names of
its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


-------------------------------------------------------------------------------

ALEMBIC ATTACHMENT A —
REQUIRED NOTICES FOR DISTRIBUTION

The Alembic Software is distributed along with certain third party
components licensed under various open source software licenses ("Open
Source Components"). In addition to the warranty disclaimers contained
in the open source licenses found below, Industrial Light & Magic, a
division of Lucasfilm Entertainment Company Ltd. ("ILM") makes the
following disclaimers regarding the Open Source Components on behalf of
itself, the copyright holders, contributors, and licensors of such Open
Source Components:

TO THE FULLEST EXTENT PERMITTED UNDER APPLICABLE LAW, THE OPEN SOURCE
COMPONENTS ARE PROVIDED BY THE COPYRIGHT HOLDERS, CONTRIBUTORS,
LICENSORS, AND ILM "AS IS" AND ANY REPRESENTATIONS OR WARRANTIES OF ANY
KIND, WHETHER ORAL OR WRITTEN, WHETHER EXPRESS, IMPLIED, OR ARISING BY
STATUTE, CUSTOM, COURSE OF DEALING, OR TRADE USAGE, INCLUDING WITHOUT
LIMITATION THE IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR
A PARTICULAR PURPOSE, AND NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT
WILL THE COPYRIGHT OWNER, CONTRIBUTORS, LICENSORS, OR ILM AND/OR ITS
AFFILIATES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION), HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE OPEN
SOURCE COMPONENTS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Boost C++ Libraries
------------------------------------------------------------------------

Boost Software License – Version 1.0 August 17th, 2003 Permission is
hereby granted, free of charge, to any person or organization obtaining
a copy of the software and accompanying documentation covered by this
license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of
the Software, and to permit third-parties to whom the Software is
furnished to do so, all subject to the following:

The copyright notices in the Software and this entire statement,
including the above license grant, this restriction and the following
disclaimer, must be included in all copies of the Software, in whole or
in part, and all derivative works of the Software, unless such copies or
derivative works are solely in the form of machine-executable object
code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND
NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE
DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY,
WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Eigen

License
 Copyright (c) 2011, Intel Corporation. All rights reserved.

 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:

 * Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
 * Neither the name of Intel Corporation nor the names of its contributors may
   be used to endorse or promote products derived from this software without
   specific prior written permission.

 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

OpenCV

License
By downloading, copying, installing or using the software you agree to this license.
If you do not agree to this license, do not download, install,
copy or use the software.


                          License Agreement
               For Open Source Computer Vision Library
                       (3-clause BSD License)

Copyright (C) 2000-2020, Intel Corporation, all rights reserved.
Copyright (C) 2009-2011, Willow Garage Inc., all rights reserved.
Copyright (C) 2009-2016, NVIDIA Corporation, all rights reserved.
Copyright (C) 2010-2013, Advanced Micro Devices, Inc., all rights reserved.
Copyright (C) 2015-2016, OpenCV Foundation, all rights reserved.
Copyright (C) 2015-2016, Itseez Inc., all rights reserved.
Copyright (C) 2019-2020, Xperience AI, all rights reserved.
Third party copyrights are property of their respective owners.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

  * Redistributions of source code must retain the above copyright notice,
    this list of conditions and the following disclaimer.

  * Redistributions in binary form must reproduce the above copyright notice,
    this list of conditions and the following disclaimer in the documentation
    and/or other materials provided with the distribution.

  * Neither the names of the copyright holders nor the names of the contributors
    may be used to endorse or promote products derived from this software
    without specific prior written permission.

This software is provided by the copyright holders and contributors "as is" and
any express or implied warranties, including, but not limited to, the implied
warranties of merchantability and fitness for a particular purpose are disclaimed.
In no event shall copyright holders or contributors be liable for any direct,
indirect, incidental, special, exemplary, or consequential damages
(including, but not limited to, procurement of substitute goods or services;
loss of use, data, or profits; or business interruption) however caused
and on any theory of liability, whether in contract, strict liability,
or tort (including negligence or otherwise) arising in any way out of
the use of this software, even if advised of the possibility of such
damage.