String Theory

Moments in time are like individual ephemeral images layered on top of each other, ones that we usually process individually. The question arises, what happens when these scenes are amalgamated, blended, mixed, layered, and stacked in such a way as to become indistinguishable from each other? Do new details arise?

This post represents the next series of generative art designs I am creating. The gallery below contains the images produced by this program; the program I created for this project has the same spirit as the previous one, Artificial Artist, albeit with different principles. Whereas Artificial Artist was a foray into the field, String Theory represents a development of my artistic coding skills specifically for this new medium. Here, I have attempted to add behavioral elements and physical interaction to the system of Artificial Artist.

At the core of the program are three elements, Attractors, Emitters, and Agents. As their names suggest, the emitters are constantly discharging point agents, which feel a variable attractive force from the attractors. What is key is that every single attractor exerts a pulling force on every single agent, in fidelity with the gravitational paradigm. The equation I used to structure the behavior of the system is the same equation used to calculate gravitational attraction of macroscopic bodies. This has the effect of making the entire system an accurate representation of 2D reality. The pictures below are themselves the layered sequences of images showing the agents’ motion.

However, the resultant images would be quite lackluster if the attractor and emitter elements weren’t moving. In order to animate the system further, I coded behavioral motion into the attractor and emitter objects. Each respective set moves along a path defined by the Noise function, developed by Ken Perlin in the 1980s for Disney’s Tron (you can read more about it here). The Noise function itself is a structured randomness function, created to model behaviors in nature that superficially appear random, but in fact have too many variables to be purely random motion. The classic example is the movement of a honeybee in a field of wildflowers. The attractors and emitters move along their paths, but once they hit the edge of the window, they are relocated to a random location in the space.

Unfortunately, this program was too resource consuming to create a scaled JavaScript version, but I have included a video below that shows the “live action” version of the agents’ movement. The attractor and emitters are hidden, but you can sometimes glimpse them when they are silhouetted by the agents. The agents’ motion may appear completely random, but as the images in the gallery show, structure can be seen in the paths the agents take.

For each image, I altered an aspect of the program. Some are obvious like the agents’ colors. Others are less apparent, like the number of elements in the system and rate of particle emission.

The video is best seen in full screen. The gallery images can be expanded to full screen.

In addition, this project is on Github , for anyone to view and modify. It can be found here

Leave a Reply