0% found this document useful (0 votes)
35 views32 pages

BuildingEngine Node Guide - v3.5

The document provides a guide for nodes in the buildingEngine module, which aims to procedurally describe buildings. It introduces CGAShape, which uses shape grammars and rules to iteratively generate building shapes. It discusses issues with traditional rule-based systems and proposes a node-based visual approach. It also describes buildingEngine node inputs, filters to specify which geometry to operate on, and products to label output geometry. Key nodes like CreateBase and Repeat are outlined.

Uploaded by

dagush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views32 pages

BuildingEngine Node Guide - v3.5

The document provides a guide for nodes in the buildingEngine module, which aims to procedurally describe buildings. It introduces CGAShape, which uses shape grammars and rules to iteratively generate building shapes. It discusses issues with traditional rule-based systems and proposes a node-based visual approach. It also describes buildingEngine node inputs, filters to specify which geometry to operate on, and products to label output geometry. Key nodes like CreateBase and Repeat are outlined.

Uploaded by

dagush
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

buildingEngine

node guide
skylineEngine is an urban procedural modeling system with a module-based
approach. Everything in skylineEngine is made of modules, some of them in
Python code, others as elegant Houdini Digital Assets (HDAs). This document
is a guide for the nodes in one of these modules, buildingEngine, created for
procedural description of buildings.

This house is the Raccolet House: We took the assets (doors, windows,
columns, etc) from the model from Daz3D (www.daz3d.com), and made a
fully procedural version of it!

skylineEngine buildingEngine module manual

1 - Introduction
The buildingEngine module, originally a stand-alone project called XMLShape,
aims at the development of a visual implementation of the paper [Mller06]:
P. Mller, P. Wonka, S. Haegler, A. Ulmer and L. Van Gool, Procedural
Modeling of Buildings, in Proceedings of ACM SIGGRAPH 2006 / ACM
Transactions on Graphics (TOG), ACM Press, Vol. 25, No. 3, pages 614623.
buildingEngine is written in a mixture of Python and Houdini Digital Assets. It is
intended as a procedural modelling and rendering tool.

Figure 1: buildingEngine in action


The visual language, as well as some important possibilities it opens, is
described in the article:
User-Friendly Graph Editing for Procedural Buildings, Gustavo Patow,
IEEE Computer Graphics and Applications, vol. 32, no. 2, Mar./Apr. 2012,
pp. 66--75; doi:10.1109/MCG.2010.104.

skylineEngine buildingEngine module manual

2 - CGAShape
In this section we provide an overview of shape grammars (used for example in
architecture) and the problems that occur during visual editing, and our proposal
to solve them. Here, we loosely follow the notation introduced by Mller et al. in
the above-mentioned article, although the concepts work for other grammars as
well. The main concept of a shape grammar is based on a rulebase: starting
from an initial axiom shape (e.g. a building outline), rules are iteratively applied,
replacing shapes with other shapes. A rule has a labelled shape on the left
hand side, called predecessor, and one or multiple shapes and commands on
the right hand side, called successor. Commands are macros creating new
shapes or commands.
predecessor
SuccessorCommandA;
SuccessorCommandB;
Traditionally, four commands were introduced in that paper: Subdiv, that
performs a subdivision of the current shape into multiple shapes, Repeat that
performs a repeated subdivision of one shape multiple times, Component Split
(called Comp) creating new shapes on components (e.g. faces or edges) of the
current shape and Insert of pre-made assets replacing a current predecessor.
Traditionally, during a rule application, a hierarchy of shapes is generated
corresponding to a particular instance created by the grammar, by inserting rule
successor shapes as children of the rule predecessor shape [Mller06] [Lipp08].
This production process is executed until only terminal shapes are left. An
example rulebase is visualized in Figure 2(a). The figures follow the visual
notation introduced in [Lipp08]. One of the main potentials of shape grammars
lies in variations they can produce, as each created instance could look different.
Of course, these variations are available only when the designer explicitly
introduces them as parameters or specific selectors in the rulebase design
process. However, the rule-based nature of shape grammars introduces some
already identified (and important) shortcomings [Lipp08]: the dependency
between rules is not clearly visible, which makes it complex to understand their
direct effect on the model being created. This results in difficulties for
understanding and exchanging rulesets created by different artists. The main
reason for this is the disassociation between the graph of rules used and the
tree of products generated. On the other hand, tools that follow a node-based
display of operations like Autodesks Maya Hypergraph shader editor and
SideFXs Houdini are very popular among artists. These are tools that use a
very intuitive (and familiar) node-based visual streaming paradigm that is fully
oriented to operations: artists control the operations that are performed on the
data, which is equivalent to controlling the data itself.

