3D mesh based on OpenStreetMap data

Customized 3D map generator, lode and map manipulating module

The task of the project:
We needed to develop a 3D map generator tool with adjustable design, high quality image, and optimized models which could be later packed into Unity AssetBundle. It was also necessary to make the process of re-creating a separate map section possible;
We were to design a module for map loading from the created AssetBundles in order to use them in other projects. A module should have optimization tools, like Frustrum Culling and LOD systems.
Our task was also to generate a map of Moscow and of a part of Moscow region with the help of the tool.

Specifics of the project:
Although today’s market is not devoid of different 3D map generation platforms (like Mapbox or CityEngine), still a lot of them have major drawbacks: the models lack optimization and their polycount is too high; it’s impossible to generate a map of a specific region, such as Moscow; the generated map cannot be customized or even integrated into 3D engine (like Unity). It is also important to keep in mind that a 3D map is a large object that takes a lot of graphic resources to render. To make the process less bulky, you should have:
properly optimized models without excessive polygones, in order to make rendering more efficient and to lessen the amount of required core memory.
a possibility of combining models in a mesh to decrease the amount of draw calls.
a possibility of breaking the map into several parts to enable such optimization processes as Frustum Culling and LOD.
To realize the above mentioned demands, to improve the created map, and to employ new technologies (like Houdini), we realized the project.

What we did and how we did it:

The map was covered with grid lines. The parameters of the grid can be adjusted according to the generated region. The map itself consists of different layers, devoted to certain objects, like roads, inhabited buildings, community buildings, base with the ground and lawn textures.

To generate 3D meshes of cartographic objects, we used blender-osm plugin, which can generate a section of a map in 3D from OpenStreeMap data. We realized an additional plugin, which automatically generates meshmaps and then exports them into fbx-format.

The files are processed by a special Unity project, which deletes the unnecessary objects, creates layers of the map, processes data mesh (groups similar objects into a mesh), applies the necessary design.

At the end of processing the created map is packed into AssetBundles, which are then loaded into the target application with the help of a separate module. The module creates the map grid and places the necessary objects from the AssetBundles, enabling Frustum Culling and LOD systems.

OpenStreetMapUnity3D3d map VRFrustum CullingLODBlender osm LUAм

The project team:
Dev: Vadim Ignatyev

Time-frame: 3 months