MASH Doodles

Last quarter, I gave a lecture to the Animation Capstone on using MASH to procedurally generate interesting animated geometry setups. In preparation for this, I came up with several neat little sketches pushing MASH in a couple of different directions.

MASH is a motion graphics tools that comes built in to Maya, and functions by duplicating a base geometry at certain points and then manipulating those points with various nodes. It has a somewhat similar flavor to other procedural geometry tools like Blender’s Geometry Nodes, although it’s much more restricted. This makes it harder to construct more complex systems, but also makes it more approachable for people who are new to procedural thinking and artists who need to quickly automate something.

Pine cone

This is the project that I demoed in my lecture. It takes the geometry of a single pine cone scale, wraps them around a central cylinder, and allows them to be opened from bottom to top. I am not a modeler in any way, so I used a very simple scale model. In bulk the results are still pretty good, and the form of the pine cone still reads.

The particular skill that this demo was intended to teach was two different uses of falloff objects, which are objects in the world that control the strength of individual transformations in the MASH network. In this case, there are two offset nodes which transform the scales from their original cylindrical distribution.

The first offset scrunches the scales towards the center, scales them down, and rotates them inward. This is then modulated by a falloff object which lets in affect only the ends and not the center, creating the bulging form of a pine cone.

Unlike the first one, the second offset/falloff pair is not intended to remain stationary in world space. The offset is used to rotate the scales to their open position, and then a falloff object is animated moving up the length of the pine cone. This creates the effect of the pine cone gradually opening.

Among the many benefits of MASH is its flexibility: this setup allows for tweaking the distribution of scales, the overall shape of the pine cone, the shape of the falloff of the scale opening, the degree of opening, and more at any point in production. Furthermore, if this pine cone were used as the basis for another MASH network scattering pine cones across a whole tree, only the base pine cone would have to be modified in order to change all the pine cones in the scene.

Flowers

This was a small sketch of making stylized procedural flowers. I already had done some research into how flowers work in general from when I was working on a plant generator, so I already had some intuition for how flowers are structured. That said, this was not in any way an attempt to achieve something realistic looking or biologically accurate.

This setup has a couple of nifty elements. First I created a single flower, and then used that mesh as the base for a second network scattering the flowers across an area, as described with the pine cone. The green core at the center of the flowers is actually a separate MASH network from the one scattering the petals, which allows it to use different geometry. To keep their locations matched, the green core network is actually connected in the node editor the distribute node of the petal scattering network. Building it in this way highlights one of the major weaknesses of MASH: this setup is totally intuitive in a node based system, but because the default Maya node editor is fairly terrible MASH presents itself as a layer based system. This means that node based shenanigans like this start to break the MASH editor UI, and are completely opaque to anyone who doesn’t already know what’s going on.

I also played with using animated deformers to add additional motion. I used them on both the original geometry, which allowed me to add wiggle in the coordinate space of a single petal, and on the geometry output from MASH, which allowed for world space deformation.


Staircase

This was an attempt to make a simple looking but somewhat tricky Hogwarts-esque unfolding spiral staircase.

This was accomplished with two overlapping offset nodes with animated parameters. These operated on the initial state, which was simply all of the stair steps stacked vertically above each other. The first offset node rotated all stairs by an animated value, such that when the stairs where fully opened it rotated the entire stack around to the rotation of the final staircase. The second offset node counter-rotated by the final rotation amount, with a linear falloff along the height of the stairs. This falloff was animated moving up the staircase as it opened up.

When the animation of the rotation value of the first offset and the position of the second offset were perfectly in sync, the stairs would not be moved once they arrived at the correct location. These values were forced in sync by using a common parameter on the top level controller to drive both their values. This allowed animators to animate the opening of the staircase directly with whatever complex patterns they wanted while the staircase remained coherent.

This was also the first time I had experimented with the spring node, which added a very satisfying natural bounciness to the stairs.

Previous
Previous

Fixing the Render Pipeline: Animation Capstone 4

Next
Next

Boids Boids Boids: Animation Capstone 3