The 3D modelling of realistic road networks is beneficial to a number of areas of activity, including urban planning and traffic management [1][2]. Simulations carried out within these environments are key to the development and testing of software intended for driving autonomous vehicles [3][4][5]. The generation of these 3D models is a laborious task, entailing considerable time spent in ensuring that the environments created would be an accurate representation of the real world. The aim of this project was to design and develop a system to bootstrap this task by procedurally generating road geometry that fuses information from multiple, freely available sources. Blender is a popular open-source 3D modelling software [6][7], with extensive support for scripting [8]; all functionality available through its graphical user interface (GUI) is exposed through its scripting application programming interface (API). This positions Blender as an ideal candidate for the procedural generation of geometry, which could be further refined within the GUI. Moreover, since Blender scripting is carried out in Python, a number of libraries were readily accessible for carrying out other important tasks for this project, such as network data queries/downloads and image processing. The main source of mapping information for this project was OpenStreetMap (OSM), which is built by a community of mappers who contribute data about roads and buildings from around the world [9]. Since OSM does not provide satellite views of the urban environments under consideration, satellite images from Google Maps [10] were used and automatically aligned to the procedurally generated road geometry in Blender. Image processing was carried out on these colour images to calculate the actual width of the various roads and the approximate location of any greenery present [11][12]. Since elevation data could not be inferred from a two-dimensional view, Google’s Elevation API was used to adjust road geometry according to the retrieved data [13].
Upon its implementation, the evaluation of the proposed solution was found to deliver very accurate results which, in some cases, improved upon pre- existing solutions such as BlenderGIS [14]. Five locations covering a variety of urban layouts ‒ namely: Ħ’Attard (San Anton area); Marsa (Royal Malta Golf Club area); Naxxar Centre, the University Ring Road and Mater Dei Hospital, and Valletta ‒ were chosen to determine the quality of the generated geometry. Figures 1 and 2 illustrate the procedurally generated geometry for Valletta, and the University Ring Road and Mater Dei Hospital respectively (top view/street view in all cases). Future work includes the development of methods to procedurally add buildings, and to apply materials in order to increase the realism of the generated results.
References/Bibliography:
[1] R. Hamaina, T. Leduc, and G. Moreau. A structural analysis of the streets’ network to urban fabric characterization. volume 2012, 07 2011.
[2] F. Molinari, A. Dethof, and J. Raisch. Traffic automation in urban road networks using consensus-based auction algorithms for road intersections. pages 1-8, 12 2018.
[3] M. DeBord. A waymo engineer told us why a virtual-world simulation is crucial to the future of self-driving cars, 2018.
[4] D. Silver. Simulation becomes increasingly important for self-driving cars, 2018.
[5] A. Dosovitskiy, G. Ros, F. Codevilla, A. Lopez, and V. Koltun. CARLA: An open urban driving simulator. pages 1-16, 11 2017.
[6] Blender. https://www.blender.org/. Accessed: 2020-04-24.
[7] Blender License. https://www.blender.org/about/license/. Accessed: 2020-04-24.
[8] Blender Features. https://www.blender.org/features/. Accessed: 2020-04-24.
[9] OpenStreetMap. https://www.openstreetmap.org/. Accessed: 2020-04-24.
[10] Google Maps. https://www.google.com/maps. Accessed: 2020-04-24.
[11] Changing Colorspaces. https://docs.opencv.org/3.4.8/df/d9d/tutorial_py_ colorspaces.html. Accessed: 2020-04-24.
[12] Color Space Conversions. https://docs.opencv.org/master/d8/d01/group __imgproc__color__convertions.html. Accessed: 2020-04-24
[13] Google Maps Platform – Elevation API. https://developers.google.com/maps/ documentation/elevation/start. Accessed: 2020-04- 21.
[14] domlysz. BlenderGIS. https://github.com/domlysz/BlenderGIS. Accessed: 2020- 04-21.
Student: Gabriel Thomas Gauci
Course: B.Sc. IT (Hons.) Computing Science
Supervisor: Dr. Sandro Spina