← Feel++ discussions

Portfolio

Generating Vegetation in urban areas using CGAL

Read and comment on GitHub ↗

Original GitHub text, preserved in its published language. This text describes the situation at its publication date. Comments are available on GitHub.

Internship for the Exa-MA WP1 Vegetation Project

Intern: Pierre-Antoine SENGER @PA-Senger (Master 1 CSMI) Advisors: @vincentchabannes, @palliez, @prudhomm

Overview

This project is part of a series conducted within the Exa-MA Project[^1], a segment of the Numpex research initiative[^2]. My colleagues and I worked on the following projects:

  • Exa-MA WP1 - Vegetation
  • Exa-MA WP1 - Terrain
  • Exa-MA WP1 - Urban Building LOD-1
  • Exa-MA WP1 - Urban Building LOD-2 and Kinetic
  • Exa-MA WP1 - Performance and Scalability

These projects are conducted within the HiDALGO2 initiative[^3], which "aims to explore synergies between modeling, data acquisition, simulation, data analysis, and visualization along with achieving better scalability on current and future HPC and AI infrastructures to deliver highly-scalable solutions that can effectively utilize pre-exascale systems"[^4].

Specifically focusing on the Urban Building Model[^5] Use Case (UBM), which is "developing the Urban Building pilot application to improve building energy efficiency and indoor air quality"[^5], this particular project aims to integrate vegetation, particularly trees, into 3D models of urban environments.

The projects are conducted within Cemosis[^6] (Center for Modeling and Simulation in Strasbourg), hosted by IRMA[^7] (Institute for Advanced Mathematical Research) at Strasbourg University. We operated as students under the supervision of Vincent Chabannes[^8], a research engineer at IRMA, Pierre Alliez,[^9] a senior researcher and team leader at Inria Sophia Antipolis and Christophe Prud'homme[^10], a professor in applied mathematics at Strasbourg University.

This Vegetation project aims to integrate trees into 3D geometric models of urban environments to improve the accuracy and realism of thermal and energy simulations.

Main Objectives

Urban areas are complex ecosystems influenced by various factors, with vegetation, especially trees, playing a crucial role in shaping microclimates, reducing energy consumption, and enhancing overall livability. To model them, we have identified the following objectives:

  • Extracting tree meta-data from OpenStreetMap using cpr[^11]:
    • Position (latitude, longitude): In a park, boarding a road, etc.
    • Height, genus, species, crown diameter, circumference, etc.
  • Generating 3D tree models using CGAL[^12] and Gmsh[^13]:
    • LOD 0, 1, 2, 3
    • Different leaf density
  • Integrating tree models into the existing terrain mesh:
    • Avoiding collision between trees and buildings
    • Taking into account terrain elevation
  • Optimizing and parallelizing the algorithms to efficiently handle large datasets

What Has Been Done

  • Created LOD 0 reference mesh using Gmsh with separated trunk and foliage for different tree shapes (round, oval, conical).

Generating Vegetation in urban areas using CGAL Generating Vegetation in urban areas using CGAL Generating Vegetation in urban areas using CGAL

  • Retrieved and preprocessed 3D tree models from Sketchup[^14] (removed trunks and some branches, normalized them, centered them on origin).
Generating Vegetation in urban areas using CGAL
  • Used CGAL Alpha Wrapping[^15] on those preprocessed models to create LOD 1, 2, 3 tree meshes.

Click to watch video

  • Retrieved tree metadata (position, height, trunk circumference, etc.) from OpenStreetMap[^16] and created C++ tree object.
  • Added markers to leaves to account for seasons.
  • Scaled and translated the tree meshes to the correct spatial position using Mercator projection and CGAL.
  • Merged trees into a single mesh.
  • Merged with a terrain/building mesh.
  • Attempted to repair meshes.
  • Created a config.json file for user-specified options/parameters:
{
  "bbox": "48.58677,7.75271,48.58768,7.75540",
  "origin": "48.583055227464364, 7.748664426560083",
  "LOD": 2,
  "default_height_range": "10, 40",
  "input_building_mesh": "mesh_lod1.stl",
  "merge_buildings_trees": false,
  "output_name": "republique",
  "output_format": "msh",
  "verbose": true
}

Current Issues

  • Removing the intersection of trees and buildings.
  • Chose a strategy for when trees are missing metadata.
  • Merging trees on an uneven terrain.
  • Adding parallelization.
  • Adding performance analysis.

Current Results

Place de la Republique, Strasbourg lod 0: image

Parc des Contades, Strasbourg lod 0: image

Place de la Republique, Strasbourg lod 2: image

References

[^1]: Exa-MA Consortium. Available at Exa-MA [^2]: Numpex Consortium. Available at Numpex [^3]: HiDALGO2. Available at HiDALGO2 [^4]: HiDALGO2. About HiDALGO2. Available at HiDALGO2 About [^5]: HiDALGO2. Urban Building Model. Available at Urban Building Model [^6]: Cemosis. Available at Cemosis [^7]: IRMA. Available at IRMA [^8]: Vincent Chabannes. Available at Vincent Chabannes [^9]: Pierre Alliez. Available at Pierre Alliez [^10]: Christophe Prud'homme. Available at Christophe Prud'homme [^11]: CPR Developers. C++ Requests: Curl for People. Available at CPR [^12]: CGAL Development Team. Available at CGAL [^13]: Christophe Geuzaine, Jean-François Remacle. Available at Gmsh [^14]: Sketchup. Available at Sketchup [^15]: CGAL Alpha Wrapping. Available at CGAL 5.6.1 - 3D Alpha Wrapping [^16]: OpenStreet Map. Available at OSM