Daily #4: Procedural City

I’ve been enjoying reading the subreddit over at /r/proceduralgeneration lately, and took some inspiration from some posts by Martin Evans on procedural generation of cityscapes. I’ve always wanted to try my hand at procedural city generation, and Martin’s post had a great explanation of the “Interactive Procedural Street Modeling” paper by Chen et al. (2008).

It took a little while to wrap my head around how to approach it with Houdini, but I eventually got the OBB Parceling method working. It basically splits each primitive along its shortest axis, as defined by its oriented bounding box, and then repeatedly applies the same technique to the resulting primitives.

My approach worked as follows:

  1. I arbitrarily defined some curves

    Curves

  2. Next, I used one pass of the OBB Parceling approach to define the roads (added an offset to the Voronoi split)

    Roads

  3. I repeated the same steps, this time without an offset, to define the lots or buildings

    Lots

  4. Finally, I extruded each lot to a random height with some noise added in to group heights together

    Extruded

Throwing some water and land geometry on produced the following:

Birdseye

Which gave a nice skyline view of my procedurally generated city:

Skyline

For anyone interested, an image of my node network can be found here.

Updated: