"Generative design" encompasses classes of design techniques that automate the process of producing variations of parameterized design propositions, particularly for sculptural and architectural form. As a case study, the project shown here uses Chapter 12 of D'Arcy Thompson's On Growth and Form, which posits a mathematical model describing how environmental forces may affect the grown of organisms.
The primitive fish forms here start overlaid on a baseline grid, and the variant forms are overlaid on derived, warped grids. The theory asserts that the difference between the original and warped grids can be described as simple mathematical transforms, which model the environmental forces that develop the variants.
The design goals of the model were to:
- mimic the transformations from On Growth and Form in a fluid way,
- simulate structural-like behavior, and
- be flexible enough to support multiple project-specific tools for various tasks.
Instead of describing the transformations top-down, I created a simplistic model of physical environmental stresses with a point-mass/spring library in Processing. These "stresses" were modeled as force vectors that could warp a cubical lattice delineated by virtual springs. The simulation runs that generated the variants shown above were created by using two force vectors defined a vector field. The direction and magnitude of the vectors became the parameters, and they could be set randomly or adjusted sequentially to generate differentiated shapes.
The resulting geometries had two distinct characters: either smooth, stretched curves, or fragmented, crushed shards. But more important, the semantics of this model provided two means of manipulating the primitive:
- direct (translating point masses), and
- indirect (various forces like vector fields, attractors, repellers, springs, and collisions).
The latter could be automated and controlled with custom tooling.
These shapes were produced and manipulated using a set of custom tools written with Processing. The first tool instantiated the primitive and ran the simulation to produce a single variant. Adding a level of automation enabled the process to be repeated with different parameters, and the variants could be exported as vector graphics and 3d models. To support multiple means of representation, the vector graphics represented the springs as lines, but the 3d model output also produced thickened prisms for the lattice and planes between the springs to produce a grid of articulated chambers.
Yet another tool fit a chosen shape to a physical environment by "dropping" the variant onto a virtual ground, matching one of the object's sides with it. Instead of using a more generic 3d modeling software to slice or delete portions of the shape, this custom tool played by the rules of the simulation. When the side is fitted to the ground, the springs will readjust the rest of the shape in response, maintaining geometric consistency in the final shape. Using a custom tool also maintains the semantics of the original model; exporting to 3d modeling software would mean adopting a different data format, using a different set of available operations, and potentially dealing with lost information.
An Emerging Trend
The rapid generation of complex-looking shapes is both seductive and inspiring, but more important, generative design signals a trend to augment spatial design with computational thinking. Thus other applications of computation offer something even more practical; for instance, "performative design" uses numeric simulation (and often search algorithms) to optimize the characteristics of buildings, aircraft, and other performance-driven design objects.
But the most compelling ideas relate computation to design thinking. This can enable designers to operate by using models and systems that mimic the semantics of the design problem itself, instead of the language of a software application, thus bringing designer's thoughts and actions much closer to his or her design objects, which will revolutionize how we conceive of, manipulate, and fabricate design objects.