top of page
MHM.png

Metahuman Animation Pipeline Tool

2 99.png
1 57.png

This project is a custom facial animation management tool for MetaHuman characters in Maya, built with Python and a Qt-based UI. The tool automatically scans MetaHuman facial controllers in the scene, generates a reusable control configuration, and exports per-frame animation data to JSON. At the same time, it captures a viewport screenshot and links it to each animation clip as a visual preview. On the import side, users can select an existing config and animation file to retarget the facial motion back onto a rig, with keyframes being rebuilt over the timeline. The goal of this tool is to simplify the process of testing, reusing and organizing facial animation, providing a more intuitive and efficient workflow for technical artists and animators.

Ellipse 8.png

Background

Ellipse 8.png

Software&Role

Software:
QtDesigner
PyCharm
Maya
Unreal Engine

Role:
Technical Artist: Tool

Ellipse 8.png

Date of completion: Nov 2025

UI Design - QtDesigner

Before building the interface, I sketched the basic user flow and split the tool into two clear stages: Export and Import.For the Export tab, I used a straightforward, single-column layout. At the top there are two path fields with browse buttons, corresponding directly to the core Python parameters: Generate Config and Export Animation Path. In the middle, I reserved a large QLabel as the Preview area to show the screenshot of the current animation. The Export button is placed alone at the bottom-right to act as the “end point” of the flow. I intentionally kept a lot of empty space so the sequence “choose paths → see preview → click Export” is visually obvious.

On the Import tab, the focus is on comparison and selection. In addition to the two path fields, I added three preview slots: three QLabel widgets for thumbnails and three QLineEdit widgets below them for file names. This creates a small “asset gallery” where the user can quickly compare multiple facial animation clips and decide which ones to import. The preview area sits in the center, with the Import button at the bottom, mirroring the layout logic of the Export tab to reduce learning cost.

78 2.png

PyCharm - Implementation

Scan_Controls

To implement exporting, importing and automatic screenshot capture, I split the logic into four modular scripts, each responsible for a single task and called from a central controller: Scan_Controls, Export_Animation, Screenshot, AnimationManager. The tool is built as a small, pipeline-oriented module set: one script to discover rig controls, one to bake animation, one to capture a visual preview, and one to drive the UI and call everything in order. By keeping each responsibility separated but well-connected through JSON files and clear function interfaces, the system stays easy to maintain, extend to other characters, and integrate into a larger Maya production workflow.

Gather Metahuman facial control name into a list
The later scanning logic does not hard-code any specific node names but relies on these patterns, which makes the script reusable across different characters and naming conventions.

Export_Controls

Pick the Playback Range
Using the current Maya playback range as the export interval. It also checks for end < start to prevent invalid or reversed frame ranges.

Collect All Controller Channel Value
The function initializes a global anim_data dictionary and then steps through the timeline frame by frame. The outer loop iterates over frames, while the inner loop iterates over controllers, matching the idea of “time driving multiple controls”.

PyCharm - Implementation

Screenshot

AnimationManager

Loads the .ui file created in Qt Designer via QUiLoader, utils connects all buttons, line edits, and preview widgets; on the Export tab it calls Scan_Controls and Export_Animation to export data and then Screenshot.render_png to create a thumbnail; on the Import tab it locates the corresponding PNG for the selected animation JSON and updates the three preview slots.

Contact

I'm always looking for new and exciting opportunities. Let's connect.

© 2025 by Yiyi Huang (Freya). Powered and secured by Wix
bottom of page