An example of a generative primitive-variant pattern inspired by D’Arcy Thompson’s On Growth and Form.
“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 (on the upper left of each set of four) start overlaid on a square grid, and the variant forms are overlaid on transformed grids. The theory asserts that the transformed grids (and thus the variants’ shapes) can be generated with simple mathematical transforms, resulting from the environmental forces that actually manifest the variants in the first place.
The Model
This design model mimicked the transformation thesis but with a slight twist.
While Thompson’s model relied on top-down equations, I modeled something intended to be more analogous to the natural hypothesis, that forces will push upon these forms and change their shapes.
These physical environmental “stresses” I modeled with a point-mass/spring library in Processing, more specifically as force vectors that could warp a prototype lattice delineated by virtual springs, a three-dimensional version of Thompson’s grids. The variants shown were created with two force vectors that defined a simple vector field. The direction and magnitude of the vectors became the parameters of the simulation, 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, this model’s semantics provided two interactive means of manipulating the primitive:
- direct (translating point masses by dragging with a mouse) and
- indirect (virtual “forces” like vector fields, attractors, repellers, springs, and collisions).
The latter could be automated and controlled with code or other tools using the same model.
Project 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 could fit a chosen variant shape to a physical environment by “dropping” it onto a virtual ground. Instead of using a 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 aspirational technique.
The rapid generation of complex-looking shapes is both seductive and inspiring, but more important, generative methods augment spatial design with the benefits of automation. This changes our mindset to editors and curators, taking our efforts outside the manual labor of shape creation, whether with drawing, 3D modeling, or other medium.
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.