3D-OSM-GODOT is a 3D map builder built to visualize OpenStreetMap data in the Game Engine Godot. The goal if this school Project was to build a foundation on which later projects can build on. The end goal will be to build a game in which the player can explore their home City or any place in the world and compare the Data from OpenStreetMap with Streetsview images from e.g. Mapillary and help to improve the Data by marking or changing wrong or outdated features.
The Semester is over and development for now has stopped. Feel free to create pull requests if you are interested in further advancing this Project.
The following Layers with the stated features have been implemented:
All buildings will be displayed with their footprint raised to the height specified in the height
Tag if it is available, otherwise it will be raised to a standard height which is 1 Floor = 2.75m.
Buildings are displayed as texture less grey Polygons.
The layer "common" holds information about certain types of land cover. Currently it is always displayed as a flat, light green surface
The layer "natural" also holds information about the land cover and is a flat, dark green surface.
The layer name highways is a bit unfortunate, since it does not only include Highways but any kind of land based transportation way, i.e. Roads, Paths and Railways. They are currently all displayed as black lines. Some specific types of Roads use a defined width.
The water layer defines all forms of water, flowing and still, man made and natural. Still water and larger rivers are stored as Polygons, smaller streams are stored as linestrings.
The layer "points" holds the position of all kind of Point of interests. We currently display trees and benches, but the layer includes a lot more e.g.: Garbage bins, Toilets, Statues, Bus stops etc.
We use the Vector tiles, which are generated by the user StrandedKitty for their streets-gl project
To use the Vector tiles within the Godot Project, we use the godot-geo-tile-loader which was provided by Pirmin Kalberer for this project. It provides a lot of useful functions related to extracting Data from the Vector tiles and might in the future get extended with even more functions like downloading the Tiles if they can not be found locally.
To run this project, currently you need to install Godot locally. You can do this by following this link: https://godotengine.org/.
Navigate to /code/main.gd and edit the lines const START_X = x
and const START_Y = y
to the coordinates of your choosing. To find the location you wish you can for example use the Tool provided by Maptiler. Use Zoom level 16 and the Google Coordinate notation.
Open /code/project.godot with Godot and press F5
to run the main scene.
Movement uses the standard FPS control scheme, with W
, A
, S
& D
to move around and shift
to "sprint". Currently the player is always flying, to ascend, press Q
, to descend press Y
.