← Discussions Feel++

Portfolio

Generating LOD-2 representation of buildings using CGAL Kinetic algorithm

Lire et commenter sur GitHub ↗

Texte original de GitHub, conservé dans sa langue de publication. Ce texte décrit la situation à sa date de publication. Les commentaires sont disponibles sur GitHub.

Internship on generating LOD-2 representation of buildings using CGAL Kinetic algorithm

  • Intern : Demuth Axel @InfMathAxel (Master 1 CSMI - https://csmi.cemosis.fr/)
  • Advisors : @vincentchabannes and @palliez

Introduction

This project is part of the Exa-MA project at CEMOSIS. CEMOSIS aims to improve the Ktirio Urban Building application by implementing new methods for the 3D reconstruction of buildings. The goal of this stage is to add new tools for the geometric reconstruction of LOD-2 building models, generating 3D models with constraints of conformity and watertightness. For this purpose, we are using an algorithm developed by the INRIA Titane Team called Kinetic Surface Reparation (KSR), implemented in the CGAL library, and we aim to adapt it for use within our environment.

Progression

At the start, since I had already worked on KSR algorithms during the second semester project, I had some understanding of the types of problems I was going to face. Therefore, I needed to better understand how the algorithms worked and how to improve the poor results we had previously obtained. One of the main issues was the data we were working with: we were given STL files of various buildings, but KSR requires a point cloud with associated normals as input, whereas STL files have relatively few points. The first issue I focused on resolving was finding a way to increase the number of points. In the CGAL library, there are different functions available to modify a mesh, which allowed me to obtain a denser point cloud. Here is an example of the conversion from STL files to a dense point cloud:

3_zones_stl 3_zones_ply

With this improved point cloud, I was able to apply the algorithms and achieve significantly cleaner results than before. Here is a comparison between the results obtained now and before this internship:

3_zones_ksr_output_before 3_zones_ksr_output_now

ksr ouput from before                                                   ksr output now

Another exemple of result we can get now with the Stl mesh of a House and the output from KSR now :

3_zones_ksr_output_before 3_zones_ksr_output_now

STL mesh                                             output now

Contribution to the Ktirio Environment

Apart from adapting KSR to a Ktirio environment, I have implemented some checks and tests using the CGAL library to verify the properties of a mesh, such as:

  • Closed
  • Connected
  • Triangulated
  • Self-intersecting
  • Whether the mesh is outward or inward oriented

Furthermore, I have created a class similar to the Point_Set of CGAL to increase compatibility between Ktirio and CGAL environments and a function to export those point set to .ply files.

Performance

At the beginning, when trying to use STL files as input for KSR, we experienced very long execution times due to the conversion process and KSR execution. Now, I have implemented a function to clean up the point cloud to reduce the number of points. This optimization allows us to achieve faster execution times from the same data with auto-detected parameters on the mesh showed before from earlier in the internship and now :

execution_times_now Execution Times Now execution_times_before Execution Times Before

References

For this internship, I primarily used the following references: