Jason Fletcher
Motion Designer
PACK ⬕ Chess Sim
- This pack contains 60 VJ loops (52 GB)

I was catching up with Brenna Quirk and Simon Gurvets recently and they shared how they've been experimenting with some chess simulations after learning about the Trapped Knight problem from a Numberphile video. After seeing their various experiments, I thought it would be a fun project to collaborate on. They both agreed and we jumped right in.

So they rendered out the coordinates into a CSV, but how was I going to get the coordinates into Maya in a usable fashion? I lucked out on my first try by reformatting the coordinates slightly and then pasting it directly into a SVG. My first tests looked strange and I eventually realized that the SVG coordinate system has the 0,0 starting point in the top-left corner. So I opened it up in Illustrator and moved the path to be fully on the canvas.

Now I could import the SVG directly into Maya. For the first test I had created the SVG using a line stroke method. And of course that method isn't supported in Maya. So I edited the SVG a bit so that it instead used a polygon shape method. This method worked fine and Maya was able to import the SVG and make a CV curve out of it. From there I did 7 different experiments jamming with the CV curve in various ways.

Along with the Trapped Knight problem, Simon did some experiments with custom chess piece movements and also having two knights moving concurrently on the same infinite chess board. Each knight considers their starting point to be the origin and they each have their own spiral which they use to decide which square to jump to. Although a knight cannot jump to a square that's already been occupied by the other knight. The simulated result was some really beautiful interactions. Check out Simon's Github to explore the Python code that generated did the simulations. Included within the torrent are the SVG's that were used to create all of these scenes. Below are descriptions of the different simulations.

• Knight 1-2: Standard chess knight that moves 1 square in one direction and 2 squares in a different direction.
• Knight 1-2 vs 1-2 Frame0: Two standard chess knights with their own spiral numbering, but a single point on the lattice can't be visited twice. This graph has both knights starting from (0,0).
• Knight 1-2 vs 1-2 Frame2: Two standard chess knights with their own spiral numbering, but a single point on the lattice can't be visited twice. This graph has one knight starting at (0,0) and the other starting at (20,20).
• Knight 11-12: Knight that can move 11 squares in one direction and 12 squares in a different direction.
• Knight 19-24: Knight that can move 19 squares in one direction and 24 squares in a different direction.
• Knight Dragon Curve 1-0: A chess piece that can only move 1 square up, down, left, or right. Unlike a king, it cannot move diagonally. The dragon curve was implemented by creating 4 copies of the dragon curve, all starting at the origin. The spiral number were assigned round-robin style between the 4 curves, but not overwriting the spiral number assigned to a coordinate.

The "Column Trails" was the result of running an MASH simulation on the CV curve and having 500 cubes trace along the curve. Also each cube leaves a short trail behind it, which was a pain since it needed to be cached out. The tall columns were achieved by having all of the cubes connected via a single point and then moving that point far behind the camera. Then I played with various camera paths.

The "Connections" scenes were the result of running a similar but much more intense MASH simulation on the CV curve. So you're looking at 10,000 cubes moving along the curve. Which was very slow to simulate and it took longer to move between each frame rather than the time it took to render the frame. The orange lines are connecting the 2 nearest cubes and the blue-green lines are connecting the 10 nearest cubes.

The "Crystals" scenes was a minimal MASH simulation of cubes tracing along the CV curve. I limited the amount of cubes and then elongated them to be very tall. Then I applied an emerald material shader and setup some various AOV render layers for some options in post. I also animated the rotation of the dome light quickly so as to enhance the sparkly effect for the gem refractions.

The "Boolean Mutate" scenes were the result of wondering if I could interpolate between these two CV curves. So I separated the CV curves by some distance than the other and used the 'loft' command to automatically create polygon walls between the curves. At this point I knew there was some complex beauty happening in there but it was hidden, so I used a Redshift shader to create an animated boolean. Kinda like when you cut an orange in half and can see the middle, except I slowly cutaway more and more of it as time goes on. So what you're seeing in essence is the interpolation from one of your knight coordinates path into a different knight coordinates path. To achieve the animated boolean, there is a texture-grid that defines where the boolean is applied onto the model. So I parented this texture-grid onto the camera so that the animated boolean perfectly matches the forward motion of the camera. I also animated an area light to revolve quickly around the camera and parented this to the camera too. These scenes were ripe for some NestDrop remixes and loved the intense glitchy results that happened.

The "Links" scenes was an exploration to see what kind of algorithmic interaction I could get happening between two curves. So I raised one of the curves to be higher than the other, added both curves into a single MASH simulation, and had the MASH network automatically connect the nearest cubes based on proximity. I had to carefully tune the proximity to be not too close (no links) or not too distant (too many links) and find the sweet spot. Then I created a bunch of render layers, each render layer having a slightly different value for the proximity, so that I had a range to play with in post. I also had to create two poly planes (with a black hole shader) to hide all of the links happening on a single curve, since I was only interested in seeing the links between the two curves. After the renders were completed, since each render layer was a duplicate except for the unique links, I combined different renders together in After Effects with a 'classic difference' blend mode to automatically remove the duplicate links and only be left with the unique links for each render.

The "Boolean Ripple" scenes was an experiment with a Knight Dragon Curve coordinates that Simon had sent me. This was a very similar approach as the "Boolean Mutate" scene, except instead of lofting it into polygons, instead I revolved along a center axis. Kinda like how a lathe machine acts to cut out metal or wood, except I used the coordinates as the input. Then I applied a circular wave deformer and applied the animated boolean.

The "Knots" scene was the result of importing the 'two knights' simulation into Inkscape and experimenting with some of its path effects. I found that the 'interpolate' command would make it look almost like natural rope and then the 'knots' command would give it some depth. Then I took them into After Effects and added a shimmer effect that was achieved by creating some fractal noise, changing the scale to be quite small, animating the evolution attribute, and then using it to luma cutout the SVG. Then a final touch of 'turbulence displace' added on top of everything to give it some subtle motion.

Released May 2021