-
Notifications
You must be signed in to change notification settings - Fork 111
procedural city
This project aims to design and implement procedural workflow for city modeling.
The Building Profile is a starting point for building creation that defines building shape. If we extrude the Building Profile on a certain distance (building height) we get the building "Mass Model".
We split the building mass model into facades. A facade is a part of a building between two corners.
In Houdini, we split Building Profile into primitives (see Building Profile example image above that has 4 primitives: 0, 1, 2, 3) and each primitive will be a facade base. Extruding the facade base will give us a facade.
We split the facade into levels. Each level design is defined by shape grammar stored in a "BDF" JSON file. Level can contain one or more floors.
BDF stands for Building Definition File and contains building style and assembly data:
{
"levels":
"0": {
"Level_index": 0,
"Level_height": 3.2,
"Level_rule": {
"F0": ["C|(A)|C", "C|(B)|(C-D)*|(B)|C"],
"S0": ["C|(W)|C", "(A)"]
}
},
"modules": {
"A": {
"width": 2.4
}
}
}
- From "Geo" context: Scene Import (All) node.
- From USD File: Sublayer or Asset Reference nodes
- The SOP Modify node, Unpack USD Primitives to Polygons check box
- The SOP Modify node, go inside, and create the Unpack USD node.
The USD ROP node, set Save Style to Flatten Stage
Add node Name to geometry nodes to get different objects in USD
USD/Solaris geometry prep: define material assignment by Houdini groups (create a group for each material on geometry), then if you add a "Name" node after groups, USD file will contain mesh divided by groups and in Solaris, you will be able to assign materials by those groups.
Remove internal edges of a polygon: Divide SOP > Remove Shared Edges