Objecter
A Step
towards a General Tool for Generative Design
Dipl. Inform. Univ. Guenther Doerner
Genestics
- Germany
e-mail: gd@genestics.de
Dipl. Des. Univ. Oliver Endemann
e-mail: oe@genestics.de
Abstract
This paper
introduces a general approach to be able to use generic procedures for a wide
range of design problems. Therefore we regard a certain product exponent as an
instance of a product class, which contains well-defined degrees of freedom.
The formal model of the product class is developed out of the product analysis
results and is noted in a specific modeling language. For this we define the
geometrical structure and relevant shaping characteristics of the product
including variable parameters, dependencies and constraints. The modularity of
the system permits the encapsulation of individual units, which can be reused
as autonomous components in other models. The software Objecter parses the formal model, assigns concrete values to the
parameters, propagates dependencies and so generates different representatives
of the product class. For the variation of the parameters a choice of automatic
procedures (i.e. Constant, Random, Mutate...) as well as interactive modes are
provided. As a prototype of a design-supporting tool Objecter shows promising potentials in its latest state of
development.
When implementing generative approaches on computers, there is the question for the suitable environment. One can choose one of the specialized tools on the market like Maya, Illustrator, Flash or even Mathematica and use their scripting languages to integrate the generative idea. However, these tools are often very complex and demand intensive study of the whole software package. In many cases they do not offer the required methods for a certain approach.
Another strategy is to use a common, multi-purpose programming language like, Java, C++, Basic or others. But are these algorithmic programming languages ideal for solving construction and design problems in a generative approach? For the average designer, architect or artist the additional job of a software developer is quite strange, likely too technical and a too big effort – all in all: a different world. As a result, we see a variety of different individual implementation approaches, a mixture of used tools, programming environments and frameworks.
From this background we asked ourselves if there could be an environment more oriented to the goal of implementing generative ideas.
It should have the following characteristics:
The software Objecter we introduce here is our first step towards such a common environment for implementing generative ideas.
At the
beginning of the Objecter workflow there
is the idea of an arbitrary product or object. As the result of the process we
want to generate many designs of this product.
We regard
the designs as instances of our product class, they are all representations of
the initial idea. On the one hand, they all show the same common product
characteristics. On the other hand they vary in many aspects to cover the field
of creative freedom.
Fig.
1: Workflow steps in Objecter
To
illustrate the workflow steps we want to introduce the example “SimpleTable”
here. Although a table of course is a 3D-Object, we just generate a 2D side
view here to keep the things simple.
In the “2D
side view scope” we could define for example: “A table is a plate and two
equal-shaped legs, symmetrically placed below.” This describes the common
characteristics of all instances of the product class “table”. As the degrees
of freedom we find the width and height of the plate and the legs, and also the
arrangement of the legs at the bottom of the plate. Aspects of the materials or
the color are not to be regarded here.
In the
analysis phase, we extract the basic characteristics of our product class.
Therefore
we have to answer the following questions:
In our
“SimpleTable” example, we can identify the following components:
The term
“equal-shaped” for the legs implicates that we actually have to define just one
leg and then produce the other leg by cloning.
We can have
at least two different views of logical relationships: either the legs are
arranged at the bottom of the plate or: the plate is located on top of the
legs. Both views will produce similar results here, however it is essential to
have at least one point of view of the logical structure of the object.
The
“SimpleTable” definition leaves out many aspects of our product. We use these
“unanswered questions” to establish variation: These are the degrees of freedom
in our
model
space.
We can find:
In our
example, the distance between the legs is not totally free. The plate and the
legs must stay connected somehow. In addition the elements should not overlap.
From the
knowledge we gain in the analysis phase we are able to create a model of the
product class using Objecter. At the
current development state models are notated in an XML-Language called “Objective”. Later, models could also be
created using a graphical editor.
Modeling
means, creating a class graph for the product class using a set of given nodes.
Fig.
2: Types of node and their symbols.
There are nodes for different purposes. Altogether the set can cover the following demands:
Some parts
of the model are independent from the chosen 2D or 3D workspace, others have to
be defined in a given representation space. For example, a shape in 3D has a
different type of coordinates than a shape in 2D. So the available nodes are
organized in libraries for 2D or 3D modeling. However, many core features are
implemented independently from a representation space.
Fig.
3: Common Architecture for different
modeling spaces
At the
current state of development, the 3D library is not implemented yet. This is
partially justified by the lack of a Java 3D environment on some platforms
(e.g. Mac OS X).
The next figure (Fig. 4) shows
the Class Graph for our example “SimpleTable”.
In the center you can see the three operator nodes “Leg Distance”, “Leg Size” and “Plate Size”.
These are the degrees of freedom in our model we identified during the product
analysis phase. For instance “Plate
Size” has a data flow connection to the “MultiTransform”-node (MT) for the
plate, it is used to scale the plate shape. However the values of “Plate Size”
are not totally free. You can see that there are constraints given by “Leg
Distance” and “Leg Size”: The plate width is never chosen smaller than the leg
distance plus the leg width.
Fig 4:
Class Graph for “SimpleTable”
After
loading the XML-notation to the Objecter
workspace, the parameters “Leg Distance”, “Leg Size” and “Plate Size”
immediately appear on the left side and a first instance of our “SimpleTable”
is drawn in the “Render” area (Fig. 5).
The value fields of the parameters reflect the chosen min/max-intervals and
display the current value in this range.
Fig. 5:
Screenshot of “SimpleTable” loaded to the Objecter
workspace
The user
now has several possibilities to vary one or more parameters:
By dragging
the mouse in the value field of a parameter, the changes of the instance are
applied in real time. This manual variation is a suitable method to explore the
effect of a single parameter.
By clicking
on the button “Random”, a new instance is created with all parameter values
chosen randomly in their definition range.
By clicking
on the button “Create”, the values for the next instance are chosen by using
one of the variation rules specified in each parameter:
Mutate |
The next
value varies from the current one by a small, random offset |
Random |
The next
value is completely random |
Tweed |
The value
slides from the current value to a randomly selected target value, after it
is reached, a new target value is chosen |
Sweep |
The value
oscillates through the complete definition range |
Constant |
The value
does not vary at all and can only be changed manually |
In this
section we briefly introduce some example generators in different fields of application.
Furniture
is a quite good field of application, because the industry and handicraft uses
mainly simply shaped profiles.
The
following example illustrates the range of designs of another more advanced
table generator. All in all, this generator has 21 parameters.
Fig. 6:
A series of instances of a more advanced table / sideboard generator
This
generator uses style definition tables for different wood textures and fill
colors.
Fig. 7:
Instances with style definitions “Cherry-Style” and “Oak-Style”
The drawer
handle bars are the output of a separate generator which is embedded in the
main generator.
Another
furniture example demonstrates a recursive model implementing a “divide and
conquer” algorithm. Beginning with the given outer size, the generator divides
the shelf into smaller areas and finally decides to insert a solid or glass
door element, a compartment or an empty unit.
Fig.
8: Results of a recursive shelf generator
The example
“Watchmaker” is a completely image based generator. It uses a library of
predefined graphics and recombines them on different layers.
Fig.
9: Random “Watchmaker” results.
Lindenmayer-Sytems are a wide spread method
for simulation of natural growing structures. As a proof of feasibility we
created models for many classic L-Systems in Objecter.
Fig.
10: Some L-Systems modeled in Objecter
Using a single quadratic image as a tile, we create 2D-patterns by flipping and rotating in 90° steps. The tile used in the example below has only 4 different orientations due to its inherent symmetry. Generally 8 different orientations are possible.
Fig.
11: Single tile in its 4 possible
orientations
Our pattern
generator combines n x m tiles in variant orientations to
create larger tiles for filling rectangular areas by repeat patterns. Instead
of using images, one could also insert a tile generator into the pattern
generator.
Fig.
12: Tile patterns with different
complexities
75 Parameters distributed over 12 single generator templates (e.g. eye, nose, hair) are producing an uncountable amount of individual characters. In the animation mode you will see them being transformed one into the other.
Fig. 13: A comic face generator creates instances of “Mr. M. U. Tate”
Objecter is a suitable platform to
develop generators for a wide range of objects. It could be a valuable tool for
professionals in the field of design, architecture, engineering and arts. With Objecters ability of animation and
direct user interaction it could also be used for visualizing complex issues
and so applications in the e-learning market could be found.
Due to the modularity of class graphs, models could be exchanged and
libraries for different trades could be built up by a user community. A future
user forum on our web site will initiate this process and give us the desired user
feedback for our development.
At the current state of development we see room for various
improvements:
·
Developing an Objecter class graph is not always
straight-forward and can be tricky in
some cases. More special
operators for common modeling problems will be added
·
A graphical
editor for modeling could replace the current necessity of a formal scripting
language
·
Algorithms for
solving optimization problems are not implemented yet. All expertise has to be
defined by the user
·
The
implementation of the 3D-library will open up new perspectives