skylineEngine buildingEngine module manual

(a)
(b)
Figure 2: (a) A visual representation of a simple rulebase which starts by
selecting two facades (L and F) from the input mass model, and applying a
common window pattern and a door (also shown in the Figure). The rules
themselves form a graph (b). We found this disassociation to be awkward and
error prone, being much simpler to write the rules directly at the graph.

3 - Inputs, Outputs, Filters and


Products
Here we will introduce a few important characteristics of buildingEngine: the
node inputs, and the definition of filters and products. To explain these concepts
better, lets follow a simple example: a two block building as shown in Figure 3.

Figure 3: a two-block simple building and its corresponding network.


First of all, any buildingEngine node is able to accommodate any number of
inputs (the current implementation allows about 20, but there is no reason we
cannot raise that number if needed). Internally, all buildingEngine nodes use a
foreach node to apply its operations to all primitives that are wired to it.
Observe that we say primitives: even if we wire a single node to an input
4

skylineEngine buildingEngine module manual


connector, the operation will be performed on a primitive-basis, not on an input
node-basis. An example of this can be seen at Figure 3, where the two
CreateBase nodes on the top are wired into the same Comp node.
But this is not the only aspect to take into account. Any buildingEngine user
must know about filters and products. Internally, buildingEngine uses group
labels as defined by Houdini to attach identifiers to the output geometry of a
given node. For example, the two CreateBase nodes on the top of Figure 3 we
have just mentioned attach the group label building to their output geometry.
They specify this label by filling the product textbox with the string building.
Some nodes define only one output, like Repeat, CreateBase, Insert, etc.
Others can define multiple outputs with their respective labels. There are two
nodes that can generate multiple outputs simultaneously: Comp and Subdiv.
Now, every buildingEngine node should be tuned to listen only to the groups
we want it to operate on. For instance, the Comp node we mentioned needs to
be tuned to input geometry with the building group label. This is done with
the filter textbox just on top of any buildingEngine HDA interface.
As happens with any other Houdini node, you can specify multiple labels to be
used as filters. For instance, the node Subdiv2 in Figure 3 produces a
subdivision of the input geometry, and one of its outputs is marked with the
label middleWindows. Also, the node repeat1 in the same figure generates
geometry labelled as floor. Both are wired into the same repeat2 node, which
has its filter set to middleWindows floor, so this Repeat node will process all
geometry coming through its wires with these only two labels. Observe that
node Subdiv2 also produces geometry with label door, but the repeat2 node
ignores this, as its filter does not include that keyword.
So, here we can identify one of the main differences between buildingEngine
nodes and traditional Houdini nodes: if you do not set a node filter field, or if
you set it with a wrong label, it will not perform any action, no matter what is
wired into its input.

Tip
Labels are not erased by the operations through the nodes, so you can track
labelled geometry all the way downstream. This way, if a face was labelled
faade, all its descendant nodes (floors, windows, balconies, door, ) will
also be labelled the same way. So, it is not uncommon to have a piece of
geometry having several labels attached to it: faade, firstFloor,
window

skylineEngine buildingEngine module manual

Extra hidden labels


Most buildingEngine nodes also add hidden labels to their product shapes.
That is, labels that are not specified by the user, but added automatically by the
system for every shape provided as output. These extra labels are intended as
ways to help the designer to work on a certain product shape that results from a
given node, without touching its brother shapes. For instance, imagine we
have a Repeat node, which generates the different floors of a building. Also,
imagine this Repeat is labelled as floorsRepeat, and that it produces 5 floors. In
that case, each floor will have the repeats product label, plus an extra label that
is different for each floor, from __floorsRepeat__0 to __floorsRepeat__4. In the
following image you can see this example. Observe that any other polygon that
is processed by the same node has the same numeration.

__floorsRepeat__4
__floorsRepeat__3
__floorsRepeat__2
__floorsRepeat__1
__floorsRepeat__0
__floorsRepeat__0

skylineEngine buildingEngine module manual

Common standard parameters


filter
product n

The groups from the input nodes that we want this


node to operate on.
The product labels this node produces. For some
nodes, there is one product, while for others there can
be any number of resulting products.

