Crafting a digital simulation of a bygone 1970s pastime.
Back at the turn of the millennium, when I had more time on my hands, I built a series of digital recreations of retro, analog crafts. By “crafts,” I was not referencing the fine artisanal creation of beautiful goods. No, these were the skills-free crafts of my childhood, purchased in a kit from the local toy store, that allowed me to “make” without technique or aesthetics: spirographs, string art, and, most notoriously, paint by numbers. I never made it to sand art.
I built these simulations as simple, Flash-based web apps, and sent them to friends in lieu of holiday cards. They were meant to be ephemeral, but in making them, I developed geometry and trigonometry skills that came in handy while coding procedural, ambient animation over the next decade.
The ideas behind the project stuck with me as well…. what does it mean to take a craft activity where the only creativity is tactile, and remove any trace of handicraft through digital simulation? Is there any craft left in a work when it’s a procedural, parameterized visualization? And in these childhood activities, was there really any “craft” to begin with?
And so I’ve decided to re-examine the project and rebuild these experiences in more depth, updating them to more advanced technology, and documenting some of the process here.
The first on my list is String Art. In the analog world, this involved hammering finishing nails into a board, then wrapping colorful threads around them to “connect the dots.” Geometric sailboats and owls, set against black velvet, were common subjects. The rhythm of the string wrapping creates fascinating patterns, where the straight lines form arcing Bezier curves as they twist around corners. This combination of simple precise lines and complex organic shapes made String Art a solid candidate for digital adaptation.
Building the Framework
My first task was to build a software engine for visualizing string art geometries. I decided to use Unity3D as a development tool. It’s free, and relatively simple, and it can publish to multiple platforms, including AR and VR.
Breaking down the project a little further, there were two key elements I needed to simulate. The first was the ‘frame’ – a mechanism for managing the virtual nails onto which the string would wrap. I wrote code to procedurally build some basic shapes : line, circle, square, etc., allowing for variation in the size, proportion, and number of connection points. Using Unity’s editing panel, it became easy to change these parameters on-the-fly and test the differences. I added transparent templates to show the overall shape of each frame, and spherical dots to mark each connection point.
The other key element was the virtual string. I built a system where each thread is a distinct object with its own color and thickness, which could connect to points on any of the frames using mathematical weaving patterns. Connecting adjacent points simply traces the frame’s outline; when alternating points at various intervals, complex geometries emerge.
With a circle of 24 points, connecting every eighth point makes a triangle (since 24 divided by eight equals three). Connecting every fifth point, on the other hand, produces a criss-crossed donut shape; connecting every 11th results in a 24-point star. It’s a cool way to visualize simple mathematics, and there’s definitely potential here to incorporate content around factors and prime numbers.
Making Things Complicated
So far, I’ve replicated most of the functionality of my 2000 project. But the engine adds extra flexibility to enable more complex simulations.
For starters, multiple strings can wind around the same frame in different patterns, creating denser and more colorful geometries.
Taking it further, a single string can connect differently shaped frames, winding back and forth between the two.
Having surpassed the physical limitations of analog string art, it only seemed natural to add motion. I wrote a simple script to rotate and oscillate the frames, and added particle effects to give a travelling electron glow to the string patterns. Here’s where things get a bit psychedelic:
As I added more and more functionality, I found that the engine became more complicated and less intuitive. To make the project engaging and accessible, I realized I’d have to design a user interface that could expose the project’s many parameters in an elegant, streamlined way.
Next time I’ll share some of the challenges of designing and building that UI – and perhaps even a live preview of the end results….
1. By Personal Creations – String Art Heart, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=36707975