Procedural Animation: Kinetic Sculpture

Final Result



Render Time: 10 mins | Resolution: 1280x720 | Pixel Samples: 3x3 | Min/Max Rays: 1/5 | # of lights: 2 spot, 1 Environment


My node network for the assembly and expression animation of my kinetic sculpture is on the right and below is the node network for the model of the frame of the kinetic sculpture.


Expression Animation

On the right is a side view breakdown of the animation. The Cylinder rotates around the Cylinder pivot point causing an up and down motion.

Movement Breakdown

Movement Breakdown

I then created an add node with 3 points. Point 1 is where the pivot point of the grey bar is and Point 2 is the location where the line is tangent to the circle. Which is calculated within a wrangle node seen to the right. Then with the calculated angle  and position of Point 2 I inverse the height of Point3 for the other end of the bar. Then I applied the rotation that was calculated to the grey bar. More on how this is done can be found on Professor Deborah Fowler's website.

Find the location of the tagent point.

Find the location of the tagent point.

Lastly I need to setup of the cross shaped. Here I also used a wrangle node to calculate multiple angles using Pythagorean theorem and dot product. More on how this works can also be seen on Professor Deborah Fowler's website.



My project was based on Jennifer Townley's work Bussola.

Complex Scene: Perimeter Defence on Enceladus

Final Result



Render Time: 10 mins | Resolution: 1280x720 | Pixel Samples: 6x6 | Min/Max Rays: 1/9 | # of lights: 2


I based my concept heavily on various works of art painted by John Harris. He does a very good job of communicating scale in his paintings and that was something that I wanted to try to take on for myself.

The two main elements I used within my project were Height Fields and the Copy Stamp node. I first started by creating the terrain preset of Dunes. It starts with multiple height field patterns set to ramp and has the ramp remapping adjusted to look similar to a sand dune.


I then edited the initial settings of the preset dune to get to a look that was more like I wanted. Then I added my own height field pattern ramp to add a ridge that cross the image and merged it together through height field layer. I used the ridge for the basis of the placement of the towers.  I created the mountains in the background by creating two different height field patterns and combined them with the height field layer using difference. I then added more detail and positioned them into that place I wanted and merged it into the larger height field. Finally I finished it off with the erode node to get the final result.

This is the entirety of my Height Field Network.

This is the entirety of my Height Field Network.

Additionally I created a cop network to adjust the masks and layers created by the erode node to get the textures used in the final render.

Additionally I created a cop network to adjust the masks and layers created by the erode node to get the textures used in the final render.

Tower Copies Network

Tower Copies Network

I modeled three different tower like structures based on some of the original paintings by John Harris. Then I exported the final geometry and brought them into Substance Painter texture paint them. Once I had the final objects I created a curve that matched the ramp/ridge that I added to the height field. I re-sampled the curve to the desired number of points and then projected the curve on to the surface of the height field using a ray. Once I had that I used the projected curve to determine the location of the towers.

I also used the Copy Stamp to stamp a random rotation of roughly 40 degrees to make each towers not be perfectly placed along the lines. I also setup two separate copy stamps so that I could use the same curve but have them be spaced out based on a set parameter skipping every so many determined by said parameter.

Additionally I painted a small mask around some of the large towers on the height field and then scattered points on to it to create more smaller towers to help to add to the overall scale.

The scene is render with Houdini’s environment light, and Mantra Physically Based Renderer.


Reference Images: Paintings by John Harris


Match to Live: Breakdown

Final Result

Object Modeling

I took a photo of the mug that I planned to use in the shot with with a high focal length of 165mm to have the least perspective possible. Then I brought the image into Maya and used it to to create a curve of the profile of the mug. I then revolved the curve to get the whole shape. Then I edited the surface to get a slightly more accurate shape and converted it to polygons. 



I initially took these 5 image sets but ran into problems with multiples of them not really having any color bounce on the ground surface. Additionally the mug wasn't large enough in frame. Because of this I took new photos and focused on color bounce.