skylineEngine ! buildingEngine module manual

4 - Node Descriptions

CreateBase surface node


Creates an initial six-sided rectangular building mass model.
See also: Extrude, Houdinis Box
This node is very similar to the traditional Box node in Houdini. Actually, it
internally uses a Box to generate the mass model!
In general, this node is a Box node wired to a Group node to generate the label
for the rest of the pipeline.
Tip
This node input is not really used, so connecting anything to it is not very
useful!

Parameters
Filter
Product
Size
Center

The groups from the input nodes that we want this


node to operate on
The product label this node gives to the generated
(square) mass model.
Size of the box mass model along xyz axes.
Position of center of box mass model.

skylineEngine buildingEngine module manual

Example Files
simpleBuilding
The CreateBase node is used twice to create the mass model of these twoblock building.
In the image you can see the two nodes wired to a Merge node (out of the
image) just for visualization purposes.

skylineEngine ! buildingEngine module manual

Extrude surface node


Creates an initial building mass model by extruding an input
curve.
See also: CreateBase, Houdinis PolyExtrude node
Again, another convenience node that is intended to introduce the traditional
Houdini PolyExtrude node into the world of buildingEngine. Basically, it is only
the concatenation of a selector (Delete), a PolyExtrude and a Group nodes.

Parameters
filter
product
height

The input group label to select the geometry to be


processed.
The label for the resulting geometry
The height of the extrusion.

Example
Simple use of Extrude nodes
One possible way to go with this node is to generate a curve with a Houdini
Curve node, and then give it a group name with a Group node (In this case, we
used lot), and finally wire the result to the Extrude node, setting its filter to the
same name (again, lot).

Curve

Group Geometry
(Group Name = lot)

Extrude
(filter = lot)

10

skylineEngine ! buildingEngine module manual

Comp surface node


Divides a mass model into its component faces.
See also: CompSelector, CreateBase, Repeat, Subdiv
The Comp node classifies the incoming geometry according to its normal in
world coordinates. Actually, each component the model is divided into is
evaluated in order, in a way such that if a piece of geometry can be classified in
two different ways (for instance, the side of a building can be both right and
sides), the first one to classify it has precedence over the following ones. In
general, this is done by looking the largest component of the surface normal
vector, and classifying the polygon depending on which is this largest
component, X, Y or Z.
Tip
This node works in world coordinates, so it always processes geometry with
respect to the coordinate axis! Use the Front Dir to change this reference
direction.

Parameters
Input filter
Components
Enabled n

Selector n

The filter parameter


The number of components we want to obtain from each
input mass model.
If activated, this component will be taken into account. But, if
this flag is deactivated, this component will be ignored and all
geometry will be processed directly by the next component
definition.
The possibilities implemented for classification are
front

Takes the faces whose normal has its main


direction in Z.

back

Takes the faces whose normal has its main


direction in -Z.

left

Takes the faces whose normal has its main


direction in -X.

right

Takes the faces whose normal has its main


direction in X.

11

skylineEngine buildingEngine module manual

Product n
Front Dir

top

Takes the faces whose normal has its main


direction in Y.

bottom

Takes the faces whose normal has its main


direction in -Y.

side

Takes all faces whose normal is mainly horizontal


(Z component of the normal is NOT the largest
component)

all

Takes all faces no matter the value of their


normal.

The name of the selected product


The direction of the frontal part of the building. Very useful for
rotating the whole building while preserving its shape.

Example Files
simpleBuilding
In this example, the two blocks created for the mass model are classified into 3
components with the following order:
1. front
2. side
3. top
This will result in the input geometry being divided in three sets, one for each
label. In the following figure we can see the result of such a partition of the input
geometry (the two-block mass model created with the CreateBase nodes)

font

side

top

12

skylineEngine buildingEngine module manual


If you select the Comp node as visible, youll see the same as taking the view
directly from the CreateBase nodes, but this geometry is actually split into
three very different groups.
However, observe what happens if we invert the order of the first two
component selections:
1. side
2. front
3. top

side

front (empty!)

top

As we can see, the faces corresponding to the faade of our buildings are
selected as side, and there is no geometry associated with the front label!
However, the top group label is not changed, as all the changes we did are
with respect to normal vectors with main horizontal components.

13

skylineEngine ! buildingEngine module manual

Subdiv surface node


