Beneath the Mask - Character FX Pipeline

Beneath the Mask - Character FX Pipeline

Autodesk Maya

Autodesk Maya

Houdini FX

Marvelous Designer

La Salle URL Animation & VFX Degree Final Project

La Salle URL Animation & VFX Degree Final Project

Overview

Beneath the Mask is a one-minute cinematic teaser produced by a 9-person animation team at La Salle University. Set in medieval Tibet, the story follows two nomadic brothers on the day a ritual ceremony goes wrong, and their journey through the mountains to recover a lost soul before it becomes enslaved by the demon Gyalpo Mutuk.

I led the full cloth and grooming simulation pipeline for all three main characters: Kyo, Paku, and Gyalpo Mutuk. My responsibilities covered the entire CFX workflow, from costume design in Marvelous Designer and detailing in ZBrush, through retopology, UV layout, Houdini simulation setup, and final shot delivery.

Costume construction

Each character's wardrobe was built pattern-first in Marvelous Designer, working from the concept art team's designs and adapting them where simulation or silhouette required it. Gyalpo's poncho and Kyo's outer jacket were additions I proposed based on Tibetan references to give the characters more cloth volume and secondary motion opportunities.

After Marvelous, garments were brought into ZBrush for surface detailing and groom previsualization. Retopology was done with simulation in mind: interior faces were grouped separately so they could be selected and removed by UV group directly in Houdini without manual cleanup. Seam positions from the pattern were preserved in the UV layout, which served two purposes — natural-looking stitching for the texture team, and clean per-piece selection for painting Vellum attribute masks.

UVs were laid out manually in ZBrush at 8K resolution across 6 UDIMs per character to hold close-up detail. For Kyo's boots, a second wrinkled version was modeled as a blend shape target, giving the rigging team direct control over leather deformation during movement.

Simulation Approach in Houdini

The simulation pipeline was built around a consistent structure across all characters. Each shot network started with an initial point deform pass — copying the character's animated motion onto the cloth geometry before any Vellum processing. This gave the solver a physically plausible starting state, significantly reducing solve times and preventing common cold-start instabilities.

Cloth geometry was prepared in three steps: blast interior faces by UV group, paint attribute masks before remesh so constraints inherit them regardless of later topology changes, then apply remesh at the target triangle density. Lower density produces stiffer, less detailed cloth; higher density produces more organic drape but increases solve time.

Each garment piece received its own Vellum Cloth node with independent stiffness and damping properties, then all pieces were merged and solved simultaneously so inter-layer collisions were handled correctly. Collision passes were increased for characters with multiple overlapping layers. Simulations were cached via Vellum I/O by version, allowing rollback without re-simulating. Final motion transfer back to the high-resolution UV mesh was done through per-piece point deforms to maintain individual control. Intersection correction was handled in Maya using per-layer color shaders to identify penetrations frame by frame.

Characters

Kyo

Kyo's wardrobe has four layers: inner shirt, tunic, jacket, and belt. The inner shirt was excluded from simulation and used as a secondary collider alongside the body mesh, keeping it close to skin without solver overhead. The tunic and jacket were simulated simultaneously with per-piece constraints, using painted attach masks at the cuffs and collar to prevent the sleeves from collapsing during fast arm movements.

The belt was handled in two stages. The base strap was attached to the jacket via point deform after simulation, following the cloth motion without independent solving. The hanging cords were then simulated separately in a lightweight Vellum pass with a single attach constraint at the knot point, using the fully simulated jacket as collider.

Six attribute maps were painted for Kyo's simulation: jacket_stitch_src, jacket_belt, tunica_attach_src, tunica_stitch_src, tunica_belt, and pants_attach_src. Stitch constraints between the tunic panels resolved an open seam that was causing the geometry to separate during the solve.

Paku

Paku's main technical challenge was the braided rope belt with hanging ornaments. The rope mesh topology was too dense and irregular for a standard remesh, making it unusable as a direct Vellum input.

The solution: convert each rope section into a low-resolution VDB volume, then back to geometry. This produced clean cylindrical proxies that could be remeshed and simulated reliably. After simulation, motion was transferred from the proxy mesh back to the original high-resolution rope geometry via point deform, preserving all the surface detail without it ever entering the solver.

The rope was divided into three independent sections simulated separately, then composited with the main cloth cache. Ornament pendants were included in the same pass. The base belt followed the same two-stage approach as Kyo's, attached via point deform after the jacket simulation was complete.

Gyalpo Mutuk

Gyalpo's animations were deliberately exaggerated — fast, abrupt movements designed to read as monstrous. Vellum could not process the frame-to-frame displacement: the wide bell sleeves were twisting on themselves at the peak of arm raises, and no combination of substeps and collision passes resolved it cleanly.

The solution was temporal: I expanded the 293-frame animation to 750 frames using multiple retime nodes fused with a sequence blend, applying variable speed curve to the most violent sections. The simulation ran on the expanded timeline where motion was smooth enough for the solver to track, then a reverse retime network compressed the result back to 293 frames for delivery. The sleeves held their shape throughout.

The bell skirt required a Vellum struts constraint to prevent the flared silhouette from collapsing under gravity during the slower sections. Hat ornaments used the VDB proxy method developed for Paku's ropes. The poncho and scarf were handled with point deform only — the screen time was short and the result was clean enough to not justify a full simulation pass.

Grooming

Grooming covered character hair and fabric surface detail. Hair was built in Maya's xGen through iterative sessions with the CFX supervisor, tuning clump and noise parameters until each character's hair read correctly for their context — Kyo's long knotted hair, Paku's unevenly blade-cut short hair, each requiring a different density and curl strategy.

Fabric groom was applied to Kyo's jacket lapels, sleeve cuffs, and boot tops to represent Yak hide. These descriptions served two functions: secondary motion on the fur elements, and improved rim light definition on the cloth surface in final renders. The groom was connected to the simulated cloth cache using blend shapes on the scalp geometry, allowing the hair to follow the cloth animation without re-simulation.

Results