Triple Helix Wave | Complex Animation Breakdown
Updated: Jan 31
A recreation of Reuben Margolin's Triple Helix Wave kinetic sculpture using procedural modeling and animation techniques in Houdini. Textures created in Substance Painter, rendered in Mantra and composited in Nuke. Water plants are courtesy of Quixel.
The main feature of the sculpture is the flowing hexagonal shape that hangs in the center of the piece, which is the result of combining three sine waves that are generated by rotating helices that each send a single sine wave through the strings, to the pulleys through the triple-tiered matrix in the center that is packed full of bore bearings for the pulleys to glide on, to attachments in each hexagonal block that in the center holds small weights and are tied to set screws.
I spent a good bit of time studying the motion and mechanical pieces of the sculpture to understand how the strings weaved through the sculpture and what made the hexagons move, so that I could get the most realistic animation possible. I was fortunate to find that Margolin had documented his process when creating the sculpture that I reference heavily when setting up the sculpture. There was a lack of crisp reference photos for the parts I would have to model and I solved that by drawing them out in my notebook. By doing that I had clear reference and I could make sure I was modeling pieces that made sense in that they would work together in real life and matched what was on the real sculpture. Below are some of notes from my notebook and drawings of the mechanical pieces.
Link to Margolin’s blog post about the process of creating this piece:
Link to video of sculpture in motion:
The first challenged I faced with this project was that the sculpture was moving based on trigonometry. I wasn't familiar with trigonometry at the beginning, so I prototyped the wave movement just using cubes copied to points and then applying equations to that. I sat down and learned the trigonometry I needed, utilizing resources on the internet and learning from my peers. I learned about sine wave equations and constructive interference.
Instead of starting with the helices and strings, I decided to start with the wave and then from those points build upwards. The animation starts with the wave. I used simple low poly tubes to make the hexagon blocks and then copied those to points in a hexagon configuration so sine waves could easily be sent in later by just applying position data to the points. This was done using VEX in a point wrangle with nested for loops to create half the shape, which was then mirrored to make the whole shape. Using VEX I was also able to get the exact number of blocks Margolin used on his sculpture: 1027. See Fig.1 below.
Fig. 1 – VEX for creating points in hexagonal configuration
Instead of sending in my waves by strings I decided to send in waves from three oscillation points. The strength of the wave is determined by the distance between the oscillation point and the points in the hexagon shape. This also adds the functionally where if you wanted to send in three different sine waves to combine, just change the positions of each of the oscillation points by scaling them in a transform node or adding to the resulting distance from the VEX equation. See Fig. 2 and 3 below.
Fig. 2 – measuring strength using distance between points in VEX
Fig. 3 – sine wave combination in VEX
The concept for using points to send in waves came from an Entagma video on making patterns using constructive interference.
Other moving mechanics are the helices and gear box that rotates the helices. These received the same sine wave expression that matched the movement of the hexagon blocks. I did this by applying the result of the wave that was being sent in to the point to the appropriate rotation axis, converting to an angle from radians and then clamping that result so that the rotation wasn't more than ninety degrees in any direction.
Each helix has disks that have hooks to connect to the strings and those rotate based on the sine wave in addition to being moved forwards and backwards through the rotation driven by the gear box.
The gear box connects through a chain, similar to one on a bike. The chain was modeled using a creep sop, grouping, and copy stamping in a separate geometry node. It was merged into my main geometry node where the sculpture is built, received the appropriate copy and transformation information. I modeled the gears using points used in the creep sop to make sure the pegs line up exactly with the chain.
Link to example used for moving the chain along a curve(Creep SOP):
After the animation I spent a lot of time doing look development, which I really enjoy doing. My concentration is in FX, but lighting is really fun for me. For the lighting, I have 2 environment lights, one sunlight and two area lights for faking sun bounce. It was first time simultaneously lighting an indoor and outdoor scene. I used portal geometry for the inside HDRI, which is linked to light everything except the outdoor building, plants and water. I was originally using the same HDRI for both the inside and outside, but I was getting serious fireflies in my render that no amount of samples was fixing. I tested some other HDRIs and found that any with an EV clipping above 10-12 was going to give the artifacts. Anything below was fine. I clamped my HDRI in COPS, but the result was dull and had less color in the shadows. I found another HDRI that produced the same color as the original one, but was slightly darker. I made up for that in my area lights. I kept the original HDRI for lighting the outside.
I also got to play with the grooming tools for the first time with the grass in the upper right of the image. That was fun to play with.
My render times were pretty high from applying textures (resolution ranges from 256x256 to 2k depending on what its being applied to) and then I had to blast the pixel samples to eliminate aliasing from the strings, so I optimized by limiting diffuse bounce to 1 and then faking secondary light bounces and then using mattes to break the image up into three different renders. In total, for the final pass I had about 600 hours in render time for ten seconds of animation. I rendered out three passes: background, sculpture and strings, so I had some flexibility in post with color correction and grading, and if something was wrong with one, I didn't have to re-render the whole thing.
Overall, this project took about four weeks. Two during school and then two during winter break where I refined and reconfigured a lot of the animation to make it more efficient and apply better techniques I had learned from the class. Upon finishing this project, I had about three months of concentrated study in Houdini. I'm really happy with the result of this project!