Building a procedural city tool is a great way to learn Houdini and procedural modelling in particular. For pretty much all scripting inside the digital asset I used Python, with HScript and VEX kicking in on a couple of occasions. Terrain partitioning and building placement in particular required more scripting, because I wanted to give the user as much control over lot distribution without going into problems like intersecting geometry or funny-looking orientations.
Overall, given the short time I had to develop it and my own technical limitations, I could not take the resulting digital asset to the level of polish that I initially envisioned, but I did manage to take it just far enough to allow me to use it in the production of an animated short ("Surrogate City").
Some key features of the City Generator:
1. Multiple city centres visualized with metaballs.
2. Multiple lot partitioning algorithms (by area, aspect ratio, rectangularity etc.)
3. Supports 10 different digital asset buildings, each with fully controllable parameters straight through the citygen interface.
4. Efficient memory usage by means of using instancing on trees and other hi-poly vegetation
5. Full support for proxy geometry, greatly increasing viewport interactivity and loading times.
Note: the city generator wouldn't look too pretty if it wasn't for the great work of my colleagues, Jenny and Ewan, who did all the procedural building assets that I wired into the city gen.
Done in Houdini 15.0.313