Performs a subdivision of the input shape into smaller
shapes..
See also: Repeat, Comp, CompSelector
The Subdiv node subdivides the input shape along the specified axis into a set
of smaller sized shapes.
The geometry of the current shape is intersected with a box whose main plane
is perpendicular to the split axis. This intersection is repeated at every position
between two blocks (i.e. at Value1, Value2, ... Valuen-1).
Hollow meshes are open after the cut, i.e. cutting planes does not introduce
new surfaces to preserve the volume.
Tip
The Subdiv operation can be performed onto volumes (e.g. mass models),
resulting in new smaller volumes that were cut at the same position the
individual surfaces would be.

Parameters
Input filter
Axis
Divisions
Enabled n

Approximate n

Value n
Product n

The group label used to select the geometry to be


subdivided.
Can be X, Y or Z, indicating the axis along which the
splits are going to occur.
The number of parts the input shape is going to be
subdivided.
For each subdivision, tell the node if this division is
active (enabled) or not. In the latter case, it will be
completely ignored as if it werent present in the list of
divisions to perform.
If this flag is set, the value defined by the Value n
parameter will be taken as an approximate indication of
the desired size. Basically, after all non-approximate
subdivisions are made, the remaining space is
distributed to all approximate sizes. In this case, the
sizes are used as relative weights to assign the
absolute sizes.
The size of the subdivision to perform. Its interpretation
depends whether the approximate flag is set or not.
The group label to assign to each subdivided geometry
shape.
14

skylineEngine buildingEngine module manual

Example Files
simpleBuilding
Starting from the front faces identified with the Comp node, we had the
following situation for the front geometry, belonging with faade group:

Now, we apply a split operation with the following parameters:


Axis: Y
Divisions: 3
Product name
bottom
middle
top

Approximate
No
Yes
No

Value
3
1
2.5

With the following visual result:

15

skylineEngine buildingEngine module manual

As you can see, the middle division has a height that accommodates to the total
height of the input geometry.
Note
If a division in the Subdiv node is relative and all the others are not, the value
assigned to the split operation is irrelevant, as any geometry left from the
absolute cuts will be in this division.

16

skylineEngine ! buildingEngine module manual

Repeat surface node


Performs a repeated subdivision of the input shape into
smaller shapes.
See also: Subdiv
The Repeat node performs as many subdivisions as possible along the
specified axis, depending on the Value parameter.
Basically, if the length along the axis direction is L, the number of divisions will
be

(
(

)
)

$! floor L
Value
N =#
L
!"round Value

if Approximate = FALSE
if Approximate =TRUE

The different situations can be compared in the following image, where we have
set approximate divisions on the left and non-approximate divisions on the right.

As you can see, when approximate divisions are chosen, you can only specify
an approximate size, but all divisions will be equal. Instead, if divisions are not
approximate, all will be exactly the same size, but there can be some geometry
left that is much smaller than the specified size.

Parameters
filter
Product
Axis
Approximate
Value

The group label selector


The group label for the produced geometry
The axis along which the repeated subdivisions occur.
Can be X, Y or Z.
If the value indicated by Value is to be taken as an
approximate suggestion of the subdivided sizes, or as
an absolute value.
The value of the size for the repeated subdivisions

17

skylineEngine buildingEngine module manual

Example Files
simpleBuilding
For example, if we take the middle geometry that comes from the Subdiv
node, as shown on the image,

And we apply a Repeat operation with the following parameters:


Axis: Y
Approximate: True
Value: 2.5
Then, we get

18

skylineEngine ! buildingEngine module manual

Insert surface node


Inserts new geometry in the space defined by an input base
shape.
See also: Houdinis File node, InsertTex, InsertObj
Simply replaces a piece of geometry with other geometry from a file on disk

Parameters
filter
Product
iAsset File
Translate
Rotate
Scale
Relative x
Relative y
Relative z

The input group label to select the geometry to be


processed.
The label for the resulting geometry
The file to be loaded to replace the input geometry.
X, Y and Z translations of the inserted geometry
Relative rotations of the inserted geometry. Just to
orient it the way we like it.
The scaling to be applied to the inserted geometry.
If the x size should be kept relative, as a multiplicative
factor of the input geometry, not the inserted one, or
absolute, as specified directly by the Scale parameter.
The same in y
The same in z

Example Files
simpleBuilding
At the following images we can see the Insert node in action:

19

skylineEngine buildingEngine module manual

Just if youre wondering what the relative values mean, compare the following
image with a relative geometry in the local z direction with the above one (with
an absolute size value):

