PROJECT MONOCEROS
Subdigital 2021
EDITORIAL
In the summer of 2020, a group of authors Ján Pernecký, Tomáš Tholt, Ján Tóth, Michaela Krpalová, Kristýna Uhrová, Hugo Fekar, Alexander Kupko, Eva Kvaššayová, Miriam Löscher and Ľuba Ondrejkovičová prepared a research project, the result of which is a proposal to adapt the mathematical method / algorithm Wave Function Collapse for architectural design purposes. In our studio we embrace the power of computation to create architecture, design, and art. We are experts in software designed for parametric design and architecture design. We create algorithms and software solu‐ tions for complex design or architec‐ tural tasks. Algorithms are our tools, which we use to come up with unique concepts and utilize the current manufacturing technologies to their limits. The subject of Subdigital Summer School 2020 was current and near-fu‐ ture big topic in computational design, prefabrication and discrete design. The early objectives were to identify the present state of the discrete design scene, as well as to learn and channel the mindset the principles of wave function algorithm while develo‐ ping a comprehensive software tool that would support such design processes.
3
CONTENT
00 THEORETICAL INTRODUCTION introduction to iterative and growth methods Inspiration from the game industry Applications in design industry Examples with numbers and tiles
01 MONOCEROS PLUGIN Meet Monoceros Wave Function Collapse Development notes Architecture of Monoceros Grasshopper plug-in Data types Monoceros WFC Solver Components Examples FAQ
02 RESEARCH Abstract Contemporary tendencies in architecture Methods Experiments with subsets of the essential modules Results Conclusions
03 APPLICATIONS Neons Pipes Lalalamp Playground Housing Hyperloop desert campus Hydrogen island WFCity
04 PROTOTYPES Material morphologies
05 WORKSHOPS AND EVENTS About People Process Reviews Summary
5
00 THEORETICAL INTRODUCTION 7
INTRODUCTION TO ITERATIVE AND GROWTH METHODS In recent years, computational design has become the main methodological discipline of most of the world's leading schools of architecture. The key topic of this discipline is currently discrete aggregation a method in which the assembly of a small number of distinct / unique elements creates a closed, inter‐ connected aggregate / system. Discrete aggregates are characterized by an organized arrangement of elements with the possibility of detailed analysis during the design process. We developed the WFC algorithm as a full-fledged software - in the form of a free (opensource?), publicly acces‐ sible "plugin" for Rhinoceros / Gras‐ shopper, which is the standard, widespread design software with a great range of use from parametric architecture, product design to computational art. Our plugin is created with an emphasis on computational perfor‐ mance, stability and ergonomics of use close to designers and architects.
9
INSPIRATION FROM THE GAME INDUSTRY Description of the algorithm
The Wave Function Collapse (WFC) is
In its simplest form the algorithm
other on the grid. Every slot contains a
an procedural generation [0] algo‐
works on a regular grid. We initially
list of modules (e.g. images or
rithm from the constraint satisfaction
have [Figure 1]:
geometry) that may reside in it. The
problem (CSP) [1] family. Its name is
- A world defined by a mathematical
algorithm is defined as follows:
inspired by quantum mechanics, but
graph [4], in our implementation
1) Initialize the world to a state where
the similarity is just at the surface
represented as a regular orthogonal
every slot contains every possible
level - WFC is completely determini‐
3D grid.
module.
- A set of adjacency rules describing
2) Repeat following steps until each
what can occupy each tile on the grid
slot contains exactly one module (a
given its neighbors.
valid result), or some slot contains
stic.
Origins of Wave Function Collapse can be traced to the demo-scene and
zero modules (a contradiction):
game developer community where it is
The grid tiles are graph nodes, also
applied to lay out virtual worlds. First
called slots in WFC. Graph edges are
of slots with the smallest-but-still-
description of WFC is attributed to
implicitly derived from slot neighbor‐
greater-than-one module count.
Maxim Gumin (@ExUtumno) [2], who
hood: two slots are connected by an
initially used it to generate procedural
edge, if they are adjacent to each
images based on small samples. It
a) Pick a slot at random from the set
b) Randomly pick a module from the set of still available modules for that
was further popularized by Oskar Stålberg (@OskSta) in his EPC2018 talk about level generation in the game Bad North [3].
[Figure 1]: An image from @ExUtumno's Wave Function Collapse Github project [2]. Notice how patterns in the source image (left) can be found in the generated image (right). The image was generated using an extended and thus more complicated version of WFC than what we describe here. See the Github page for more.
[0]: Wikipedia. 2020. Procedural Generation. [Online] 2020. https://en.wikipedia.org/wiki/Procedural_generation [1]: Wikipedia. 2020. Constraint satisfaction problem. [Online] 2020. https://en.wikipedia.org/wiki/Constraint_satisfaction_problem [2]: Github. 2020. WaveFunctionCollapse. [Online] 2020. https://github.com/mxgmn/WaveFunctionCollapse [3]: Stalberg, Oskar. 2018. EPC2018 - Oskar Stalberg - Wave Function Collapse in Bad North. BUas Games. 2. 9. 2020. https://www.youtube.com/watch ?v=0bcZb-SsnrA [4]: Wikipedia. 2020. Graph (discrete mathematics). [Online] 2020. https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)
slot and remove all other possibilities,
dimensional grids, or even graphs with
making the module count for that slot
more interesting topologies, such as
equal to one.
the surface of arbitrary mesh
c) Remove modules from adjacent
geometry. More applications of the
slots based on the adjacency rules.
algorithm have been explored by
Repeat recursively for each slot
Oskar Stålberg in [5], [6] and [7].
modified this way.
These discoveries culminated in the
3) If WFC generated a contradictory result, start over again with a diffe‐
critically acclaimed town building game Townscaper [8]. [Figure 2]
rent random state. WFC does not necessarily always find asolution. If (and how easily) a valid solution is computed very much depends on the set of provided adja‐ cency rules. There are sets of rules for which WFC always converges regard‐ less of the random state, but also sets of rules for which the simulation always results in a contradictory state. Adjacency rule design is one of the more challenging parts of working with Wave Function Collapse. WFC can be extended to work for K-
[Figure 2]: Screenshot from the game Townscaper. Notice how the grid on the ground is made out of irregularly shaped polygons, but still adjacency rules can be described for this graph topology.
[5]: Stalberg, Oskar. 2020. Wave game. [Online] 2020. http://oskarstalberg.com/game/wave/wave.html [6]: Stalberg, Oskar. 2020. House game. [Online] 2020. http://www.oskarstalberg.com/game/house/Index.html [7]: Stalberg, Oskar. 2020. Planet game. [Online] 2020. http://oskarstalberg.com/game/planet/planet.html [8]: Steam. 2020. Townscaper game. [Online] 2020. https://store.steampowered.com/app/1291340/Townscaper/
WFC algorithm
11
APPLICATIONS IN DESIGN INDUSTRY Methodology and application Our team seeks and creates novel, innovative solutions, new concepts and approaches for complex design or architectural tasks that we can apply in our design practice. WCF, unlike aggregation methods, inherently creates interwoven rhizo‐ matic structures. It almost does not rely on randomness and offers a solution rather than its simulacrum. It creates global complexity while exposing clear local rules. WFC fills an entire segment of space with repeating prefab elements, while making sure they connect to each other properly and organize according to given rules. WFC creates diversity and complexity while maintaining the expected properties. WFC allows building various objects in multiple scales out of a limited number of prefab element types, securing their compatibility and cohe‐ rence of the resulting assembly. With a limited number of prefab elements, it is possible to build an unlimited number of customized objects, which will have the expected functional and structural properties.
13
EXAMPLE WITH NUMBERS, SEED 1 Wave Function Collapse breakdown
The WFC algorithm starts with Slots
1 Modules
allowing placement of multiple listed Modules. Each Module allows only certain other Modules to be placed next to it. This is described by the adjacency Rule set. The adjacency Rules are direction-aware.
WFC follows the Rules to remove disallowed Modules from Slots adjacent to each Slot and propagates the change until each Slot allows
2 Rule set
placement of only those Modules that can be adjacent to the Modules allowed to be placed by neighboring Slots. Such state is called a Canonical world.
3 Initial state
4 Observation
allowing placement of any Module
Choosing a random Slot and randomly picking one of the allowed Modules to be placed.
5 Propagation
6 Solution
15
EXAMPLE WITH MAP TILES, SEED 1 Wave Function Collapse breakdown
The WFC solver picks a random Slot
1 Modules
and makes an "observation" - chooses a single Module from the list of Modules allowed to be placed into the Slot. This change triggers a process of eliminating disallowed Modules from the adjacent Slots, which propagates from the observed Slot outwards.
The WFC solver continues with obser‐ vations until each Slot allows place‐
2 Rule set
ment of exactly one Module. Such deterministic state of the world is the solution of the the WFC.
3 Initial state
4 Observation
allowing placement of any Module
Choosing a random Slot and randomly picking one of the allowed Modules to be placed.
5 Propagation
6 Solution
17
SAME RULES, DIFFERENT MODULES Various solutions
19
EXAMPLE WITH MAP TILES, SEED 2 Wave Function Collapse breakdown
1 Modules
4 Observation
2 Rule set
5 Propagation
3 Initial state
6 Observation
7 Propagation
8 Solution
21
EXAMPLE WITH MAP TILES, SEED 3 Wave Function Collapse breakdown
1 Modules
4 Observation
2 Rule set
5 Propagation
3 Initial state
6 Observation
7 Propagation
8 Observation
9 Propagation
10 Solution
23
EXAMPLE WITH MAP TILES Different attempts
Modules with rule set
The solver encountered a contradiction. Current attempt was unsuccessful. Other attempts may suceed.
The solver found a solution. Current attempt was succesful. Other attempts may not succeed.
25
01 MONOCEROS PLUGIN
27
MONOCEROS BRIEF INTRODUCTION CHEAT SHEET Main input data types: Slots, Modules and Rules. These inputs are essential and necessary for WFC algorithm to generate a solution.
SLOT Slot is a cuboid (orthogonal box) that represents the basic unit of the Mono‐ ceros rigid discrete grid. Slots can be defined by slicing coherent geometry such as surface and polysurface. The Slots are stacked next to each other in coherent continuous blob which is called an Envelope. The outer layer of an Envelope is called a Boundary.
MODULE Module is a unit, which is being distri‐ buted over the specified Envelope. The purpose of a Monoceros Module is to place predefined geometry into dedi‐ cated Slots.
Empty module It is possible that the Modules cannot be stacked together without leaving blank Slots, which is considered a contradictory and therefore invalid result. WFC solver needs to fill every slot. Empty module is therefore often necessary.
RULE Monoceros Rule is a distinct data type describing adjacency of two Modules by aligning their Connectors facing opposite direction.
Explicit rule
Typed rule
Single rule explicitly allowing two
List of allowed neighbor modules for
modules to be neighbors in the speci‐
each module in each direction.
fied direction.
Indifferent connection
Rule at Boundary
A module with no explicit connection
By default, all Modules with Indiffe‐
in certain direction is indifferent in
rent Connectors can be at the
that direction and can connect to any
boundary of the Envelope. If any other
module indifferent in the opposite
Module should be placed with any
direction.
other than indifferent connector, it is necessary to create an explicit Rule at Boundary.
29
MONOCEROS Detailed user guide
Monoceros is a legendary animal living in the huge mountains in the interior of India. Monoceros has the body of a horse, the head of a stag, the feet of an elephant and the tail of a boar. from Unicorn Wiki
It is also a plug-in for Grasshopper,
Monoceros is an implementation of
Monoceros serves to fill the entire
which is a visual programming
the Wave Function Collapse (WFC)
world with Modules, respecting the
platform for Rhinoceros 3D CAD
algorithm developed for game design
given Rules. The plug-in wraps WFC
software.
by Maxim Gumin and extended and
into a layer of abstraction, which
Monoceros was developed at studio
promoted by Oskar Stålberg with his
makes WFC easily implemented in
Subdigital by Ján Toth and Ján
game Townscaper.
architectural or industrial design.
Pernecký.
It honors the principles of WFC and Grasshopper at the same time offering a full control of the input and output data in a Grasshopper way and their processing with a pure WFC.
Wave Function Collapse Before we delve deeper, let's shortly
derived from Slot adjacency: two Slots
Modules from this Slot, making it
explain the WFC algorithm itself. Note
are connected by an edge, if they are
deterministic (allowing exactly one
that Monoceros extends some
adjacent to each other on the grid.
Module),
concepts over the vanilla WFC, but it
Every Slot contains a list of Modules
is very helpful to understand the
that are allowed to reside in it.
original version of the algorithm first.
Conceptually, Modules could have any
To that end, it might also be helpful to
meaning that we assign to them,
watch the excellent explanatory talk
some usual meanings being that the
by Oskar Stålberg at EPC2018.
Slots populated by them contain geometry, images, navigation meshes,
Wave Function Collapse (WFC) is a procedural generation algorithm that
Modules from neighboring Slots based on the Rules. Repeat recursively in depth-first order for each Slot modified this way.
or other high-level descriptions of a space.
3. If WFC generated a contradictory result, start over again with a diffe‐
essentially attempts to satisfy cons‐ traints on a world (see CSP for more).
The algorithm is defined as follows:
Its name is inspired by quantum
1. Initialize the world to a fully non-de‐
mechanics, but the similarity is just at
terministic state, where every Slot
the surface level - WFC runs comple‐
allows every defined Module.
tely deterministically.
c) Constraint Propagation: Remove
2. Repeat following steps until every Slot allows exactly one Module (a
In its simplest form the algorithm
valid, deterministic result), or any Slot
works on an orthogonal grid. We initi‐
allows zero Modules (a contradiction):
ally have:
rent random state.
• WFC does not necessarily always find a solution. If (and how quickly) a valid solution is computed very much depends on the set of provided Rules. There are sets of Rules for which WFC always converges in just a single attempt regardless of the random state, but also sets of Rules for which
• A world defined by a mathematical
a) Observation (Slot choice): Pick a
the simulation always results in a
graph, in our case represented as an
Slot at random from the set of Slots
contradictory world state, and also
orthogonal 3D grid.
with the smallest Module count that
everything in between. Rule design is a
• A set of Rules describing what can
are still in non-deterministic state
challenging part of working with
occupy each tile on the grid depending
(allow more than one Module),
Wave Function Collapse.
on what its neighbors are. b) Observation (Module choice): The grid tiles are graph nodes, also
Randomly pick a Module from the set
called Slots in WFC (and in Mono‐
of still available Modules for the
ceros). Graph edges are implicitly
chosen Slot and remove all other
31
Development notes This repository contains the Gras‐
3. Rule describes allowed neighbor‐
contradictory (no Module allowed to
shopper wrapper for the main WFC
hood of two Modules or their parts via
be placed into the Slot). Usually, there
solver and comprehensive supple‐
one of the walls of the cuboid cages -
is less Modules (Module types) than
mental tools.
connectors.
Slots, which means each Module can be placed into Slots more times or not
The solver itself was developed in Rust
at all.
and compiled as a .dll library linked to
The Monoceros plug-in offers various
this wrapper. The source code of the
Grasshopper components (functions)
solver and a simple wrapper compo‐
for constructing and parsing the data,
The Monoceros implementation of
nent for Grasshopper is in a separate
the solver itself and postprocessing
WFC internally works like this too, on
repository.
and rendering tools.
the outside it presents the Modules as a continuous coherent compact collec‐ tion of such cuboid cages (Module
The Monoceros Grasshopper plug-in is written in C# and revolves around three main data types:
Architecture of Monoceros Grasshopper plug-in
Parts), each fitting into one Slot.
Like Grasshopper itself, also Mono‐ 1. Slot is the basic cuboid unit of a discrete world. The Slots can be embedded with Modules or their parts. Initially the Slots allow contain‐ ment of multiple Modules until the WFC solver reduces the list of allowed Modules to a single Module for each Slot according to given Rules.
The core of Monoceros is a Wave
ceros revolves around data and serves
Function Collapse (WFC) solver. WFC
for its immutable processing. Immuta‐
is an algorithm, that fills the entire
bility means, that no existing data is
discrete envelope with Modules with
being changed but rather transformed
no remaining empty Slot. In case of
and returned as a new instance of the
Monoceros, the envelope is a collec‐
data. In most cases it is even possible
tion of rectangular cuboid Slots, each
to construct the data with valid values
with 6 neighbors in orthogonal direc‐
right away with no need to re-define
tions, not taking diagonal neighbors
already existing data.
into account. 2. Module represents geometry wrapped into one or more cuboid cages (similar to the Slots). Modules are about to be placed into the Slots according the given Rules.
There are three main data types: In the original WFC algorithm, the
Slots, Modules and Rules.
Modules are exactly the size of a single Slot. The WFC then picks which Module should be placed into which Slot, leaving no Slot non-deterministic (with more than one Module allowed to be placed into the Slot) or empty /
Slot and Rule both reference to Module, its Part or its Connector. This reference is done only through user defined strings (for Modules and their
Parts) or integer indices (for Module
shopper and cast from and to all
Connectors). This is an intention, so
relevant existing data types. All Mono‐
that the data sets (Modules, Rules or
ceros components are compatible
Slots) can be replaced or shared
with the existing Grasshopper data
across more Monoceros setups.
types and ready to be used with existing Grasshopper components.
Most of the Monoceros plug-in components serve for constructing, analyzing and processing data. The components try not to bring redundancy, therefore it does not do anything, that could be easily done with vanilla Grasshopper components. The three new Monoceros data types are seamlessly integrated into Gras‐
Construct
Solve
Modules
->
Rules
->
Slots
->
WFC Solver
Post process
->
Materialize
Aggregate Preview
33
Data types
I. SLOT
I. STATES
4. Allows all Modules is a shortcut for
Slot is a container that allows place‐
a fully non-deterministic state, when
ment of certain Modules or their
any Module or its Part is allowed to be
Parts. The Slot can be in several
placed inside the Slot. In practice this
states:
state exists only for cases, when Slots
1. Allows Nothing is a contradictory (invalid) state, when there is no Module or its Part that can be placed inside the Slot. If the collection of
are being defined before or indepen‐ dently from Modules and therefore it is not possible to list Modules that should be allowed by the Slot.
Slots forming the Envelope of the solution contains one or more such
The collection of Slots forming an
Slots, the solution cannot be found
Envelope is considered Canonical if
and therefore such setup is invalid.
the adjacent Slots allow placement of
2. Allows one Module (or deterministic
such Modules or their Parts, that are
state) is the desired state of a Slot. It
allowed to be neighbors by the Rules.
is the responsibility of the WFC Solver
Canonical Envelope does not have to
to bring a non-deterministic Slot into
be also deterministic. For non-deter‐
a deterministic state. Such Slot can be
ministic Slots to form a Canonical
Materialized - a Module can be placed
Envelope, each allowed Module or its
into the Slot.
Part in one Slot must be allowed to be
3. Allows more Modules (or non-de‐ terministic state) is usually an initial or intermediate state of a Slot, when it is
a neighbor of each allowed Module or its Part in its adjacent Slot in the given direction by the Rule set.
Slot is a cuboid (orthogonal box) that
not yet clear, which Module or its Part
represents the basic unit of the Mono‐
should be placed inside the Slot, but a
The Monoceros implementation of the
ceros rigid discrete grid. The Slots do
list of allowed Modules is present. It is
WFC algorithm can automatically
not overlap and their position coordi‐
the responsibility of the WFC Solver
clean a Non-Canonical Envelope into
nates are defined in discrete numerical
to bring a non-deterministic Slot into
Canonical, which takes a lot of respon‐
steps. The Slots are stacked next to
a deterministic state. A non-determi‐
sibility from the user and enables
each other, preferably forming a
nistic Slot cannot be Materialized yet
future development of Monoceros
coherent continuous blob or more
but it is possible to evaluate its level of
features.
separate blobs that should become
entropy - a number of currently
filled with Modules. Such blob will be
allowed Modules or their Parts stating
called an Envelope.
how far from the deterministic state the Slot is.
II. SLOT PROPERTIES
III. AUTOMATIC ENVELOPE
Module to be placed at the boundary
• Center of the Slot in cartesian coor‐
WRAPPING
of the Envelope.
dinate system. The coordinate is auto‐
The WFC algorithm (the original one
matically rounded so that it repres‐
and the Monoceros implementation)
All boundary Slots are ensured to be
ents an exact center of the Slot in the
work with a full regular three-dimensi‐
surrounded by Out-enabled Slots. The
discrete world coordinate system.
onal box-like Envelope. Monoceros
Out-enabled Slots are not being
• Base Plane defining Slot's coordi‐
allows the user to define any set of
displayed in the Rhinoceros viewport.
nate system. The discrete world coor‐
Slots (as long as they are compatible
dinate system's origin and axial orien‐
and non-repetitive), which form any
tation matches that of the Base
arbitrary blob.
The Monoceros Modules may consist
Plane. For two Slots to be compatible, their Base Planes must match.
Therefore the Monoceros WFC Solver
• Diagonal defining Slot's dimensions
component automatically wraps the
in X, Y and Z directions as defined by
user-defined Slots into a slightly
the Base Plane. For two Slots to be
larger bounding box and adds the
compatible, their Diagonals must
missing Slots. These Slots are dubbed
match.
Out-enabled and are pre-determined
• Allowed Module Names is a list of
to allow only one type of a Module to
Modules that are allowed to be placed
be placed inside them: the Out
(entire Modules or their Parts) inside
Module. Out Module is automatically
the Slot. This list is empty, when the
generated by the Monoceros WFC
Slot is in the Allows Nothing or Allows
Solver, it has the same diagonal as the
Everything state.
Envelope Slots, has just a single Part
• Allows Everything is a flag determi‐ ning whether the Slot allows place‐ ment of any Module or its Part. • Allows Nothing is a flag determining whether the Slot allows placement of no Module or its Part. Such Slot is invalid and prevents the WFC Solver from reducing other Slots from nondeterministic to deterministic state.
IV. MODULES AND THEIR PARTS
and contains no geometry. The Out Module has all connectors defined as Indifferent, therefore it is allowed to be adjacent to itself and with any other Module Indifferent in the respective direction. The Out Module and an Empty Module are distin‐ guished so that it is possible to set a Rule for a Module Connector to be adjacent to Out Module (while not being Indifferent), which allows the
of more Parts. Each Part is of the size of a single Slot, therefore a larger Module occupies more Slots. For valid Modules it is ensured that the Module Parts always hold together and all of the Module Parts are always placed into Slots in the original order. Inter‐ nally, the Slots refer to Module Parts, for the user of Monoceros Gras‐ shopper plug-in are the Module Parts inaccessible and the Module appears as the smallest unbreakable unit. Therefore it is only possible to define entire Modules to be allowed by a Slot, even when such Module consists of more Parts. Internally this means, that all Parts of the Module are allowed to be placed into a Slot. In practice this should not cause any problems or imprecisions. It is being automatically handled by the WFC Solver and offers some buffer zone for complex Module placement.
35
V. VIEWPORT PREVIEW AND BAKING
color denotes the desired state of a
A Slot renders in the viewport as a
Slot.
wire frame box. The box is slightly
• Grey - the Slot allows placement of
smaller than the actual Slot, so that it
some Modules or their Parts and the
is possible to distinguish colors of two
overall number of Modules and their
adjacent Slots from one another.
Parts is known. Bright color indicates a high level of entropy - more Modules
A Slot bakes as a regular Rhino box, with dimensions matching the Slot size.
A Slot renders and bakes in different colors, indicating the level of Slot's entropy: • Red - the Slot does not allow place‐ ment of any Module or its Part, there‐ fore is empty and invalid. • White - the Slot allows placement of any Module or its Part that enters the Monoceros WFC Solver.
or their Parts are (still) allowed to be placed into the Slot. Dark grey means the Slot has a lower entropy and is closer to a solution.
VI. SLOT CASTS TO The Casts are meant to shorten the de-construction and re-construction of a Slot. With the following casts it is possible to use one instance of a Slot to construct a new one with the same properties by passing the Slot into individual input Slots of a Slot constructor component.
• Blue - the Slot allows placement of more than one Module or its Part but the overall number of Modules is unknown to the Slot. This is a valid
• Point - representing the center point of the Slot
state for Slots defined by enumera‐
• Box and BRep - representing the
ting the allowed Modules. A Slot is
exact box cage of the Slot
blue even when all Modules are
• Vector - representing the Diagonal
allowed, but they have been listed
of the Slot
namely instead of using the Allow all
• Text (string) - returns a human-fri‐
constructor.
endly report of the Slot's properties in
• Green - the Slot allows placement of
format: Slot allows placement of XY
exactly one Module Part and is ready
Modules. Slot dimensions are XYZ,
to be Materialized. This is currently
center is at XYZ, Base Plane is XYZ X Y.
only possible for Slots processed by the Monoceros WFC Solver. Green
II. MODULE Module Parts are not accessible indivi‐
cannot be placed into the Solution.
dually, the Module is rather presented as a single element.
Monoceros Rules may allow connec‐ tion of Connectors from the same
A Module can consist of a single Part
Module or from two distinct Modules.
or more Parts. The Parts that are
A Rule, therefore also a connection, is
entirely surrounded by other Parts in
only valid when the two Connectors
all 6 orthogonal directions, are not
are in opposite orientation of the
being presented to the user at all. Only
same axis (i.e. negative Y can connect
the boundary walls of Module Parts
only to positive Y).
are visible and form an orthogonal Module is a unit, which is being distri‐
discrete unit cage of a Module.
buted over the specified Envelope. The main purpose of the WFC and
Monoceros Rules are referring to Module names and Connector Indices.
II. CONNECTORS
The supplemental Monoceros
or its Part can be placed into which
The Module cages are subdivided to
components for constructing Rules
Slot, so that the adjacencies of
match the size of Envelope Slots in
use visual representation of Connec‐
Modules follows the specified Rule set.
their respective directions. The outer
tors (rectangles or dots) to identify
If this requirement is met, it means
walls of a Module cage are considered
the Rule being created.
the Envelope is Canonical. If there is
to be Connectors. Connectors are
exactly one Module or its Part allowed
numbered from 0 to n-1, where n
to be placed into every Slot, the
stands for the number of (outer)
Envelope is Deterministic and solved.
Connectors of the respective Module.
I. MONOCEROS MODULE PARTS
The Monoceros Modules are designed
Monoceros is to decide, which Module
offers a possibility for Modules to span over (occupy) more Slots. In such case, In the original WFC algorithm, the Module occupies exactly one Slot. Monoceros the Module consists of more Parts, each of a size of a single Slot. If the Module is compact (conti‐ nuous, consistent) then the Parts always hold together (this is secured by the Monoceros WFC Solver). The
to connect to each other through their Connectors. To enable such connection it must be described by a Monoceros Rule. A Connector can occur in multiple Rules, allowing it to connect to multiple counter-Connectors, out of which one will be chosen by the WFC Solver. Each Connector must occur in at least one Monoceros Rule, other‐ wise the Connector cannot have any neighbor, therefore such Module 37
III. MODULE GEOMETRY
When it is being placed into Slots it is
nent.
The purpose of a Monoceros Module is
only being translated (moved) and
• Base Plane defining Module's coordi‐
to place geometry into dedicated
never rotated. There are maximum of
nate system. The discrete world coor‐
Slots. The Module data type is not
24 different discreet 90 degree rota‐
dinate system's origin and axial orien‐
bound to its geometry, which means
tions of an object. Rotating all
tation matches that of the Base
the shape, size and location of Module
Modules automatically would take a
Plane. For a Module to be compatible
geometry has no relation to the Parts
lot of control from the user. Therefore,
with Slots, their Base Planes must
of the Module or Slots it may occupy.
if any rotation is desired, it has to be
match.
This is an intentional feature because
done manually by creating a new,
in real-life architectural and design
different rotated version of the
applications, the Modules will need to
Module. The best way to do this it to
posses extending parts (physical
rotate and adjust all input data
connectors) that would not fit the
(Module Part Points, Module
cages of Module Parts and therefore
Geometry) and give it a different
would compromise the WFC solution.
name.
Therefore, the Module Geometry may
V. MODULE PROPERTIES
Connector rectangle, with Normal
be small, larger, different than the
• Name - is a string unique identifier
pointing outwards and origin at the
Module cage or remain completely
assigned by the user. The Name is
Connector center. The Connector
empty.
automatically converted to lowercase.
Indices (or their order in this list) does
All Monoceros components with
not represent their direction.
Module list input check if the Module
• Connector Directions - unit vectors
names are unique. If not, they do not
aligned to the base plane indicating
compute. The name is the sole identi‐
the direction of connector's normal
fier of a Module for all purposes, so
(i.e. positive X direction is always {1, 0,
that it is possible to replace a set of
0}, negative Z is always {0, 0, -1}).
Modules within a solution with a diffe‐
Returns a list parallel to the list of
rent one.
Connectors.
analyzes input geometry (no matter
• Module Part Center Points - center
• Connector Use Pattern - is a boolean
whether it is the same geometry that
Points of Module Parts in cartesian
list computed from the Module and
is being held by the Module or a diffe‐
coordinate system. The points are
the list all Rules indicating whether
rent one) and returns exact centers of
automatically calculated and can be
the Connectors have been already
Slots that may be occupied by Module
used to create a new Module with the
described by any Rule. The Monoceros
Parts.
same Parts (cage) or to define the
WFC Solver requires each Module
Slot Envelope exactly around the
Connector to be described by at least
Module.
one Rule, therefore it is important to
• Geometry - geometry to be placed
generate some Rules for all unused
into Slots with Materialize compo‐
Connectors before attempting to find
• Module Part Diagonal - defining Module Part's dimensions in X, Y and Z directions as defined by the Base Plane. For a Module to be compatible with Slots, their Diagonals must match. • Connectors - reveals the Module Connectors as Planes tangent to the
Therefore a Module is being constructed from different input data than its Geometry. To mark Module Parts (Slots the Module may occupy) the user specifies Points inside these Parts. For convenience, it is possible to use Slicer helper component, that
IV. ORIENTATION AND PLACEMENT A Module has a fixed orientation.
a solution. Returns a list parallel to the
The Out Module is present in each
list of Connectors.
solution. It is a Module with a single
• Is Compact - single boolean value
Part, exactly the size of a single Slot
indicating whether the Module Parts
and holds no Geometry. It is automa‐
create a coherent compact continuous
tically placed into Slots outside the
blob. If there are any gaps or Parts
user-defined Envelope. All Out Module
touching only with edges or corners,
Connectors are marked with Indiffe‐
the Module is not compact. Such
rent Rules, so any Module with an
Module would not hold together in the
Indifferent Rule marked Connectors
WFC solution and therefore is auto‐
can be placed next to it - in other
matically skipped by the Monoceros
words, it enables the Indifferent
WFC Solver. It is allowed to construct
Modules to be on the boundary of the
such Module and to preview it in the
Envelope. The Out Module does not
viewport, so that the user can
render in preview, nor bakes.
manually adjust the input parameters and construct a compact Module.
The Empty Module with a single Part,
• Is Valid - internally, there are many
exactly the size of a single Slot, no
reasons why a Module could be invalid,
Geometry and all Connectors marked
but only one reason is allowed to
with Indifferent Rules has to be
happen in Grasshopper: if a Module
constructed manually with a dedi‐
consists of too many Parts. The
cated Monoceros component. It
current upper limit is 256 Parts for all
behaves as any other Module because
Modules combined. If a single Module
it is a regular Module that can be
outreaches this value, it is marked as
constructed also without the special
invalid. It is allowed to construct such
Monoceros component. It render in
Module and to preview it in the
viewport, it can be baked, so that indi‐
viewport, so that the user can
vidual Rules can be assigned to it. The
manually adjust the input parameters
Empty Module helps complex Mono‐
and construct a valid Module.
ceros setups to find a solution, because it fills the gaps between
VI. SPECIAL MODULES: OUT AND
complex Modules and their Parts.
EMPTY There are two reserved Module names in Monoceros: Out and Empty. It is not allowed to manually construct a Module with such name, because they are being constructed automatically.
39
7. VIEWPORT PREVIEW AND BAKING
Cages to define a Rule graphically.
Module preview renders in Rhinoceros viewport with many helper items:
VIII. MODULE CASTS Module casts help using the Module
• Cage - boundary Connectors of
directly as an input to various
Module Parts render and bake as wire
components, even when they require a
frame rectangles. The Cage is white
Module name, i.e. Rule or Slot
when the Module is valid, red when it
Constructors.
is invalid because it is no compact or
• Module Name - is a special Mono‐
consists of too many Parts.
ceros data type that wraps a string
• Name - renders as a large text, green
name of a Module. Direct cast to a
if the Module is valid, red it is invalid.
string is already taken by the user-fri‐
The Module Name bakes as a text dot
endly report, therefore the Module
with the Name as a label.
first casts its name to Module Name
• Connectors - render and bake as text
type, which then casts into text
dots with Connector Index as a label.
(string) for user-friendly report.
The dots are placed in the center of
Monoceros components, however,
the Connector rectangle. The dots
expect the Module Name type. This
render in colors indicating their direc‐
way it is possible to use the Module as
tion:
an input where a Module Name is
• Red = X • Green = Y • Blue = Z
expected and there is no need to deconstruct the Module to its proper‐ ties. • Text (string) - returns a human-fri‐
• White text = positive orientation
endly report of the Module's proper‐
• Black text = negative orientation
ties in format: Module "XY" has XY
• Geometry - renders as regular Gras‐
connectors and has XY parts with
shopper geometry but does not bake
dimensions XYZ. and either The
The helper geometry preview does not follow the Grasshopper convention of a transparent green material for selected items and red for unselected.
The purpose of Module baking is to provide helper geometry and anchors for defining Monoceros Rules. It is possible to snap to Connectors or
Module is compact. or WARNING: The Module is not compact, contains islands and therefore will not hold together.
III. RULE Monoceros Rule is a distinct data type
does not for check such cases because
not indicate their direction, it is only
describing an allowed adjacency of
the WFC Solver itself prevents such
possible to check this when the
two Modules by aligning their Connec‐
situations from happening. That
respective Modules are provided.
tors facing opposite direction. The
means that even though a Rule is
Therefore a full validity check is
Monoceros WFC Solver parses the
valid, it may never occur in the
performed only when both data is
Slots so that they only allow place‐
solution.
available, most importantly in the
ment of Modules or their Parts that can become adjacent neighbors accor‐ ding to the Rule set.
Monoceros WFC Solver. When the I. EXPLICIT RULE Explicit Rule is closest to the original WFC Rule. It refers to a Connector of
Explicit Rule is created, it is only checked whether it refers to two diffe‐ rent Connectors.
Internally, the WFC Solver only works
one Module that can connector to a
with Explicit Rules, but for conveni‐
Connector of another Module. Its
Explicit Rule is bi-directional, therefore
ence Monoceros offers also a Typed
textual representation follows a
a:1 -> b:4 equals b:4 -> a:1.
Rule. A Typed Rule is automatically
pattern module:connector -> module:
unwrapped into one or more Explicit
connector, i.e. pipe:1 -> bulb:4, which
Rules by the WFC Solver and other
translates to: Module "pipe" can
supplemental components. Both types
become a neighbor of Module "bulb" if
of Rules manifest as a single data
their connectors 1 and 4 touch.
type, can be processed together.
Explicit Rule properties • Source Module Name - is the unique text identifier of the source Module • Source Connector Index - is the unique integer identifier of the source
An Explicit Rule should only allow The Rule refers to Modules via their
connection of two non-opposing
string (text) names and to Connectors
Connectors, which makes the Rule
via their integer indices. This allows
invalid. Because Connector indices do
Connector of the source Module • Target Module Name - is the unique text identifier of the target Module
the same Rule set to be used with a different (yet fully compatible) set of Modules.
A single Module Connector can be referred to by multiple Rules but at least one referring Rule is required.
In some cases the Modules cannot connect even though a Rule allows it because their Parts collide. Monoceros
41
• Target Connector Index - is the
one Module, which then can connect
identifier of the (source) Module
unique integer identifier of the target
to any opposite Connector of any
Connector Index - is the unique
Connector of the target Module
Module with the same "connection
integer identifier of the (source)
type" assigned by another Typed Rule.
Connector of the (source) Module
Explicit Rule casts An Explicit Rule can be cast from a text (string) that has format identical to the user-friendly Explicit Rule text report: module:connector -> module: connector. An Explicit Rule does not casts to any other data type.
Its textual representation follows a pattern module:connector = type, i.e. player:1 = jack, which translates to ` Module "player" can become a neighbor of any Module if its connector 1 touches the other
Type - is the unique text identifier of the connection type. Two Modules with opposing connectors assigned the same connection Type can become neighbors.
Module's opposing connector if both connectors are assigned type "jack".
Typed Rule casts A Typed Rule can be cast from a text
Explicit Rule Viewport preview and baking
A Typed Rule needs to be unwrapped into one or more Explicit Rules before
(string) that has format identical to the user-friendly Typed Rule text report: module:connector = type. A
An Explicit Rule cannot be displayed
entering the WFC Solver. This is done
on its own. Following a precedent of
automatically by the Monoceros WFC
Vector display component in Gras‐
Solver component and by supple‐
shopper, there is a Rule Preview
mental components such as Unwrap
component in Monoceros. When
Typed Rules or Collect Rules. For
Typed Rule Viewport preview and
provided with all Modules, it displays
Typed Rule unwrapping it is necessary
baking
an Explicit Rule as a line between the
to provide all Modules so that only
connectors described by the Rule. The
A Typed Rule cannot be displayed on
opposing Connectors of the same
color of the line indicates the direction
its own. Following a precedent of
type can unwrap into valid Explicit
of the connectors (and therefore also
Vector display component in Gras‐
Rules. Even non-opposing Connectors
of the Rule): red means the connec‐
shopper, there is a Rule Preview
can be assigned the same type. In
tors are facing X direction, green
component in Monoceros. When
such case, only valid (opposing)
represents Y direction and blue indi‐
provided with all Modules, it displays a
couples will be unwrapped into Explicit
cates Z direction.
Typed Rule as a line between all
Rules.
couples of opposing Connectors
Typed Rule does not casts to any other data type.
assigned the connection Type. The An Explicit Rule preview can be baked.
II. TYPED RULE
As the Typed Rule is in fact a half-rule,
color of the line indicates the direction
it is always valid as long as it refers to
of the connectors (and therefore also
an existing Module and its Connector.
of the Rule): red means the connec‐ tors are facing X direction, green
Typed Rule is a convenience data type introduced by Monoceros. It assigns a
Typed Rule properties
"connection type" to a Connector of
Module Name - is the unique text
represents Y direction and blue indi‐ cates Z direction. In 1/3 (to prevent
collision because in real-life use cases
Even the indifferent Rules need to be
lines cross in their middle) of the line
constructed manually using the
there is a dot with a text label indica‐
Construct Typed Rule or simpler
ting the connection Type.
Indifferent Rule From Point. In the usual use case, the Indifferent Rule is
A Typed Rule preview can be baked.
assigned to those Connectors, that have not been described by any other intentional Rule. For such cases, there
III. INDIFFERENT TYPED RULE
is a shorthand constructor component
For convenience, Monoceros intro‐
Indifferent Rules For Unused Connec‐
duces a built-in Rule type: indifferent.
tors.
When a Connector is marked Indiffe‐ rent, it can connect to any other Indifferent connector of any Module. The purpose of such Typed Rule is to indicate, that the user does not care about specific adjacency of the given Connector and at the same time to satisfy the WFC requirement, to
Just like any other Rule, Typed or Explicit, also the Indifferent Rule can be assigned to a Connector that already is described by another Rule. It can also be used as a disallowed Rule with the Collect Rules component.
describe each Connector with at least one Rule.
43
MONOCEROS WFC SOLVER Over the course of multiple iterations
Slots and be of any voxel-based shape
output thanks to the backwards
(called observations) occurring inter‐
as long as their Parts connect in a
mapping metadata generated by
nally inside the WFC Solver, Wave
continuous fashion - i.e. they touch
lowering.
Function Collapse gradually changes
with faces and not just edges. A
the state of Slots from non-determi‐
Monoceros Module Part (not available
nistic (allowing multiple Modules) to
as public data type) is equivalent to a
deterministic (allowing exactly one
vanilla WFC Module.
Module). This iterative process happens in the Solver component, where the Slots are observed based on pseudo-random numbers until either every Slot ends up in a determi‐ nistic state (success), or any Slot ends up in a contradictory state (failure). If the result is contradictory, the Solver component internally re-tries up to a predefined number of attempts, each attempt using the already modified random state and thus producing a different result each try.
As mentioned earlier, Monoceros builds on top of the original Wave Function Collapse to make it more useful for architecture and industrial design. The essence of the Monoceros extension is how it treats Modules. In original Wave Function Collapse a Module always has the dimensions to occupy exactly one Slot. While Mono‐ ceros Modules are aligned to the same discrete grid, they can span multiple
II. CANONICAL WORLD STATE Because Monoceros allows us to modify and customize the initial state of the world and vanilla WFC has an
I. RULE AND MODULE LOWERING
opinion on how valid world state looks
Because it is not immediately clear
like, the Rust solver needs to detect
how to implement a solver for
whether the world is Canonical (valid
Modules as defined by Monoceros,
in terms of vanilla WFC).
Monoceros utilizes a technique called lowering (sometimes also called desu‐ garing) to change their representation into lower-level, vanilla WFC Modules and also produce metadata necessary
A world is Canonical if: • Every Slot allows every Module (this is the initial WFC world state),
to reconstruct the Monoceros Modules
• The world is a result of applying both
from the vanilla Modules.
the observation and subsequent cons‐ traint propagation phases on an
Even though not visible to the user,
already Canonical world.
Module Parts are carefully tracked throughout the plug-in, and since
For example, running an observation
Rules effectively work with Module
without subsequently propagating
Parts already, the Grasshopper Solver
does not produce a Canonical world
lowers the Module and Rule defini‐
and WFC does not define how this
tions into their low-level forms and
world should behave if observed or
feeds those into the Rust solver over
propagated any further.
the C API. After the Rust solver finishes successfully, Monoceros
Setting the state of the world
Modules are reconstructed from its
manually rarely produces a Canonical
world. Therefore the Rust solver always Canonicalizes the world before running an observe/propagate operation. Canonicalization is imple‐ mented by starting the constraint propagation phase on every Slot as though it was just observed. This process can in theory be expensive, but fortunately needs to run just once per invocation of the Solver compo‐ nent. The Rust solver provides the information whether the world needed canonicalizing as part of its output.
45
COMPONENTS
SLOT-RELATED
Construct Slot With All Modules Allowed
Construct Slot With Listed Modules Allowed
Deconstruct Slot
MODULE-RELATED
Are Slots Boundary
Construct Module
Add Boundary Layer
Construct Empty Module
Deconstruct Module
SOLVER
POST PROCESSING
SUPPLEMENTAL
Monoceros WFC Solver
Materialize Slots
Slice Geometry
Assemble Rule
Rule Preview
47
COMPONENTS
RULE-RELATED
Construct Explicit Rule
Construct Typed Rule
Unwrap Typed Rules
Deconstruct Explicit Rule
Deconstruct Typed Rule
Collect Rules
Is Rule Explicit
Is Rule Typed
Explicit Rule From Curve
Typed Rule From Point
Indifferent Rules For Unused Connectors
Rule At Boundary From Point
Indifferent Rule From Point
49
EXAMPLES Definition
Result
Definition
Result
51
02 RESEARCH
53
OUR DEFINITIONS Main features of the algorithm WFC
Architectural
Economical
With discrete aggregation methods,
Wave Function Collapse (WFC) fills
With a limited number of prefab
we build complex structures with
an entire segment of space with
elements, it is possible to build an
emergent interactions from a finite
repeating prefab elements, while
unlimited number of customized
set of prefabricated building blocks.
making sure they connect to each
objects, which will have the expected
The declarative property of the
other properly and organize according
functional and structural properties.
methods enables us to generate a
to given rules. WFC creates diversity
variety of candidate solutions from
and complexity while maintaining the
which we choose based on both algo‐
expected properties.
rithmic and subjective criteria. Our approach to design, fabrication
Conceptual WCF, unlike aggregation methods, inherently creates interwoven rhizo‐ matic structures. It almost does not rely on randomness and offers a solution rather than its simulacrum. It creates global complexity while exposing clear local rules.
Practical WFC allows building various objects in multiple scales out of a limited number of prefab element types, securing their compatibility and cohe‐ rence of the resulting assembly.
and assembly merges the modernist prefabrication with parametric complexity and customization. We are able to precisely control complex patterns of spaces, purposes, struc‐ tures and materials to build effec‐ tively high-performance architecture of the 21st century with fabrication methods of industry 4.0.
Aim To develop and master a meaningful materialization method of datadriven design with available fabrica‐ tion methods.
Software To develop full-fledged software tools tailored for academic and commercial needs od Subdigital.
Process To generate a multitude of abstract and applied examples in various scales, that can be later used for partial tasks in architectural design. Discretization With a limited number of prefab elements, it is possible to build an unlimited number of customized objects, which will have the expected functional and structural properties.
55
FIRST EXPERIMENTS WITH BASIC MODULES 57 essential single modules
The library of shapes are abstract geometries indicating just their direc‐ tion and orientation, set in regular cubic grid. The modules have 6 possible ways of aggregation, and geometries have multiple possibilities of rotations. With a goal of creating complex, peculiar solutions of given space, we came up with 56 different modules and then tested their combi‐ nations in terms of solvability. Why some attempts are complicated and other are rigid? After some time of testing it became obvious that achieving more complicated, inter‐ connected 3dimensional solution of the space is dependent not only by the number of used modules within the set but also by the inner limitation of modules. Straight shapes defined by only one of the axes, therefore with two connec‐ tors and without any other limitations and rules will fill up space with rigid, repetitive shapes. More limited modules, two or three-axed modules, with more specifically defined, exclu‐ sive connections, and the ability of one-axed modules to chain them‐ selves are some of the aspects of results complexity.
57
BASIC MODULES Experiments with subsets of the essential modules
1 module World size 10x10x10 slots Number of explicit connections: 1 Sides without connectors are indifferent
2 modules World size 10x10x10 slots Number of explicit connections 2
3 modules World size 10x10x10 slots Number of explicit connections 3
4 modules World size 10x10x10 slots Number of explicit connections 5
2 modules World size 10x10x10 slots Number of explicit connections 2
6 modules World size 10x10x10 slots Number of explicit connections 14
Without empty module
With empty module
59
6 modules World size 10x10x10 slots Number of explicit connections 17
No empty modules
With empty modules
No empty modules
With empty modules
No empty modules
With empty modules
6 modules World size 10x10x10 slots Number of explicit connections 11
6 modules World size 10x10x10 slots Number of explicit connections 11
4 modules World size 10x10x10 slots Number of explicit connections 10
5 modules World size 10x10x10 slots Number of explicit connections 8
4 modules World size 10x10x10 slots Number of explicit connections 7
5 modules World size 10x10x10 slots Number of explicit connections 13
Without empty module
With empty module
61
7 modules World size 5x5x5 slots Allowed connections are defined by typed rule from point
8 modules World size 5x5x5 slots Allowed connections are defined by typed rule from point
63
03 APPLICATIONS WFC in real-life projects
65
APPLICATIONS Testing and improving our skills and sensitivity with our toolset on real-world applications in various scales – from the scale of product design to urban planning
S
M
L
XL 67
NEONS Modular light sculpture Fixing an emergent aggregate of neon
Modules and rules
Assembly results
tube loops into a an intricate, yet fairly regular frame.
In early stages of the development we tested the WFC solver on simple directional stick assets. The Neons application is its direct offspring: a complete set of directi‐ onal and cross-pipes were used for the structural frame together with several special modules with neon tubes. The ruleset required the neons to form closed loops, each of a different color.
The design of a spectacular lamp with a complicated wired net of ledstrings, which would be still connected through framing system providing successful materialization of the lamp.
structure lights
One component
69 Rendering by Patrik Kučavík
71 Rendering by Patrik Kučavík
PIPES Sculpture
Modules and rules
A series of continuous winding pipes should entirely fill the given spatial envelope, each starting at its vertical top and ending at its vertical bottom. The result should be simple to produce yet feature an intricate aesthetics.
Twelve modules, that can be replaced with only two different physical elements, were used. The ruleset allowed for the modules to aggregate into continuous pipes exclusively in the vertical direction. Specific modules were selected to be at the beginning and at the end of each individual aggregated pipe. The asset was used for testing the WFC solver toolset, as it showed easy-to-evaluate results and featured nontrivial ruleset.
The WFC application was a remake of an older design, which was generated by a growth algorithm. The WFC fills any spatial envelope entirely, allows to define specific modules at selected areas. The asset can be extended so that the pipes intertwine more vigo‐ rously and still fill the envelope entirely. The setup and solution time is significantly shorter than in the case of the growth algorithm.
Assembly results
73
LALALAMP Public space light installation
Is it possible to fill space with a bran‐ ching system of closed pipes, that has a strong dynamic spatial orientation?
Modules and rules
A simple set of modules follows care‐ fully defined rules, that ensure the result is horizontal rather than omni‐ directional, yet it creates closed pipe loops that intertwine also in the third direction. It would be entirely impossible to achieve such density of pipes with growth algorithms or manually. The requirement of generating a closed lopped system of pipes was easy to achieve with WFC.
Assembly results
75
PLAYGROUND MAZE School project This project challenges the flexibility of discrete assemblies we can generate with WFC. The aim was to
Modules and connection rules
create a diverse network of tunnels and stairs to become a playground for children.
A single basic “communication“ element was set with have many directional aggregations, with being full (stairs) or dull (tunnel). Later, a “house” element was added to the ruleset.
All pieces assembled together preci‐ sely fill an arbitrary space with tunnels and staircases fluently interconnected into a playful maze.
Assembly results
Playground maze
77
79
HOUSING A series of architectonic exercises
The housing industry is battling overpopulation in cities, and pressure of global housing crisis.
The prediction of near future seems to
The resulting system is generating site
shift from 3D-printing back to prefa‐
(space) -specific designs with limit‐
brication and discrete design.
less number of variations.
How to automatize housing design
Depending on the given space, the
process? The objective of this project
system can combine rules and
is to create functional, generic housing
modules into valid single houses,
system that is flexible, adaptable on
apartment blocks or into superstruc‐
given spatial and social conditions.
tures.
The housing industry in battling over‐
The strong side of discrete design and
population in cities, and pressure of
our WFC-generated housing is in its
global housing crisis.
plurality and the ability to create
Such system should be ready for
connected unique spaces using a finite
prefabrication and repetition of mass
number of parts while preserving the
production, while maintaining the
given relationships between them.
uniqueness and peculiarity of every resulting design. Our building system is defined by finite number of repeating basic elements, and the relationship between them. In this case modules are representing horizontal and vertical communica‐ tions, rooms and facades and the rela‐ tionship are taken from basic common building typologies.
If the rules and relationships are correct, every result is valid.
81
Source modules
43 mega-modules consisting of 175 single modules
Main hallway modules
Connecting hallway modules
Rooms
Staircase landings modules
Stairs modules
Facade modules
Result
Modules are designed to join by floors
1st floor
Housing
83
The process of finding and developing a functional system originated in our established set of abstract set of modules and its translation into architectural language. The basic set of modules and rules
called “hallway megamodules” and
were defined by geometries set in
“stairs megamodules” and got various
cubic grid with 6 possible directions of
types of connectors, some with the
aggregation. In the world of architec‐
ability to connect to each other and
ture that means 4 cardinal directions
create a continual path within a
plus two vertical directions – the
building and some with the ability to
above and below. In this regular cubic
connect the rooms.
world, our tests had proven that too
The set that follow these communica‐
many modules with too complex,
tion megamodules, the “room mega‐
undefinable rules would have to
models” and “façade megamodules”
repeat to achieve the variety of
have another types of rules and
elements essential to construct valid
connections that helped us control
architectonic space. Our solution was
and define the interior and exterior of
the creation of various clusters of
our system and the relationships
modules with constant internal rules.
within them.
This optimization created the defini‐
By this variety of architectonically
tion of “megamodules”. In this way we
defined “megamodules” we have
achieved the ability to define and gain
proven the relevancy and applicability
control over different sized spaces
of our wfc algorithm in the design
that are required to create a building.
process of scale of architecture.
Differently sized and shaped “mega‐ modules” were then given external connection rules and qualities of various architectonic elements. In this case we defined a set of “megamodules” which doubled as set of elements required to create a hori‐ zontal and vertical communication within the building. These we have
A basic example of a floor plans of a result generated by WFC
Housing
85
Variations
Different seeds and space definitions
Housing
87
HYPERLOOP DESERT CAMPUS Conceptual proposal for competition Project by Miriam Löscher and Eva Kvaššayová
How to fill specific spatial envelopes with a given set of interconnected elements? Cross-scale design of the campus / small-scale masterplanning consisting of various program types (in large scale) and separated networks of infrastructure assembled with various types of facilities and amenities (in a small scale). We were able to choose from a multi‐ tude of program organizations and then populate them with smaller inner components. By setting strict rules we could precisely control the density of horizontal and vertical circulation, empty and filled spaces. And thus also the permeability of the structure and movement of people. The algorithm helped us find solutions, which wouldn't be possible to find by traditional ways of design. Parated networks of infrastructure assembled with various types of facili‐ ties and amenities (in a small scale).
Case studies and development of the structure
89
Programe scheme The hyperloop campus is going to be
which creates assemblies from given
tions and cells and let the space of
first of its species, basically a flagship.
elements according to their defined
former designed voxels be filled with
therefore it needs to breathe with
adjacencies.
those. a spectacular net of communi‐
future and mediate the feeling from
in first step we set voxel volumes
cations was created, where visitors
the novelty of hyperloop itself to
based on space requests from brief,
can enter all accessible areas and
those, who come to visit this center.
designed their logical connections and
enjoy the view of mountains and
one of the most up-to-date digital
let the algorithm assemble it for us.
desert as well as the inner organiza‐
design methods is using the wave
secondly we designed the communica‐
tion.
function collapse - an algorithm,
APARTMENTS HEADQUARTERS
GYM AND POOL
OFFICES
RESTAURANT RECEPTION
VISITORS TOUR ARENA
WELCOME CENTER
MUSEUM RELAX AREA
LABORATORIES
LABORATORY & CLASSROOMS
TRAINING CENTER
Elements Digitally developed autofill of the
SIGN (+) CAN CONNECT WITH THE
space - wave function collapse algo‐
side of the another VOXEL WITH THE
rithm - automatically fills the space
MINUS (-) in the same axis.) it allows
with the Modules of specific size (s, m,
us to precisely control the density of
l, xl; smallest module - 3x3x3m) with
the Communication, empty and filled
given set of the rules - marked as a +
spaces - therefore, ensure the proper
or - (side of the voxel with THE PLUS
permeability of the structure.
COMMUNICATION
FACILITIES AND AMENITIES
HORIZONTAL MODULES paths, halls, courtyards
path1_S
cells with specified functions
path2_S
turn1_S
turn2_S
turn3_S
turn4_S
path1_M
path2_M
OFFICE platform1_XL
platform
platform
platform3_L
platform2_XL
platform4_L
platform3_XL
platform5_L
APARTMENT
platform6_L CLASSROOM
LABORATORY
VERTICAL MODULES Elevators, ramps, stacks
VERT1_S
VERT2_S
L3_S
L4_S
L1_S
L5_S
L2_S
L3_M
L1_M
L4_M
L2_M
RAMP1_L
L5_M
L6_S
RAMP2_L
L7_S
L8_S
RAMP3_L
L6_M
RAMP4_L
L7_M
L8_M
91
Elements - specific cells We set six main functional cathego‐ ries of cells, out of which some have modular variations of furnishing and size (basic module: 3x3x3 m). These are evenly distributed among the set space and bound with many paths and platform, so that the daily routine walk to office, relax facilities and back into the appartment becomes an adventurous route through hidden desert paradise.
OFFICE
CLASSROOM APARTMENT
LABORATORY
GARDEN ELEVATOR
Exploded and assembled isometry with modules
APARTMENTS
RAMPS
CLASSROOMS
OFFICES
ELEVATORS
LABORATORIES
PLATFORMS
SPACE DEFINING SURFACES
93
Longitudinal section A-A 1:500
Floorplan 1:500
LABORATORIES
MUSEUM
a
OFFICE LABORATORY
ELEVATORS
ES
RESTAURANT
APARTMENTS
RECEPTION
a
MAIN ENTRANCE
95
HYDROGEN ISLAND Urban strategy for independent future Diploma project by Jiri Vitek Studio Hani Rashid, Vienna 2020
The project hydrogen island has aim to develop strategies and methodolo‐ gies for urbanisation of the aban‐ doned and forgotten landscapes using current technologies and focusing on topologies qualities, multiplicities and smooth and stripped spaces. For bottom up generative systems were used existing pathways, points and datascapes interpreting into ground and solar tissue. Such a defined mass needs to be carefully translated into architectural use, when instead of just slicing we can push it further via topological system such as Wave Function Collapse - Monoceros by Subdigital.
Masterplan
97
Clusters Simplified geometry of one cluster
Given mass was understood as space for habitats / architectural program _ such as residential units, public space units, gardens, ateliers, work spaces, corridors and very importantly energy production units contains H2 store facility, solar panels and wind turbos as well as recycling grey water facility. In this synergy effect each cluster could be independently existing and be fully sustainable. Right definition of connectors and play with algorithms end up in very nice, differentiated, rich and contextual results.
Plan of production geometry of the cluster
Section of production geometry of the cluster
99
Components and architectural Language
The language is coming from struc‐
Modules and connection rules
tural understanding of basic frame units and its possibilities of variations. It's quite intelligent and it's able to become an energetic facility or interior spaces in residential units. Relations between parts and whole is consi‐ dered a field allowing transition between private and public spaces. Such strategies generate a rich and very structural environment.
Assembly results - sustainable cluster of units
Simplified geometry
Production geometry
101
WFCITY Land Jakob Dostert Studio Architecture III, UMPRUM 2020/2021
The project is exploring possibilities of discrete assemblies via Monoceros. The exploration was conducted on three urban/housing scenarios LAND, COAST and WATER as a reference to an imminent danger of rising seawater levels.
LAND The land scenario of the WFCity explores the possibility to cover as much as possible of a given landscape. It is achieved to cover more of the terrain over time by adding more modules and rules with every evolutionary step. Connected terraces can be used for gardening, streets connect the land to the water, where the land scenario unifies with the coast.
103
WFCITY Coast Adam Varga Studio Architecture III, UMPRUM 2020/2021
COAST Lagoons, bays and shallow waters are all alive. So are the spaces above them, rising on the columns. COAST WFCity scenario encourages to imagine urban schemes, organized by an algorithm, on the borders between water and land.
105
WFCITY Water Petra Sochůrková Studio Architecture III, UMPRUM 2020/2021
Project explores possible housing typologies based entirely on water. It consists of several branches of designs for different functions. The main goal is to connect the city with the water seamlessly and create typology, which can be applied on different input conditions. This can be achieved thanks to WFC, which can create endless possible aggregates that are applicable on any given state of input landscape.
107
04 PROTOTYPES Fabrication experiments
109
MATERIAL MORPHOLOGIES Aggregation formal study
Internet is full of images. Creating an appealing render of unreal, digital geometries that stays within the borders of computer screens is most of the time not convincing enough to reach the wider audience outside our community. Our interest in Subdigital is therefore to transform the digital results of our design to the real world, to bridge between digital and physical.
It seemed difficult, if not impossible to fabricate and materialize a complex and compelling aggregated structure using conventional methods. Current parame‐ tric design tools are creating spectacular results on the computer screen. Not all these geometries are possible to recreate with the limits of physics laws and fabrication methods. Most of those design tools required use of voxelization, a brute force of geometry, to turn the data into matter. It mostly required timeconsuming process of 3D printing the complex objects, or tedious man-power driven work, assembling the multitude of unique components.
Prototypes
111
Formal study
What if we created a method that would grant us the possibility of easier fabrication without losing the complexity? Previously available tools were o�en limited to define the geometry within the limits of one material. It o�en takes some level of post-produc�on, to define a coherent object with mul�ple materials.
How to design a system of multiple weaved aggregated structures? Aim of this case study was to apply the Wave Function Collapse (an algorithm, at that time we were developing an implementation of this algorithm into our computational tools) in design prepared for fabrication, test the detai‐ ling of connections between elements, and to test material possibilities. Our implementation of the WFC algorithm helps us turn data into an aggregate of well-defined discrete elements of several types that connect to each other in a prescribed way. The elements are designed with digital pre-fabrication in mind, they never overlap and never fall into a wrong place.
Variations
We defined one type of connectors for the elements of one material type. The rules defined within one type ensure, that the modules of the same type have some kind of connection or relationship between one another. Various rules are defining how these one-material elements are aggregable within the system. Together having three materials means having three types of connectors with own rules. Another type was then also defined due to inter-material interactions. Indifference and exclusion rules between the units of different materials ensure their coexistence and intertwined character of the structure. WFC system of Material Morphologies is therefore based of two main ideas – rules of connections and rules of indiffe‐ rence and exclusion. Precisely defined connections between units of one material not only arrange a structure of predictable technical detail for physical assembly of the structure, but also creates a “flow” of material in the struc‐ ture. After all the necessary information is assigned, rules and connectivity defini‐ tions necessary for our tool using the WFC algorithm will fill a defined space. Using the design principle based on local connections, not global appearance allowed us to unify the construction details without having to compromise the formal complexity.
113
Modules and connection rules The name Material Morphologies refers to the complex landscape of several units made of a few of mate‐ rials. One material creates one layer of landscape, multiple layers coexist and intertwine, forming one object. The aggregated structure creates coherent flow of materials with changing spatial characteristics. We evaluated the structure by aesthetic and spatial criteria, considering it to be a proto-architectural object. We have developed a design-oriented version of the Wave Function Collapse aggregation method that can be later used for partial tasks in architectural design. A software tool that can be used to generate a multitude of abstract and applied examples in various scales.
METAL
PLEXI
WOOD
Result
What if we created a system that is defined by finite number of repeating modules of different materials with its own inner rules of connectivity within itself and in between these materials?
METAL
PLEXI
MATERIAL LAYERS
WOOD
RESULT
115
Materialization
The whole WFC system follows and
easily located and assure quick and
obeys the laws of a rasterized 3D
effortless assembly of the elements in
space. Discreet elements were
physical model.
designed with the intent to behave
This way the finished object can stay
and fit within this kind of space as
organic and fluent and remain the
well. Of course, that does not neces‐
order and inner organization neces‐
sarily mean to stay trapped within the
sary for creating a documentation
borders of boxes with the design of
and following materialization of the
discreet elements entirely. The inevi‐
digital model.
table requirement for the algorithm to successfully compute the result are the locations of the connectors. It is the location between two slot faces of the invisible rasterized space that holds all the information, all the rules and relationships necessary for assembling pieces together.
Exactly this had proven to be not a limitation, but an advantage while fabricating and assembling physical model. Not all slot faces need a physical connection. Some connec‐ tions stay hidden within the coherent discreet element that spans across multiple slots of the space. Some places of connections, by the pre-de‐ fined rules of indifference can stay empty. The remaining places of contact are consequently not neces‐ sary creating a regular rasterized grid, but still are regular enough to be
How to turn the digital image into a physical object?
Exhibition
This project was a part of the Studio Architecture III Vysoká škola uměleckoprůmyslová v Praze exhibi‐ tion at Designblok, Prague Internati‐ onal Design Festival 2020. Many thanks to our team!
Mimi Löscher (FAD STU, Die Ange‐ wandte), Suulsak Sk, Eva Kvaššayová (UMPRUM), Ľuba Ondrejkovičová (FAD STU), Hugo Fekar (UMPRUM), Ján Pernecký (UMPRUM / Subdigital), Tomáš Tholt (FAD STU / Subdigital), Janči Tóth (Subdigital), Michaela Krpalová (AFAD / Subdigital), Kristyna Uhrova (Subdigital).
Great work on digital fabrication of components was done by 4from media, sro and Colab Slovakia.
117
119
121 Rendering by s.h.e. renders
05 WORKSHOPS AND EVENTS
123
SUBDIGITAL SUMMER SCHOOL 2020 How it started!
In the summer of 2020, a group of authors Ján Pernecký, Tomáš Tholt, Ján Tóth, Michaela Krpalová, Kristýna Uhrová, Hugo Fekar, Alexander Kupko, Eva Kvaššayová, Miriam Löscher and Ľuba Ondrejkovičová prepared a research project, the result of which is a proposal to adapt the mathema‐ tical method / algorithm Wave Function Collapse for architectural design purposes.
The subject of Subdigital Summer School 2020 was current and near-fu‐ ture big topic in computational design, prefabrication and discrete design. The early objectives were to identify the present state of the discrete design scene, as well as to learn and channel the mindset the principles of wave function algorithm while develo‐ ping a comprehensive software tool that would support such design processes.
Summer school desk crits
Within the span of summer months, we consulted our progress with guest specialists of various backgrounds. With their help we acquired an insight from theoretical and academical point of view, trough the view of software developers. We met and discussed with technologists and professionals in computational design, digital fabri‐ cation and robotics as well as enduser specialists, on the for interdisci‐ plinary collaborations between art and tech community, and the UX professionals.
Guest reviewers Imro Vaško/UMPRUM Shota Tsikoliya / UMPRUM Martin Kossuth / MORE Aldo Sollazzo / Noumena / IAAC Michal Hladký / EHMKK 2013 Lucia Dubačová / Sensorium Martin Uhrík / DataLab Roman Hajtmanek / DataLab Alessio Erioli / Co-de-iT
125
ONLINE WORKSHOPS 2021
127
129
Subdigital 2021