QC Tools

VFX Assets Quality Control

DESCRIPTION

The process began with The Life of Our Lord* (TLOOL) project, where the studio was responsible for creating assets (models and look development) for Mofac Animation Studios.

To ensure the assets met the client's expectations, we had to adhere to a strict set of rules.
Even when assets are used internally, some rules must still be respected to make the assets usable across departments.
In both cases, assets must comply with specific requirements and follow established guidelines.

Typical quality control (QC) checks include:
  • Software and plugin versions
  • Geometry constraints
  • UVs and shaders
  • Naming conventions
  • etc.

Since each asset type may have different requirements depending on the project or client, the QC process needs to be flexible and adaptable to each case.
To streamline this process and guarantee that only compliant assets are accepted, dedicated QC tools are required.

Initially, internally developed tools were used, then replaced by open-source tools as the pipeline evolved in complexity.

The different tools however work similarly and share a common set of features, including:

  • Plugin-based system
    • Each plugin is defined by a Python class derived from a shared base class
    • A mandatory "check" method contains the validation logic
    • An optional "fix" method can automatically correct issues
    • Plugins are dynamically loaded from directories specified in the project settings
    • Plugins can be global (scene or session-wide) or specific to individual elements (objects, models, components, etc.)
    • Plugins are organized by category
  • Optional checks can be enabled or disabled as needed
  • Specific elements can be excluded from the QC process
  • Invalid elements can be highlighted or selected directly within the scene

This approach allows us to maintain high-quality standards across all assets while adapting quickly to varying project demands.

ROLE

Maya QC Tool

At the time, no pipeline tools were available at the studio.
I was initially tasked with quickly developing a basic QC tool for Maya to validate assets for The Life of Our Lord (TLOOL) project.

Built from scratch in Python, this was my first project in the VFX industry.
Though simple, the tool enabled asset validation and served as a training opportunity for artists to start working with early pipeline tools.

Maya Asset Publisher

To further streamline production, I developed an asset publishing tool for Maya.
Its primary function was to save assets to the correct location on the server using standardized naming conventions, while also managing basic versioning.
The tool could optionally trigger the QC process, and thanks to asset organization ensure that artists could easily locate validated data.

Pyblish

As both the scope and complexity of requirements expanded, especially with the inclusion of other DCCs, a more flexible solution was needed.

After researching alternatives, I discovered Pyblish, an open-source validation and publishing framework.
Coincidentally, I had already developed a very similar (yet more simplistic) tool, which made the transition to Pyblish straightforward.
I adapted and created custom plugins to align with our studio's internal guidelines.

Additionally, I wrote deployment scripts to install Pyblish across all studio workstations, supporting both local and network-based usage.

Thanks to Pyblish being part of the OpenPype framework, our plugins were easily reused once we transitioned to OpenPype.

QuickQC

In collaboration with a junior developer, we created QuickQC, an extended version of Pyblish designed to be more modular and efficient.

Key improvements included:
  • Granular plugin configuration: plugins could now be filtered by project, user role, category, etc.
  • Selective execution: users could run individual checks or groups of checks, speeding up the validation process and avoiding full runs when only specific validations were desired.

An companion tool, the QC Classifier, was also developed to manage plugin configurations.

QuickQC was eventually integrated into our OpenPype environment, alongside the DailyQC tool.