-
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) or Sop Import nodes.
- 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
Create material: Quick Surace Material and then Assign Material or Material Linker. 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