CityEngine Modelling Older Urban Areas (the power of random)

How does one model the random nature of urban areas?

Whilst modelling planned areas can be relatively easy, modelling existing urban areas convincingly is difficult.   It’s the random nature of human existence I guess.   But there’s they key, ‘random’, sometimes when modelling in 3D you need to add elements that aren’t planned, when I look at photo realistic models it’s the little details that count.

We’re doing projects in the Middle East that require some 3D modelling, but some new areas and zones are up against older established areas.   We haven’t got the resources of google to model exactly what’s on the ground but with CityEngine we can give  a good approximation of visualisation purposes.

With CityEngine of course!

Okay it’s a bad choice of image (above) but this rule file I’m working on adds random elements on a per floor level to my traditional building types within an historic Arabic core.   You can see we’ve got covered market streets (I need to add some pillars), but the buildings now have air conditioning units and balconies in a random manner.  The balconies are placed on the main buildings based on a set of variables one is depth from building, so some are recessed (more normal in this part of the world) and some are protruding.

I’ve got a set of door types that are only placed on the front of buildings within a set of parameters as well as windows and shopfronts.   Then there’s the roof with water tanks, and satellite dishes.   Except the satellite dishes all point the same way, so my rule file lets me globally rotate every satellite dish in the model.

The air-conditioner units and balconies are sketchup models exported as dae or obj files.   Because it’s rule based I can also randomise those as well, CityEngine in fact, lets you pick assets using a wild card ‘*’ so I can choose a specific balcony or in this case a random one:

asset_balcony = fileRandom(“assets/detailedBuildings/BuildingFeatures/balcony*.obj”)

The line above will pick any obj file that starts with the word balcony, what’s useful about this is that I don’t have to add additional lines to my code to my rule file to add new balconies, I can just export from SketchUp straight to that directory, refresh and the rule file will pick it up.

This lets me model large areas with relative ease and with a small change to the rule file my model can look totally different.