What makes Manhattan ``Manhattan''? We need to appreciate this in order to design our tools. One aspect is the famous ``Manhattan grid-like blocks''. But as we all know, this geometry breaks down in downtown and is upset by the presence of Broadway. Manhattan has many neighborhoods, each with their own characteristics. E.g., most tall buildings in Manhattan are in the financial district and in central midtown area. We can generate a model with this property by specifying statistical parameters such as the average height of buildings for a neighborhood. This means that the heights of individual buildings are generated randomly!
Another aspect of our use of statistical properties is its top-down propagation properties. Neighborhoods are broken down into blocks. When we specify a statistical parameter for a neighborhood, this parameter in turn generates similar parameters for each block in the neighborhood (again, this is done without human intervention). E.g., if Greenwich Village has an average building height of 60 feet, and (say) it has 4 blocks, then our program may make the average heighs of these blocks 100, 60, 40 and 40 respectively. Next, in the block with average height 100 feet, the distribution of actual building heights might range from 180 feet to 25 feet. Thus global parameters are propagated from neighborhoods to blocks to buildings.
For our project, we view Manhattan as the union of 10 super-neighborhoods:
Another critical remark about our model is the extensive use of textures. This is the only way to generate believable scenes of any complexity!