Testing out procedural city 3d-model generation

3D modeling of cities and maps are my old passion, a really inspiring subject. Seeing a nice city scene first hand, I’d like to sit down, model the same view in 3d and render stylishly.

I made the most recent sketches for city modeling 2016-2017. At that time, I sketched some generic city in Crete, Greece, and also the something in the style of the city center of Prague. The goal was not to replicate anything existing exactly but rather finding the templates and parameters for a partially automated model generation.

At the time I wrote rules, where convex quadrilaterals were recursively subdivided into convex quadrilaterals and roads were placed along the division lines. The rules for accepted subdivisions and the placement of roads included values such as acceptable angles of the corners, aspect ratio, and the quadrilateral’s resemblance to a square, rectangle, and other forms.

Extremely rough sketches of the city were created to function as the starting points for the recursive city model generation. I tested models with ten to eighty quadrilaterals in the start. The routes to and from the city were created by dividing a quadrilateral in two along the line where a road was needed, and by setting that division as 100% road.

A simple transport simulation determined the generation of roads. Dense population and dense road network were created in the areas where it best served solving the transport problems. Sparse road network and lower population density were created for other areas.

I did not originally produce good graphics for this project. I hope to supplement this project soon and write an article with visualizations of the road networks. If the project were continued, I would create the graphics with DirectX or HLSL. I’d also like to create an interactive mode where you could fly around the 3D models.

If the rules invented so far do not generate a sufficiently interesting city, it will be necessary to combine multiple techniques and come up with more rules. I do not know yet whether the city generator will be limited to generating a street map or whether it is possible to get it to produce procedural buildings.

I think that the inclusion of house and building generators to the city generator would make the project scope too large to handle at this time. Including a building generator for one type of building would, of course, be acceptable, and it could be used to test the code. A city made entirely from buildings of the same type would not seem to be very interesting, but at least it could be used to demonstrate the concept.

I’d hope to see some interesting recursively generated city maps if I were to continue this project. Sounds like this is now one of my favorite projects to do some prototyping with. Prototyping is pretty fun and it can produce some interesting results.

Perhaps I’ll share news and pics about this project gradually as the prototype gets developed. If we’re lucky we’ll get some nice city roadmaps as a result and perhaps an elegant procedure or formula for creating more maps. If we’re not that lucky, at least we’ll learn something.

Leave a Reply

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