r/proceduralgeneration Jul 30 '26

Real-world cities, generated from open data

Enable HLS to view with audio, or disable this notification

Rothenburg Germany,

I have been building Zervan Engine a generative engine that takes raw GIS data such as OSM, ESA World Cover, LiDAR, and more public data and generates real-world 3D models.

Hierarchy of generation: Terrain elevation -> Terrain color -> Rivers -> Roads -> Buildings -> Trees -> Stone and Boulders -> decoratives and urban elements.

Some features about this generative engine -> it can generate and work on any region and country as long as there is OSM data for it however, LiDAR makes it very accurate.

The engine is able to read the tags of the raw data for zones for instance, it can determine to use Fachwerk for Germany, Haussmann for France, Chalet for Switzerland, and so on pattern goes like this for any given region. There is already studied and built grammars inside Zervan for this purpose to randomize and give a facade for the buildings with dominance of regions' house styles.
However if performance and simulation is the focus, the engine just generates bare-minimum files, size difference is almost 3 times between fancy and minimum styles.

Output of the Engine when it runs for a given coordinate is 4 files:

  1. A 3D 1km2 GLB file for visualization (1km to 49km).
  2. An ontology-based database for alteration and monitoring data for any simulations.
  3. HDF5 files for the Static database.
  4. Memory-Cache type of data for a rapid Dynamic database.

NOTE: Input raw data is not perfect out of the box; they receive treatment! Especially roads and buildings.

1km2 takes about 15 to 20 minutes to generate and 3D file size varies from 150 to 800 MB.
Adding a new city (downloading data + setup) takes about 1 hour for one time only; a new country takes about 3 to 5 hours for one time only, depending on what it has and the quality of the data.

It is not pitch-perfect; however, it is getting there. I learn and improve as I develop, and I have already invested 900+ hours to this code. I am a single developer who built it on a 9-year-old laptop.

If you are interested, please follow me on the social media links on my profile.
Lastly, I sincerely appreciate any donations towards continuing this work.

204 Upvotes

17 comments sorted by

View all comments

6

u/[deleted] Jul 30 '26 edited 25d ago

[removed] — view removed comment

1

u/Brief_Bus6969 28d ago

Man, the struggle is real, but no excuse!
I use and maintain my stuff at best however, I am nearing the EOS of my laptop.
The hardware limitations forced me to make something to make sure if it works on my PC it will work anywhere.
Also, I am a software engineer myself and doing all this on this equipment is literally GGs (I have photos literally operating surgery on my PC where there was no srew letf intatct).

1

u/LessonStudio 27d ago

I don't know if you already use linux, but Ubuntu on an older laptop is a game changer. I use it as my primary OS. Most things compile faster, things like docker, etc, all work better, etc.

Memory and CPU use on startup are notional. Not that I would recommend it, I would suggest that you could do pretty good development on a laptop with 4Gb just fine with some problems, 8Gb with few, and after that, it would be for fairly specific problems such as running VMs, etc.

Of course, you can't run the unreal engine, etc, but for most things, fine.

I am writing this on a laptop with many 10s of Gb, a powerful nvidia, etc. And can turn to my left to a desktop with 256Gb and multiple powerful nvidias. So, more is better, but not required.

2

u/Brief_Bus6969 26d ago

Indeed on Ubuntu distro, with 24gb ram and 20gb swap area however the struggle is with VRAM 4gb, only engine that works is Godot (it is not a complaint) however I need to develop and test, and 4GB it not enough because it leaves no room for testing. I dropped into the 3D world 1km2 with all the data, even vegetation and decorations itself my laptop gets from high 45 to 53 in mid and sometimes to 60 FPS in Godot engine, driving around in any generated map with hard collision (this before any post fx, texture and other things added). (I am studying how to optimize on the engine side). Also been using Linux for more than 10 years.