Chaotic Oscillators for Generative 3D Art is an interactive artwork that aims to generate three-dimensional non-patterns within a web browser. The user builds their own aesthetic experience by controlling parameters which influence the generation algorithm.
To create generative art using chaotic oscillators, we adapted an implementation of a Chua Circuit, a type of nonperiodic oscillator. A Chua Circuit is the simplest physical system that exhibits mathematically-proven chaotic behavior. Implementing the Chua Circuit involves modeling the electrical response of a nonlinear resistor, which can be done by solving three nonlinear ordinary differential equations (ODEs); we did this using the Runge-Kutta method.
Visually representing the solutions of these equations creates what is known as a chaotic attractor or "double-scroll" pattern. By varying the values of the electrical components in the Chua Circuit, the chaotic attractor is modified.
We represented each point generated by the above method with a billboarded snowflake texture on a black background. The tint of the texture is affected by the age of the point, and by the ambient light.
Periodically, the entire representation is wiped out, beginning with every nth point and continuing linearly. This was done both for computational and aesthetic purposes.
To complement the visual representation of the Chua Ciruit, we added web audio accompaniment. Points generated by the algorithm create their own oscillator nodes, with frequency determined by their position. These nodes begin with a "bleep" or "bloop," then stabilize to a low hum.
Additionally, there is an ongoing frequency modulation oscillator that is affected by the newest point generated by the algorithm. This sound scales linearly with the distance from the newest point to the camera.
The Runge-Kutta method for solving nonlinear ODEs uses five parameters, known as C0, C1, C2, M0, and M1. We have simplified these parameters and given them names that better reflect their effect on the visual experience. The user-viewable parameters are named Chaos, Convergence, Duality, and Stability.
All parameters can be controlled with mouse input using the dat.gui sliders in the top right corner of the screen. The user can zoom in or out using the mouse scroll wheel.
Additionally, we have added support for gestural control using a Leap Motion controller. Swiping horizontally dollies the camera around the origin of the representation. Swiping vertically increases or decreases the Chaos parameter of the chaotic attractor.
The volumes of the "bleep/bloop" (foreground) and frequency modulation (background) audio can be controlled using their respective dat.gui sliders.
dat.guileapjs
three.js
tuna Chua Circuit Simulator
Chua's Circuit
Three Steps to Chaos—Part I: Evolution