Left was my final choice in image as it was large in screen and had an obvious color bounce of red in the mugs shadow. In addition to the clean plate there are 4 other images below that are used to help setup the camera and lighting.


Camera Setup


I first set the focal length of the camera to the same as what I used to take the original picture. If you forget you can easily check by looking at properties of the image and then details. Then I used the Cube in order to find the right perspective and position of the camera in Maya.

Lighting Setup

After getting the camera setup you need to get the basics of the lighting setup. First thing I did was create a spotlight and use the cube and sphere (both matched to our pictures above) to create our key light. The cube and sphere are used to match the shadows in the picture to the shadows cast by your spot light.


Then I cropped the image with the chrome ball to the edges of our sphere. Then we can use this image as our dome light to work as a fill light for the scene. This pics up the general lighting of the environment as well as will help in the reflections of the object.

In order to set that up you need to create a sphere and then assign it a surface shader. In the Out Color of the surface shader we assign the cropped chrome ball. You then want to position the center of the stretched side of the texture in the middle of your camera.

Additionally, we want to use the original image as our ground plan in order to get the correct color and reflections onto the object.

We will want to create a new surface shader. In Out Color we want to right click file and choose to create as projection. then in the projection attributes change Proj Type to Perspective. Now under Camera Projection Attributes change the following. Link to Camera: Your Render Cam, Fit Type: Match Camera Resolution, Fit Fill: Fill.

Object Setup


Now that we have the lighiting and camera setup it should be easy to setup our object. I brought in my mug I modeled in the beginning and matched it into the position of the original and the twin mug that we are compositing in. The original mug will be used to make a mask layer later.

Render Passes

I used 7 different render layers. They are as follows: Beauty, Shadow Mask, Occlusion, Beauty Shadow, Original Mug Mask, Original Mug Reflection, Original Mug Reflection Mask.



This is just your mug as it is affected by all the light sources as well as the original mug.

Objects in layer: Original Mug, Twin Mug, Ground, Dome, Key Light

Primary Visibility On: Twin Mug

Primary Visibility Off: Ground, Dome, Original Mug


Shadow Mask

For this layer we are creating the shadow mask. We want to create a aiShadowMatte for the ground.

Objects in layer: Twin Mug, Ground, Key Light

Primary Visibility On: Ground

Primary Visibility Off: Twin Mug

Beauty Shadow

This shadow is used to get some of the reelected color of the Twin mug into the shadow. Create a duplicate ground plane and set it to the color of the original ground surface.

Objects in layer: Dome, Ground Duplicate, Twin Mug, Key Light

Primary Visibility On: Ground Duplicate, Key Light

Primary Visibility Off: Twin Mug, Dome

Ambient Occlusion

We need to set the ground to an aiAmbientOcclusion material. In that material you need to adjust your spread and falloff as needed for your image. Also make the black color white and white color black as we are using this as a mask in the composite.

Objects in layer: Ground, Twin Mug

Primary Visibility On: Ground

Primary Visibility Off: Twin Mug


Original Mask

For this layer we want the original mug with a white surface shader so we can use this as a mask over the other layer.

Objects in layer: Original Mug

Primary Visibility On: Origianl Mug

Original Reflection

We need to assign the original mug to a new shader and set the IOR to 50 to create a mirror shader in order to get a reflection of the twin mug on the original mug.

Objects in layer: Ground, Twin Mug, Original Mug, Dome, Key Light

Primary Visibility On: Original Mug, Key light

Primary Visibility Off: Twin Mug, Ground, Dome,

Original Reflection Mask

We need to assign the twin mug a surface shader and set it to the color of the mug and set the original mug to the mirror shader again. this will show exclusivly where the twin mug shows up in the original mug.

Objects in layer: Original Mug, Twin Mug

Primary Visibility On: Original Mug

Primary Visibility Off: Twin Mug


Now we have all of our render layers now we need to composite them all together to create the final image. Below is my composite tree I created in Nuke.

Final Result - Video