Tutorial 16: Using CityEngine Like an Urban Planner

This looks suspiciously like a) a Led Zeppelin "crop circles" album cover; b) alien graffiti from a M. Night Shyamalan stinker; c) the opening of "Ben Casey" ("man, woman, birth, death, infinity"). Actually, it is the opening exercise in Tutorial 16, where we start to learn CityEngine in Urban Planning context.

These shapes highlight the CGA rules from this tutorial, and we are encouraged to experiment the parameters on each shape.

  • The first shape uses Zoning.cga, which defines the envelope that encloses all development on a site. We can set the dimensions and setbacks, define maximum heights for buildings and visualize the envelope with a wireframe skeleton or a colored translucent box.
    .
  • The second shape uses Pointmarker_To_FootprintShape.cga, where we can draw a small polygon marker shape anywhere we want a building instance and transform the shape into one or multiple buildings.
    .
  • The third shape uses FootprintShape_To_Building.cga, the successor rule to Pointmarker_To_FootprintShape.cga. Without this rule, you would be left with just a building footprint.
    .
  • The last three shapes use the Landscaping.cga rule, the first with the Waterbody start rule, the second with a Trees start rule, the last with a TreeAlley start rule. This is where trees are placed based on generated point features.

While I’m learning CityEngine and the CGA code that drives it, I also recognize I need to think like an urban planner as well as a CGA programmer. Tutorial 16 has provided me with a taste.  I know this is the thought process I’m looking for because the exercise was authored in collaboration with Matthias Buehler, formerly of Garsdale Design Ltd. in the UK (a firm I’m following) and the ESRI R&D Center in Zurich.

Here are my takeaways from the tutorial:

A Point Marker Shape

Pointmarker_To_FootprintShape.cga – this rule creates a footprint shape from “point marker” shapes. The resulting footprint shape has length and depth and a form (rectangle, L-Shape or U-Shape). We can create rows of identical buildings and space them along a grid. When I began to work with CGA, I was a bit mystified by “Lot” always being the starting rule. Did this mean all rules applying to a lot should branch out from “Lot”?  Well, NO. It was OK to draw tiny placeholder shapes, assign rules to them and place them where I wanted. I didn’t know they were called point markers.

A Footprint Shape

FootprintShape_To_Building.cga – the Pointmaker rule leads into this one, where we create a building. In addition to building style, we can assign building usage by color-coded floors: Here, the ground floor is colored for Merchantile, floors 2-4 for Office and floors 5-7 for Residential.

A Building Shape

visualizeBrokenLaw - under the FootprintShape_To_Building rule in the Shape Inspector. When enabled, any structure that violates a zoning parameter is highlighted in red. In the first two illustrations below, the top two floors of one building clearly pierce the top of the zoning envelope. In the third, all buildings are contained within the limits of the zoning envelope.

All of the rules appear contextually in the Shape Inspector, where their parameters can be adjusted. Again, we are encouraged to play with the rules. I created three buildings, a water pool and some tree plots on a lot zoned for public use with a setback of 10 meters and a maximum allowed building height of 20 meters.

Finally there is such a thing as a "helper" CGA script, in this case, one that is temporarily applied to a parcel to extract its total area. The figure is applied to individual buildings on a parcel in the parcelArea parameter of the FootprintShape_To_Building rule.  This is required so that each building can be included in the Floor-to-Area Ratio (FAR) calculation that appears under the Reports tab of the Shape Inspector.

Oh... and what about those neat little numbers that show dimensions around each polygon? Very handy.

Leave a Reply

Your email address will not be published. Required fields are marked *