1. NodeBox 1
    1. Homepage
    2. NodeBox 3Node-based app for generative design and data visualization
    3. NodeBox OpenGLHardware-accelerated cross-platform graphics library
    4. NodeBox 1Generate 2D visuals using Python code (Mac OS X only)
  2. Gallery
  3. Documentation
  4. Forum
  5. Blog

Introduction

It's hard to imagine a 21st century visual culture without computer graphics, think of Photoshop, Flash, the web, games: computer graphics have rapidly and steadily developed to a level at which people can express themselves creatively and share content with amazingly less and less prior expertise. The last decade has also seen the interesting emergence of generative art and computational design.

What is generative art?

Generative art refers to art that has been generated, composed, or constructed in an algorithmic manner through the use of systems defined by computer software algorithms, or similar mathematical or mechanical or randomized autonomous processes. Although the term is not necessarily limited to any kind of programming language of computer system, it has known a considerable rise in use since the development of Processing.

Processing is an open source project initiated in 2001 by Casey Reas and Benjamin Fry, former students of John Maeda at the MIT Media Lab. John Maeda pioneered in computer graphics by bringing animation and interaction to the web - eventually leading to the rise of popular tools such as Macromedia's Flash and Director. Processing uses the Java programming language to create visual output. Processing was the first to standardize the concept of an electronic sketchbook, as a tool to get non-programmers started with programming through the instant gratification of visual feedback.

What is computational design?

Computational design is the discipline of applying computational approaches to design problems. This term is more common in the architectural and scientific fields. It involves the development of algorithms for composition rules, shape arithmetic, symmetry, visual grammar, design methodology, etc. A tool like Processing can be used to create generative art, while the development of the tool itself is a computational design challenge.

 


Advantages to an algorithmic approach

There are many advantages in using code to generate graphics. Most notably:

Workflow automation

Any design process or workflow has a creative side and a production side. We want to focus on the creative side as much as possible. The production side (including tasks such as generating alternatives on a theme, applying style guides across different pages and media, certifying PDF documents for printing, executing corrections based on consumer-feedback) we would often rather leave up to someone else. Algorithms can be a formidable production partner here.

When Just Van Rossum and Erik Van Blokland of LettError developed DrawBot in 2002 they described production advantages in terms of volume, complexity and alternatives:

  • Volume: many assignments call for a volume that is unrealistic to create in a short time. When you have large volumes, automating the process is something that just comes naturally, or out of laziness. The computer can work a lot faster than we can when creating 1 500 pages.
  • Complexity: using templates, style sheets and automated layout engines, we can let the computer do complex layouts for us. By adjusting a single layout algorithm, we adjust the complete layout across pages, without having manually to reorder every element.
  • Alternatives: if we don't have to manually adjust every element to see if a different layout might work too, we can try out many alternatives. This is a form of digital sketching: since the production stage is automated, you can readjust the layout or your concept up to the last minute.

Creative leverage

Traditional graphics software has the advantage of robustness. It has been carefully developed and optimized by experts over the course of many years. It often has the disadvantage of lacking simplicity. User applications that focus on one specific problem (either pixels, vectors, page layout, web pages or animation) force us to think in segments. User interfaces composed of predefined menus, buttons and sliders limit our creativity to what others have preprogrammed for us.

The research on NodeBox initiated in 2005 defines creative advantages in terms of integration, language and recombination:

  • Integration: by relinquishing many user-friendly interfaces and focusing on one programming language we can freely address any of a computer's possibilities. We can combine many different techniques in the same environment.
  • Language: it is easier to express creative ideas and processes with language than with mouse gestures. We can store the language description as a recipe to reuse and manipulate - something we cannot easily do with a mouse gestures.
  • Recombination: once we have enough recipes we can bundle these in a package that solves a design problem (like finding good colors