Title Image

Maya Tools: Shot Mask

3 hours 47 minutes
Chris Zurbrigg

Become a Patron!


An advanced, project-based course detailing the process of creating a custom Shot Mask node for Maya and the supporting UI to make it a user-friendly experience.

This course builds on the foundations of the Maya Python API and the PySide2 for Maya series and highlights many of the challenges encountered when building production level tools.
* This is a Patreon series. Project files and videos marked with a Patreon logo are Total Access exclusives.

Course Outline

23 Videos (3 hours 47 minutes)

00 - Introduction

A general overview of this series, the course requirements and what viewers can expect in upcoming lessons.

01 - Project Overview

A high level overview of the Shot Mask project -- the objectives, requirements and deliverables.

02 - Project Setup

A quick tour of the Maya plugin boilerplate code that is common to all custom locator nodes.

03 - Visibility (Part 1)

An explanation of shot mask visibility and required changes to the locator node's default properties to avoid issues down the road.

04 - Visibility (Part 2)

The implementation of a custom attribute that will be used to limit the shot mask visibility to specific cameras.

05 - Attributes (Part 1)

The implementation of the Shot Mask node attributes required by the node's draw override class.

06 - Attributes (Part 2)

Continuing on from the previous lesson, the remaining attributes are added to the Shot Mask node.

07 - Attributes (Part 3)

Wrapping up the attributes section, attribute values are retrieved from the node and stored in the user data object for use by the draw override node.

08 - Drawing the Mask (Part 1)

Before drawing can begin the size and position of the mask must be calculated based on the current camera, viewport and render settings.

09 - Drawing the Mask (Part 2)

Having calculated the required values to draw the shot mask in the previous lesson, it is time to begin drawing the elements of the shot mask.

10 - Drawing the Mask (Part 3)

Continuing on from the previous lesson, the logic for drawing the text to the six different positions is implemented.

11 - Drawing the Mask (Part 4)

With the basic draw functionality implemented the limitations on the Fill and Overscan film fit types can be addressed.

12 - Fixing Shadows

Correcting an issue with shadows when the shot mask is added to a scene.

13 - Tags (Part 1)

A "tag" system allows shot mask text fields to be update dynamically through script while maintaining a simplified interface for the end user.

14 - Tags (Part 2)

Continuing on from the previous lesson, support is added for additional tags including the current scene name, camera name and date.

15 - Images (Part 1)

A further extension of the tag system to display images, for example a company logo, on the shot mask.

16 - Images (Part 2)

Implementation of the draw_image method -- responsible for drawing images in a VP2.0 viewport.

17 - Images (Part 3)

Setting up the logic to determine if an image has been specified and can be drawn on the shot mask.

18 - Cleanup

Fixing a small issue introduced by the addition of image support.

19 - User Interface (Part 1)

The final step in the shot mask development process is the addition of a clean, intuitive and user friendly UI (built using Qt for Python).

20 - User Interface (Part 2)

Quality of life improvements so that everything "just works" for the end user.

21 - User Interface (Part 3)

Wrapping up the shot mask UI, the remaining functionality, including persistent user settings, is implemented.

22 - Final Cleanup

Fixing a small bug in the shot mask node that occurs while using the UI.

Related Courses