20

skylineEngine ! buildingEngine module manual

InsertTex surface node


Inserts new textured geometry in the space defined by an
input base shape.
See also: Houdinis File node, Insert, InsertObj
Simply replaces an input geometry with another one with an texture applied.

Parameters
filter
Product
Texture Map
Scale

The input group label to select the geometry to be


processed.
The label for the resulting geometry
The file to be loaded to replace the input geometry.
The scaling to be applied to the inserted geometry.

Example Files
simpleBuildingTextures
At the following images we can see the InsertTex node in action:

In this case the windows are just textures, not 3D geometry. This enormously
decreases the memory requirements of any building created with this engine,
21

skylineEngine buildingEngine module manual


but also limits the distance the observer can be from these buildings without
noticing the lack of true geometry.

22

skylineEngine ! buildingEngine module manual

InsertObj surface node


Inserts geometry in the space defined by an input base
shape from an already existing geometry node
See also: Houdinis File node, Insert, InsertTex
Simply replaces an input geometry with another from a node in the current
session.

Parameters
filter
Product
Asset Object
Translate
Rotate
Scale
Relative x
Relative y
Relative z

The input group label to select the geometry to be


processed.
The label for the resulting geometry
A path to the node with the geometry to replace the
input geometry.
X, Y and Z translations of the inserted geometry
Relative rotations of the inserted geometry. Just to
orient it the way we like it.
The scaling to be applied to the inserted geometry.
If the x size should be kept relative, as a multiplicative
factor of the input geometry, not the inserted one, or
absolute, as specified directly by the Scale parameter.
The same in y
The same in z

Example Files
simpleBuilding_InsertObj
It works exactly as the Insert node, but by taking its geometry from another
node in the scene instead of from a file in disk.

23

skylineEngine ! buildingEngine module manual

Trans surface node


The Transform operation transforms the source geometry in
object space using a transformation matrix.
See also: Houdinis Transform
This node is intended to introduce the traditional Houdini Transform node into
the world of buildingEngine. Basically, it is only the concatenation of a selector
(Delete), a Transform and a Group nodes. Just a convenience node.

Parameters
filter
Product
Translate
Rotate
Scale

The input group label to select the geometry to be


processed.
The label for the resulting geometry
X, Y and Z translations of the inserted geometry
Relative rotations of the inserted geometry. Just to
orient it the way we like it.
The scaling to be applied to the inserted geometry.

Example Files
...

24

skylineEngine ! buildingEngine module manual

Roof surface node


Creates an initial six-sided rectangular building mass model.
See also: Box
A prototype roof node. Just something very basic to have some basic roofs as
primitives.

Parameters
filter
product
height
direction
incl

The input group label to select the geometry to be


processed.
The label for the resulting geometry
The height of the roof, to have a flatter or more steep
roof.
This chooses the main direction of the roof edge.
This defines the length of the roof top edge, and thus
defines the inclination of the upper edge.

Example Files
simpleBuilding
In the following figure we add one roof to each input geometry labelled as roof.

25

skylineEngine ! buildingEngine module manual

Exception surface node


Classifies some geometry in function of some specific
criteria, in order to create exceptional behaviour.
See also: comp, subdiv, repeat, selector
This node partitions the incoming stream in two geometry groups: the geometry
that is selected by the information provided in the tag and the expression
parameters, and the geometry that does not. The idea is to classify geometry
according to a given need to have exceptional geometric behaviour. Although
the idea is to seldom use it, in practice nothing prevents its usage to select large
portions of the building geometry. Beware that the primitive numbering changes
after an Exception node.

Parameters
filter
tag

Expression

Prod Selected
Prod Non-Sel

The input group label to select the geometry to be


processed.
A further group label to more finely select the geometry
to be differentiated. If this parameter is left blank, all
input geometry (that contains the group label selected
by the filter) will be selected.
An expression to specify which geometry to select.
Examples are:
!* selects none of the geometry
* selects all the geometry
a number selects only the primitive with the
corresponding number.
Other expressions as in the delete node.
The group label for the selected geometry.
The label for the geometry that was not selected.

Example Files
simpleBuildingWithException
In the following figure we can see that we have used an exception node to
select a given window and make it different to the others. To do it, we selected
window as input filter to affect only elements with that specific tag. Now, in the
example we used the value __repeat1__0 for the tag, selecting the first
element that was the output of the repeat1 node. This node is the one that
26

