So this is the project that I’m furthest along in, and we’re reaching a point where we’ve got a couple different directions to take the project.

Just as a recap, the idea behind this project is to do a large-scale stage performance, that a dancer can move around on as it undulates. I was inspired by the set design of the Machine from the Met’s production of Wagner’s Ring Cycle and something like MC Escher’s staircase.

Eventually I want about 20-30 hexagons that can be actuated to various heights and used as a set, with projection mapping applied to create the illusion of different projects.

Right now I’m taking sort of three different tacts:

  1. The digital version
  2. A small scale model,
  3. Building a single hexagon

Ben has been helping out a ton with #3, chasing down linear actuators and working on the mechanics of figuring out how this thing would actually work in practice.

I’ve been focused mostly on #1 and 2, splitting my time between figuring out the layout and mocap for the digital version, and correctly casting the miniature so we can start projection mapping for the second version.

The digital version initially gave me some trouble because I couldn’t figure out how to render the hexagonal spiral. Blender works pretty well for direct manipulation, but in order to get a correct, repeatable layout I really want to go with a procedural route. My first attempt was to use Blender’s Python API to do the layout, but I realized I’m not super familiar with how it works and found it pretty cumbersome to use. I next went down the path of looking into Animation Nodes and Sverchok, an alternative node-based mesh Blender plugin. Sverchok proved to be pretty unstable and hard to use so I set about learning how to create the layout in Animation Nodes.

I was able to learn enough about Animation Nodes to create this field of hexagons:

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c478f073-8e7d-42f1-8b07-4ef1f6673fe1/3.png

I think the render looks really pleasing, but ultimately that layout is a hack, it is actually made of two separate groups, offset by .5 to allow tessellation. hat I really want is a spiral moving out from the center, which will allow me to target the heights of individual hexagons. This layout only works on a grid.

I had to look around a ton to find a good hexagon layout algorithm, but I finally found one that could give the x and y coordinates given an input i, doing some fun math around offsets and layers. Ultimately I realized how awful it would be to try and recreate the algorithm using nodes (it uses a lot of modulo and integer division), so I tried to wire up a script node. I found out only after days of banging my head against the wall that script nodes can’t be used inside of an Animation Nodes loop because you can’t nest programs. Urgh.

So I had to figure out how to set the position of the passed-in object directly. Thankfully that was more straightforward and once I figured out the correct notation for creating a Vector3 I was off to the races, and the thing worked perfectly. I wish this piece was more composable but as it stands I’m super happy with the results.

I was able to animate the height of the hexagons given its position in a list, which sets me up great for the future.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/76842c61-76c3-402e-8fcc-9230b1c05702/hex-layout-undulate.mov

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/74c193dd-a423-4857-926c-fef2d953a5a8/hex-single-line.mov

hex-single-line

Next there is the issue of casting the hexagons in miniature.