Building a Procedural Animation with MASH in Maya: A Practical Task Guide
A task guide to building a keyframe-free procedural animation with Maya's MASH toolkit: network setup, Distribute and Signal nodes, Arnold rendering, verification checks, and rollback options.
28 Apr 2026, 07:35 UTC

You need a grid of cubes that ripples, scales, and rotates on its own — no keyframes, no expressions scattered across dozens of channels. MASH, Maya's node-based motion graphics toolkit, is built for exactly this. This guide walks through creating a working MASH network, explains what each node actually does, and shows how to verify the result plays and renders correctly.
Version assumption: this guide targets Maya 2022 and later, where MASH ships as a bundled plugin. If you are on an older release, MASH is unavailable or behaves differently — check your version's release notes before following along.
What MASH actually does
MASH works by taking a source object (or several) and distributing copies of it across a point cloud. Each point in that cloud carries attributes — position, rotation, scale, color, ID — and MASH nodes read or modify those attributes. A Distribute node generates the points, a Repro node instances your source geometry onto them, and modifier nodes (Random, Signal, Offset, Color, and so on) animate or vary the attributes procedurally. Because everything is attribute-driven, the animation updates live when you change a parameter, with no keys on the timeline.
Prerequisites
- Maya 2022 or newer, with the MASH plugin loaded. Check Windows → Settings/Preferences → Plug-in Manager and confirm
MASHis loaded (tick Loaded and optionally Auto load). - A scene with one simple mesh to instance — a low-poly cube or sphere is ideal for a first test. Keep the source mesh's transforms frozen (Modify → Freeze Transformations) to avoid double transforms later.
- Arnold available if you want to render the result (MASH integrates with Arnold for instanced rendering).
Procedure: a rippling grid of cubes
1. Create the network from the source mesh
Select your cube, then go to Create → MASH → Create MASH Network. Maya builds three things automatically: a MASH_Waiter (the network hub), a Distribute node, and a Repro node that instances your cube. In the viewport you should immediately see a small grid of cubes. If you see nothing, open the Attribute Editor on the Distribute node and check that Point Count is greater than zero.
2. Shape the distribution
Select the Distribute node. Set Distribution Type to Grid, then raise Grid X and Grid Z to something like 10 × 10, and adjust Distance so the cubes don't overlap. This is your point cloud — 100 points, each holding a cube instance.
3. Add procedural motion with a Signal node
With the MASH network selected, go to the MASH shelf or Create → MASH → Add Signal Node. Signal applies a looping, noise-like wave to position, rotation, and scale. In the Signal node's Attribute Editor:
- Leave Position Y at a modest value like 2.0 so cubes bob vertically.
- Set Animation Speed to 1.0 and press play — the grid should ripple immediately.
- Experiment with Time Scale and Noise Scale to change the wave's frequency and spatial variation.
4. Add variation with a Random node (optional)
Add a Random node the same way and give it a small Scale range (for example 0.5–1.5). Node order matters: MASH evaluates nodes in the order listed in the MASH Editor, so place Random before Signal if you want the ripple applied on top of randomized sizes.
5. Render with Arnold
Assign an Arnold material to the source cube (the instances inherit it). Open Arnold → Render and render a frame mid-animation. MASH instances render as true Arnold instances, which keeps memory low compared to real duplicated geometry.
Expected checks
- Plays without keyframes: scrub or play the timeline. The cubes should animate with zero keys on any channel — confirm the timeline shows no red ticks.
- Point count matches: the Distribute node's point count should equal the number of visible instances. A mismatch usually means a hidden modifier is culling points.
- Render matches viewport: the Arnold render should match the viewport layout. If the render shows only one cube, confirm the Repro node is connected and Arnold is the active renderer.
Performance limits and recovery
Large networks (tens of thousands of points with several modifiers) can slow the viewport, especially on limited GPUs. Practical mitigations: lower the Distribute point count while iterating and raise it only for rendering, or use the MASH Editor to temporarily disable modifier nodes instead of deleting them. If a network becomes unmanageable, deleting the MASH_Waiter node removes the whole network and leaves your original source mesh untouched — that is your clean rollback, since creating the network does not modify the source geometry.
If you need the result as real geometry (for export to another package), use MASH → Utilities → Bake to Geometry (menu wording may vary slightly by version). Be aware this is a one-way conversion: the baked meshes lose their procedural link, so save a copy of the scene with the live network first.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.