Complexity Machine 1
You will find links below to download the first release of the software I've been developing for my thesis project. The name has been changed to Complexity Machine 1 as a symbol of the ongoing nature of the investigation of which it is a part. Though intense efforts have been put into its development, those who download the software should be aware that it is not suitable for general use. There are still many bugs and missing functionality and it will probably crash on you. This however should not stop you from exploring what the software can do.
At this stage Complexity Machine 1 is outputting a wide variety of strange forms:
These forms are intriguing for their strangeness and how they record quirky behavior of the agents interacting in simulated space. My question to those of you who are willing to explore is: how can you imagine this software could be used to create architecture? Consider it a kind of speculative Rorschach test. Perhaps you don't consider it useful at all, or feel it needs some some vital piece of functionality before it's useful. Any and all suggestions, criticism or bug reporting are appreciated.
When you first start the software, you will see two windows: the main window where the simulation takes place and a second window that contains the controls. Dragging the mouse in the main window orbits the scene, which will be familiar to those who have used other 3D software. The control window has notes on other camera manipulations that are also possible. At the top of the control window you will notice a series of buttons that switch between different sets of controls, called tabs. Clicking the controls button will reveal common controls that govern the action of the simulation. Clicking on the play button will start the simulation and clicking it again will pause it. Clicking reset will cause the simulation to revert to its initial starting state. The environment tab controls how the ground plane and sky are rendered. The flock tabs contain parameters that govern the behavior and appearance of each flock, or group of agents, in the simulation. Flocks can be added to the simulation by clicking the add flock button in the controls tab.
As a starting point in your exploration, I've included a couple of preset simulation configurations, which can be used by clicking the preset_1 or preset_2 buttons in the default tab. Try running these simulations and then go to the flock tabs and make some adjustments to see how the behavior of the agents changes.
As you explore the software, be aware that at any point you may capture images, video or 3D files of what is currently displayed in the main window. To do this click the appropriate button in the controls tab. These files will be stored in the folder that contains the software. Please email any images, video or 3D files you generate to me along with your comments.
Thank you in advance to those who offer their feedback about this project.
No real installation is necessary to run the software. Just download the appropriate version corresponding to your operating system, unzip the file and run the cm1 application in the folder. In order to run Complexity Machine 1, your computer must have Java installed (most do these days). In order to capture video, Quicktime must be installed. Please email me with any questions or technical difficulties you encounter.
Processing for Architects
I'm writing the software for my thesis project in Processing, an integrated development environment created by Ben Fry and Casey Reas as a tool for artists and designers to explore software development as a part of their creative work. Processing employs the Java programming language along with code libraries that provide a quick start for creative types to build software that deals with visual effects and interaction.
In architecture, while two dimensional images are useful, being able to produce and manipulate three dimensional data is even more so. Luckily Processing includes the capabilities of OpenGL, industry standard software for visualizing and creating 3D scenes. While most development environments require a fairly deep knowledge of the mechanisms within OpenGL, Processing takes care of these intricacies for the developer. Perhaps even more importantly, there are a growing number of Processing users who contribute code and help to those who are new to the tool.
To get started, you can download Processing for free. As an effort to speed the uninitiated along, I've created a simple example program (called a "sketch" in Processing parlance), that you can use to start exploring. Before we begin you will need a few supplies:
Unzip it and place the "Processing" folder in with the rest of your applications (generally Program Files on Windows and Applications on Mac) and make a note of where you placed it.
- Kristian Damkjer's very helpful OCD Library
Unzip it and place the OCD folder in the libraries folder inside the Processing folder you placed in with your applications. (On Windows, something like c:\Program Files\Processing\libraries\ and on Mac something like /Applications/Processing/libraries/) This library makes moving around the 3D scene much less complicated.
- My 3D Processing Example
Unzip it and place the template3d folder on the desktop or similar location for now.
Start up Processing and select File > Open and locate the template3d folder. Select the template3d.pde file and then the Open button. What you'll be looking at is the Processing user interface with some sample code that I wrote to act as a starting point for 3D sketches.
Press the Run button (the one at the top with the triangle) and the sketch will start up. The sketch generates a series of random boxes, which can be regenerated by pressing the R key.
Try moving around the scene by dragging the mouse around, which orbits the camera around. Holding down the Shift or Alt keys down while dragging will pan or tilt the camera, respectively. Pressing the X key will export a DXF file of the scene to the template3d folder and pressing the I key will export an image of the current view.
The navigation and export functions included in this example are the primary elements that I've identified as crucial for any Processing sketch that will be used in an architectural setting. The random boxes in the example are included as a basic introduction to drawing 3D geometry in Processing. Try changing the maxDimension value at the top of the code to something like 20 to see how a small modification can have a big effect on the output. The Processing site has some good tutorials, should you want to explore more.
I'll be writing about more Processing techniques useful for architectural work in the weeks to come.
I will be using this site over the next few months as a platform to share my progress in developing a software application, tentatively called Weaver. This is my thesis project, the final requirement in the Masters of Architecture program that I'm a part of at the University of Minnesota. In short, the software is an agent-based simulation environment for three dimensional form finding. Since this definition will confound nearly all readers, a more verbose description seems to be in order.
Agent-based simulations are most typically used these days for system optimization. Suppose a company that delivers milk wants to make their delivery routes more efficient - eliminating unnecessary detours, saving time and fuel. The old method involved careful tracking of delivery routes and best guesses for changes that might increase efficiency. In agent-based simulation, however, this work is left to the computer. All of the deliveries that need to be made are input into the computer and agents - in this the drivers in their trucks - are created in the software to fulfill those deliveries. Agents have at their disposal only a few simple rules by which to make decisions: don't make a delivery if one's already been made, make the distance between deliveries as short as possible, avoid the territory of other drivers, etc. When the simulation is run a rather remarkable thing happens. The digital drivers start developing incredibly efficient routes with only a few simple rules to guide them. More times than not the routes created will be more efficient than the those the company came up with using the old methods. Using computer simulation in this manner has proven so effective that companies have been created with simulation consulting as their express purpose. The complex, intricately ordered, and often surprising results of these simulations are products of a phenomena called emergence. It is emergence that is the primary focus of complexity science, a field that's been around for a few decades, but which has experienced tremendous growth in recent years. Complexity scientists study emergent phenomena from crowd behavior, insect communication, patterns in economic markets, and many more.
One of the most interesting characteristics of emergent, also called complex-adaptive, systems from a design perspective is their propensity for created some of the most strikingly beautiful visual effects in nature. The intricate movements of flocks, swarms and herds are all emergent phenomena; as are cellular growth patterns, synchronization in firefly signaling, and the dynamics of a crowded train station. All of these effects are the result, not of any leader or other ordering force, but of each individual in the group following a small set of simple rules. For a brief introduction to emergence, listen to this show from WNYC's Radio Lab or read Steven Johnson's book Emergence.
The software application I'm building (with Processing) is a sort of generic environment for setting up and running the types of simulations that lead to emergent phenomena. It's my hope that the software will act as a platform from which designers, or anyone else, can explore the rich variety of forms that can be produced by complex-adaptive systems. As the project progresses I will post more explanations, key discoveries, visual output from the software, code samples, and thoughts I have along the way. More soon...
LED Screen Simulator
I've uploaded the software I made for the catalyst workshop, mentioned here. The file is a zip archive containing applications for windows, mac and linux, plus the source code. The application is a sort of single-purpose demo that I used for the presentation at the end of the workshop. It creates two LED screens that display a sequence of images, in this case a tv ad for Target and some graphics on the second screen commenting on the company (this data is for demo purposes only). To change the view in the application, use the arrow keys to rotate and the a and z keys to zoom in and out, respectively.
What may prove more useful - to someone - is the source code. The code was developed in Processing, a free and open source development environment geared toward artists and designers. Open the source code (led02.pde) in Processing and you'll find a generic object definition that can be used and extended in your own software.
This software was written as a quick hack for the workshop and is definitely not production quality. There is no warranty, support, etc. for this software. It is intended as a demonstration of a concept that may be useful to others developing similar software. Having said that, feel free to email if you have specific questions about it.
Amy Landesberg workshop concludes
The catalyst workshop was a smashing success with blinkin' lights applied virtually to unassuming curtainwall structures around Minneapolis. My group grafted a double-layer mesh LED screen onto the facade of the Carlson School of Management, here on the U of M campus.
Photo by Evan Hall
Tension cables would run vertically a foot and two feet away from the glass curtain wall. LED cables (think rope lights) would then be secured onto the tension cables.
Rendering by Keith Little
The effect would be a two-layer screen that could display any variety of digital raster graphics. We were envisioning multi-step process of automatic image and data collection by computer, follow by a mediation process in which people could "train" the system to show information of value to them. Ideally the graphics displayed would evolve according to the whims, desires, and politics of those mediating.
Rendering by Evan Hall, Full Flash animation
I made a 3D visualization of the double-screen system in the development environment Processing, which I'll post more about soon.
Amy Landesberg workshop begins
Today is the start of a workshop called "Between Image and Architecture" taught by Amy Landesberg. We'll be working with curtainwalls... selecting a particular building to perform an intervention on. The scenario is that we will be "collaborating" with a conceptual artist to arrive at a proposal. The artists whose concepts we'll be working with: Ann Hamilton, Thomas Demand, Agnes Martin, Mel Chin, Josiah McElheny, Dan Flavin, and Jenny Holzer. More than just form or method, we will be using the works of these artists as conceptual inspiration. Ideas like "haze-making", interactive graphics, color, glass technologies, and more will come into play.
I'll be working with a few others to mutilate the corporate masterpiece that is the Carlson School of Management here on the U of M campus.
The SmartGeometry conference is coming up again, this time in New York on the 31st of Janurary, 2007. The most intriguing part of the conference from my perspective is the workshop that happens over the four days preceding the conference. If it's anything like last year's, which I assume it is, attendees will get a chance to play around with Bentley Systems' beta software GenerativeComponents. GenerativeComonents is an application for modeling in a parametric or associative way. A designer using the software develops a set of components and defines relationships between them, such that a change in one part of a design alters the rest accordingly. This means that one could set up a sun shade component that would change its angle when the building orientation changed, or panels that form the skin of a building could rotate or morph to meet a changing structural system. Essentially the application creates models that are themselves software applications, responding to changes in variables like dimension, orientation and material, until a satisfactory result emerges. Components can be modeled to exact physical dimensions to ease the transition to construction documentation. The software pushes the boundaries of what the industry calls "building information modeling" or "parametric modeling". This paradigm recognizes the fact that a building can be thought of as a database of inter-related parts. GenerativeComonents extends this paradigm by imbuing those parts with behaviors, allowing the design to self-organize based on conceptual rules.
I'd really like to try it out. The rub, as with most workshops like this, is cost. It runs $1500, not including room, board and airfare. How much do kidneys sell for on eBay these days? They are offering a few scholarships, so there is hope for those poor students wishing to attend and try out one of the prototypical digital playgrounds of the future.
Area Student Still Lost in Rapson Hall
Why is it that, after wandering around this building for over 5 years, I can still get lost?
(south, west, north, and east basement corridors in Rapson Hall)
As you can see, the basement of the old part of the building is truly problematic. It's got a perfectly symmetrical plan. The same enameled block on all the walls. There's almost no indication of location here. I've even gone around one full circle before finding the classroom I need. Truly a dumbfounding experience.
On Choosing the Right Graduate Program
You know you've found the right graduate program when the material requirements for your first assignment closely match those of a student aged 5.
Subtle Technologies Conference
Speaking of Canada, there's an annual conference in Toronto, coming up this June 1-4, entitled Subtle Technologies. The conference attempts to blur the boundaries between art and science, with a focus this year on responsive environments, especially in terms of sound. It sounds like a great conference, it will be interesting to see who the presenters will be.
Canadian Design Research Network
Why don't we have one of these? The Canadians just started a national consirtium that will do all kinds of interesting research in urban design, visualization, software and lots more. The point being to connect academics with industry and invigorate the Canadian design economy. If they actually do even a portion of what they're setting out to do, I might have to move north.
Google Buys SketchUp
Big news in the 3D software arena: Google has purchased @Last Software, makers of the incredibly popular 3D design software SkethUp. @Last says that the acquisition won't affect how the company produces its software or deals with its customers, but that the deal will be a huge help in expanding the market for SketchUp.
Think about it this way: we haven't traded in the Honda for a Porsche; we've strapped a rocket to the Honda. SketchUp is still SketchUp, but now it will go places it couldn't possibly have gone before.
from SketchUpdate 03.14.06
@Last has answers to many questions about the sale on their website.
Visualizing Flight Patterns
In the processing exhibition currently is a piece by Aaron Koblin called Flight Patterns. Koblin took FAA flight data and mapped it in several different ways to create some really amazing visuals. Be sure to check out the videos.
Info-elevators by Ben Rubin
We Make Money Not Art, a great blog reporting on the world of media arts, has a post about the elevators in the new Caesar Pelli designed Minneapolis Public Library. Designed by Ben Rubin, in collaboration with David Small, the elevators (two of them) will be fitted with LED screens that display the titles of items recently checked out.
WMMNA Post (Be sure to check out the link to the animation.)
For more library info-art, check out George Legrady's Making the Invisible Visible, a series of LCD screens for the Seattle Public Library that display analysis of the data stream from the library's circulation servers.
It's of course a big perk to have fancy graphics in a fancy new building, but there's something at least a little deeper going on in projects like this. Info displays like Rubin's and Legrady's add another layer to the architecture of these libraries by exposing the otherwise hidden structure and flow of data that represents the library's role in a more immediate and intimate way. These installations tell the story of the exchange of information between public and public institution far more easily and directly than the physical structure of the library building could express. The glass and steel and brick still needs to be there to offer (increasingly rare) public space and keep those books dry, but revealing the previously obscured sub-structure of circulation data lets people in on the real workings and purpose of their library. Maybe by doing that libraries can convince us that they are a still necessary and vital part of our culture and environment.
Processing + Architecture
On the Processing site one of the featured pieces is "Parametric Difference" by John Houck, with Morphosis architects. The software he created takes two 3d models and finds the differences between them and by doing that, creates brand new forms.
If you're interested in creating software to facilitate your creative work, you should check out processing. Processing, in geek-speak, is an IDE (integrated development environment), a program that you can use to make other programs. Processing was created by Ben Fry (Aesthetics + Computation Program at MIT) and Casey Reas (Design | Media Arts program at UCLA). It's used by designers and artists to produce software for net art, installations, performances, analysis, games and all kinds of other stuff. It's built on top of the Java programming language, but it uses its own set of vocabulary, so the learning curve is much shorter.
Here's what I want to do: (add it to the list buddy...)
I want to create a repository for code related to design. Actual if-then-else type stuff that other interested folks can download and modify. The code would fall into several categories:
- Iteration/form finding
Algorithms that can iterate through a massive number of formal permutations which can be evaluated and fed back for further exploration.
Finding the optimal configuration based on specified criteria (accessibility, size, cost, etc.)
Finding new qualities of existing designs.
Tools to allow designers to fluidly cooperate in a design process.
- Tons more, I'm sure...
The idea here isn't that we create enough code and then the computer does all the design for us. It's more a matter of not reinventing the wheel all the time (as designers are wont to do,) but sharing the knowledge that's already been created and using that as a base to work from. This means faster progress and more interesting (and hopefully more useful) tools. It would be like a SourceForge for designers.