UKy Campus — Interactive 3D ViewerExtract UE 4.24.3 UKy Campus LiDAR point cloud + DTM terrain tiles + aerial imagery into open formats and view them in an interactive Three.js…
Source code on GitHub.
Extract UE 4.24.3 UKy Campus LiDAR point cloud + DTM terrain tiles + aerial imagery into open formats and view them in an interactive Three.js web viewer — no Unreal Engine required.
``sh
python -m tools.twin_server # viewer + LIVE Lextran buses + shared-world API, on :8000
`Open http://localhost:8000/
tools/twin_server.py is one server that serves the static viewer, proxies the live
Lexington (Lextran) GTFS-Realtime feed so you get moving buses on the map, and runs the
authoritative shared-world agent API (/api/world/*). Add --render for first-person agent
cameras, --mock to replay a recorded bus feed offline, or --no-transit to skip the bus
proxy. No buses or agents needed at all? Plain cd web && python -m http.server 8000 still
works — routes + stops render, live buses just stay off.
The viewer loads web/data/manifest.json and streams terrain tiles + LiDAR
point chunks. All data is pre-extracted — the server just serves static files.
`
CAMPUS/
├── LIDAR/ # UE4 .uasset source (POINT_CLOUD_2019, 448 MB)
├── MESHES/DTM_GRID/ # UE4 .uasset sources (16 meshes, 18 textures, 17 materials)
├── tools/ # Python extraction tools
│ ├── uasset.py # Core UE4 package parser (v518 / 4.24.3)
│ ├── inspect.py # Export/property dumper
│ ├── extract_texture.py # Texture2D -> PNG -> JPEG
│ ├── extract_mesh.py # StaticMesh -> .bin (positions, UVs, indices)
│ ├── extract_lidar.py # LidarPointCloud -> decimated chunked .bin (campus only)
│ ├── ky_lidar.py # KyFromAbove/KYAPED LiDAR -> citywide point cloud + ground grid
│ ├── extract_scene.py # Blueprint scene assembly (transforms, materials)
│ ├── extract_buildings.py # LiDAR building-class → 3D mesh (legacy, DBSCAN)
│ ├── extract_buildings_hybrid.py # OSM footprints split LiDAR + give height
│ ├── verify_buildings_osm.py # verify footprints vs OSM ground truth
│ ├── osm_roads.py # OpenStreetMap → campus road network (roads.json)
│ ├── osm_city.py # OpenStreetMap → city-wide streets + ground plane (city.json)
│ ├── lextran_gtfs.py # Lextran static GTFS → routes + stops (transit.json)
│ ├── twin_server.py # one server: static viewer + shared-world API (/api/world/*)
│ │ # + live GTFS-Realtime bus proxy (/api/transit/*) + --render cams
│ ├── pack_buildings.py # merge 3,109 building meshes → one buffer (fast load)
│ ├── transit_common.py # shared lon/lat → scene projection...