When starting the animation I went back to my storyboard and planned out how long I wanted each sequence to be, using a timer on my phone and visualising the scene in my head. I then wrote the rough timings down and tested them in Maya, tweaking values as I went along to get the result I wanted.


Below are the rough timings I used while planning and rendering, in seconds (by dividing the frame total by 24fps) and frames:

Approximately 2:37 minutes long

Our Side

Real world – Frames 0-960 – (40 seconds long)

5 Second fade in

15 Seconds to look around 

5 Seconds for bottle to roll over to the seat (ends on 600)

2 Seconds lifting up

3 Seconds drinking

8 Seconds world going blurry/sky changing colour

2 Second fade out

The Other Side 

Tiles – Frames 960-1440 (20 Seconds)

2 Seconds fade in

7 Seconds to look around

10 Seconds Tiles raising

1 Second Tiles slamming down (ends on 1440)

Vines – Frames – 1440-1920 (20 Seconds)

3 Seconds Pause before vines start growing (ends on 1512)

13 Seconds growing

4 Seconds pause

Light Frames 1920-2160 (10 Seconds)

9 Seconds Bright light appears and moves to the Rubik’s cube

1 Seconds Pause

Rubik’s Cube 2160-2904 (31 Seconds)

(31 Seconds long) Rubik’s cube scene (Starts 2160, Ends 2904)

Teapot Teleporting 2904 – 3180 (11.5 seconds)

Light flash (2916-2928)

Gate light (2964-2975)

WallLightSet1 (2976-3026)

WallLightSet2 (3026-3072)

WallLightSet3 (3072-3116)

GateLight (3118-3150)

Reaches Viewer (3150)

Teapot growing 3150-3420 (11.25)

Hat starts to grow (3150- 3372)

Reaches full size (3372)

Slams down (3420)

Keyframe animation

Using the timings above I calculated exactly which frames to keyframe movement/animation on, sometimes going into the dope sheet to move/adjust keyframes or into the graph editor to change the type of interpolation Maya used.


MASH is a dynamic tool within Maya that allows you to use networks of objects to create various animations and simulations, with various sub modifiers to change how the network looks and behaves. 

Using this powerful tool I was able to easily animate the tile floor in the ‘other side’ part of the animation as well as the swirling rainbow in the ‘real world’ section.


To animate the gate I separated it into two parts, left and right, then on each of them set its rotational axis to the outer pole and simply keyframed the rotation.

Spinning colour ring

To create the colour ring I followed a video by Waters (2016) which showed multiple ways to create dashboard UI effects. I wanted a kind of trippy wavy motion to appear in the sky so took one of his examples and adapted it for my use.

First I took a cube and an enclosed circle, smoothed the cube once and added a MASH network curve node which applied the cube along the circle’s path and animated it spinning around it (Figure 1). I then applied a signal node which scatters the cube’s position which is randomly animated as it follows the curve (Figure 2). The signal node also creates connections between them which can be adapted into tubes by using another small circle as its cross section.

With the motion animation I applied the gradient texture to the tubes, giving it a rainbow look (Figure 3) as well as a colour node for the cubes to give them randomised colours.

At first the colour of cubes in the spinning ring weren’t rendering in Arnold (Figure 3) so I looked around and had to follow this video by Uhr (2018) to get the MASH colour node working in the Arnold render view (Figure 4). Below is what the animation looks like in the Maya viewport (figure 5).

Tile smash

To make the section where all of the tiles rise up one by one and smash down into the ground, I made a large falloff object that covered the whole tile surface and made an offset node that made the tiles rise when touched by the falloff. I then keyframed the falloff object to move slowly into the center of the garden and suddenly fall below it to create the tile smash effect (figure 6).

Cube Tiles

First, I created four individual tiles each with a different card suit symbol on them and arranged them in a 2 by 2 grid. 

To cover the whole floor in tiles I then created a MASH network for each of the tiles, first distributing them along the X axis making 14 extra copies, then replicating those copies another 14 times towards the other side of the ground. I then did this with each of the tiles, effectively creating a total grid, 30 by 30 tiles wide.

Creating an offset modifier then raises each of the tiles into the air all at once. However, if you use a falloff object, all of the tiles go back down and you can make it so when the falloff object touches a tile it applies the offset and raises back into the air. With this effect I parented the falloff object to the floating cube, so whenever it floats above the tiles, they rise up to meet the cube.

One issue I had when making this effect was that when the tiles touched the falloff object, a set of 4 tiles would rise at once instead of each individually. Through some testing I realised that due to using the same falloff object, they would only rise when it touched the spade tile, causing 4 to rise at the same time (figure 7). 

Duplicating the falloff object to create four and then assigning them individually fixed this, creating a much smoother look to the tiles rising (Figure 8).

If the option to use MASH wasn’t there, you would either have to animate each individual tile or write code to animate it for you. Keying the falloff object means you can animate any number of objects with a few clicks.

Rubik’s cube

To animate the Rubik’s cube I created an empty object, giving it a cube wireframe, scaling it up so that it went along the outer edges of the Rubik’s cube and parented all of the individual tiles to the empty object. This way I can move the cube as a whole and rotate the faces individually from each other (Figure 8).

To animate the faces of the cube rotating, I set all of the individual cube’s origin to the very center of the Rubik’s cube, that way they can be animated as a whole face and without having to worry about position. To have the cube make it look like its solving itself I instead animated it backwards, starting in a solved position then un-solving. I then animated the parent object moving over the tiles around the camera.

While animating the faces I came upon an issue with gimbal locking, where when rotating individual cubes that had already been rotated, they would flip around/detach instead of turning smoothly. I managed to partially fix this by applying a Euler filter to the animation keys within the graph editor which sort of averaged out the x, y and z rotations.


To create the vines I used the EP curve tool to create a long line on one side of the wall, along with a few smaller curves.

With the main curve created I took a NURBs circle and used it to extrude the curve, creating a long tube of geometry. 

In the curve settings I reduced the scale so that the tube tapered off towards the end, getting smaller the further along it was. Along with the scale you could keyframe the min and max length of the curve, meaning that you could animate the max length over timing, causing it to look like it’s growing along the curve. Scrubbing through the timeline I used the same min max method as before to animate the branching vines to grow at the same time as the big one.

With the main vine created I used the duplicate special tool to create a mirrored vine for the other side of the garden, ticking ‘duplicate input graph’ so that it was also animated.

As the tube didn’t have a cap on either end of the curve I added a small sphere, turned it into a mesh light and attached it to the curve using a motion path constraint. With the constraint I animated it to follow at the same time as the vine growing, making sure to set the motion path distance value to be parametric length as without it, it didn’t follow the vine at the same time.

Once the vine was fully modelled I applied the gradient texture to find that when it was animated it created a trippy warped texture which actually ended up creating an interesting effect. To keep this effect I set the max value to .95 instead of 1 (Figure 9) as when the vine was fully extended the texture looked normal.


Uhr (2018) Maya: Arnold rendering MASH color [Video]. Available online: [Accessed 02/05/2021]

Waters I. (2016) Maya 2016 ext 2 tutorial – creating a futuristic HUD with MASH [Video]. Available online: [Accessed 02/05/2021]

Leave a Reply