Procedural
Landscape
fall 2021 | coding for design | panagiotis michalatos
The landscape is designed wholly with C# inside Grasshopper. The code responds to input curves representing roads and rivers as well as meshes for buildings. Landscape height and river depth are functions of distance and the planting algorithm is based on elevation and mesh normal direction.
The script generates and manipulates points, vectors, lines, curves and meshes using if-else loops. Specifically, it focuses on extracting mesh faces based on conditions and translations of geometries.
roads
roads
z1 dominates
Base Topography
z0 = 10cos(0.1x)*sin(0.1y)
z1 = 0.3y
t = ((x+y)/2)^2
z = z0(1-t) + z1*t
z0 dominates
roads
water
building
Road Section
Road height determined by point on the input street curve. It does not fit exactly with the topography mesh but instead protrudes or cuts in.
River Section
Wider on north side. Depth controlled by distance from river endpoints.
S
N
Mesh Partition
Topography mesh separated based face normal vectors. North facing meshes colored in light green, and south facing ones in dark green.
Planting Algorithm
bushes + grass
on north facing
meshes
increases
in size
and height
trees + grass
on south facing
meshes
Iterations
different inputs and results