Skip to content

An interactive artwork that aims to generate three-dimensional non-patterns within a web browser.

License

Notifications You must be signed in to change notification settings

kangareuben/chaoticOscillators

Repository files navigation

Chaotic Oscillators for Generative 3D Art

By Reuben Brenner-Adams and Stein Astor Fernandez
Advised by Charlie Roberts
Rochester Insititute of Technology
School of Interactive Games and Media
Fall 2016

Abstract

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.

Method

Visuals

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.

Audio

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.

Algorithmic Parameters

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.

Input

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.

Libraries Used

dat.gui
leapjs
three.js
tuna

Other Sources

Chua Circuit Simulator
Chua's Circuit
Three Steps to Chaos—Part I: Evolution

About

An interactive artwork that aims to generate three-dimensional non-patterns within a web browser.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published