Build a 3D low-poly map of a city from open map data

A Redditor used Codex and Claude to build a browser 3D low-poly map of central Warsaw: about 18,000 buildings, 1,027 hand-modelled landmarks and 257,000 trees over 49 km².

Done withCodexClaude· Oct 25, 2026

What they did

u/OrestesGaolin set out to render central Warsaw as a 3D low-poly map that runs in the browser. They used Codex heavily, running through its usage limit three times, and filled the gaps with Claude. The map covers 6.85 by 7.2 km, cut into 144 tiles of 600 m each. Generic buildings come from OpenStreetMap with heights from the Polish national mapping agency's 2025 data, trees from the city's crown map and inventory, and roads, land use, traffic signals and transit stops from open data. Each of the 1,027 landmarks is its own small generated program that builds a low-poly model.

How it went

The site is live at tinywarsaw.app. It draws 17,941 buildings, 1,027 landmarks, 257,387 trees, 21,368 road segments with lanes, crossings, rails, tunnels and bridges, and 40,028 park, water and square areas. Landmarks total about 7.4M triangles at full detail, cut to 1.9M for distant views on desktop and 1.5M on phones. The landmark code alone is 91 MB of JavaScript. The author asked the subreddit for help with performance and plans to open source the repo after a cleanup.

Worth knowing

The post does not say how the work was split between the two agents, and the Claude harness is not named. One generated program per landmark adds up fast: 91 MB of JavaScript is the cost of that approach, and performance on slower devices is the open problem the author raised.

Try it

With Codex· 6 parts to fill in

Help me build a browser 3D low-poly map of [area of my city]. Start by fetching building footprints from [OpenStreetMap or my data source] and heights from [height dataset], split the area into tiles of [size] metres, and render generic buildings, roads and trees with level-of-detail versions for far views. Then write one small model generator per landmark from [list of landmarks]. Keep a triangle budget of [number] per tile on phones, report the totals after each stage, and stop after the first tile renders so I can check it before you do the rest.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related