skylineEngine buildingEngine module manual


splits the upper part of the faade into floors; so taking the 0th element will
select the first floor just above the ground floor. And now, as expression, we
used 5, selecting the fifth window in the row. Observe that this actually means,
in our specific case, the second window starting from the left of the second wing
of the building.

27

skylineEngine ! buildingEngine module manual

CompSelector surface node


Divides a mass model into one of its component faces.
See also: Comp, CreateBase, Repeat, Subdiv
The CompSelector node classifies the incoming geometry according to its
normal in world coordinates. Actually, each component the model is divided into
is evaluated in order. In general, this is done looking the surface normal vector,
and classifying the polygon depending on the angle it forms with the specified
direction vector. If this angle is smaller than the specified dispersion angle, then
the polygon is selected. If it is larger, then the polygon is not selected.
Tip
As happens with the Comp node, this node works in world coordinates, so it
always processes geometry with respect to the coordinate axis. Use the Front
Dir to change this behaviour.

Parameters
Filter
Direction
Dispersion

ProductSel
ProductNonSel
Front Dir

The input group label to select the geometry to be


processed.
The reference direction used to classify the geometry
primitives.
The angle used to determine whether a polygon is classified
or not. The angle between the polygon normal and the
direction vector is compared to the dispersion, and the
polygon is classified as SELECTED if this angle is smaller,
and as NON-SELECTED if it is larger.
The label to add to a selected polygon.
The label to add to a NON selected polygon.
The direction of the frontal part of the building. Very useful for
rotating the whole building while preserving its shape.

Example Files
...

28

skylineEngine ! buildingEngine module manual

Selector surface node


Selects geometry based on their associated tags.
See also: Exception, Houdinis Delete node
The Selector node classifies the incoming geometry according to the labels
they carry. If any of the labels in the filter field coincides with any of the labels of
the input primitive, it will be selected. Otherwise it will be deleted.

Tip
This node simply works using the tags in the geometry. It basically is a
wrapper around Houdinis Delete node, but in buildingEngine style!
It is very useful for giving multiple tags a unique new tag (the tags are ORed).

Parameters
Input filter
Operation

Product

The filter parameter


How the rules below affect the geometry.
Delete selected

Delete the geometry that


matches the tag in the input
filter.

Delete non-selected

Delete the geometry that


doesn't match the tag in the
input filter.

The label for the resulting geometry

Example Files
...

29

skylineEngine ! buildingEngine module manual

Conditional surface node


The Conditional operation allows the generation of different
successor tags for different conditions of the parameters.
See also: Stochastic
It is possible to generate different successors for different primitives depending
on the evaluation of a set of respective conditions.

Parameters
filter
Products
Condition n
HScript n
Product n
Else

The input group label to select the geometry to be


processed.
Number of conditions and products to evaluate
A boolean expression that determines if the primitive
will be selected as belonging to this product or not
Whether the expression for the condition will be
evaluated in HScript or Python.
The label for the geometry that verifies the n-th
condition
The label for the geometry that does not verify any
condition

Example Files
...

30

skylineEngine ! buildingEngine module manual

Stochastic surface node


The Stochastic operation .
See also: Conditional
Analogous to conditional rules, buildingEngine permits stochastic rules, i.e.
creating variation using randomness. Each primitive will have a product label
chosen on a random selection based on the probabilities given for each product.
All probabilities are normalized, so entering 10, 20, 40, 30 is the same as
entering 0.1, 0.2, 0.4, 0.3.

Parameters
filter
Products
Probability n
Product n

The input group label to select the geometry to be


processed.
Number of conditions and products to evaluate
A float number giving the probability for the n-th
product
The label for the geometry that verifies the n-th
condition

Example Files
...

31

skylineEngine buildingEngine module manual

Bibliography
[Mller06] P. Mller, P. Wonka, S. Haegler, A. Ulmer, and L. Van Gool.
Procedural modeling of buildings. ACM Trans. Graph., 25(3):614623, 2006.
[Lipp08] M. Lipp, P. Wonka, and M. Wimmer. Interactive visual editing of
grammars for procedural architecture. ACM Transactions on Graphics,
27(3):102:110, Aug. 2008.
[Patow11] G. Patow, User-Friendly Graph Editing for Procedural Buildings,
IEEE Computer Graphics and Applications, vol. 32, no. 2, Mar./Apr. 2012, pp.
66--75; doi:10.1109/MCG.2010.104.

32

You might also like