Methodology Overview

This documentation outlines the methodology used to acquire, process, and simulate tree data from OpenStreetMap for a specified area. The process involves several key steps, including data acquisition, tree library creation, tree scaling, alpha wrapping for mesh generation, and tree placement in the simulation environment. Each of these steps is crucial for ensuring accurate and efficient representation of trees within the simulation.

2. Summary

  1. Data Acquisition: Utilizing the Overpass API and cpr, we query OpenStreetMap for tree data within a specified bounding box. This data includes GPS coordinates, height, trunk circumference, and crown diameter, among other attributes.

  2. Tree Library: We assume trees belong to specific shape categories (cone, oval, round) and use simple models for LOD 0, created with Gmsh. For higher LODs, we retrieve reference tree meshes from the Sketchup 3D Warehouse and pre-process them using Meshlab.

  3. Tree Scaling: We scale the reference tree meshes based on the dimensions provided in the OpenStreetMap data. The scaling factor is determined by the maximum of the height ratio, trunk circumference ratio, and crown diameter ratio.

  4. CGAL 3D Alpha Wrapping: To generate tree meshes at runtime, we use the CGAL 3D Alpha Wrapping algorithm, which constructs a simplified mesh that approximates the input geometry. This process is performed for LOD 1,2 and 3 using appropriate α values.

  5. Tree Placement: We convert the GPS coordinates of the trees to Cartesian coordinates relative to a specified origin. The scaled tree meshes are then placed at the corresponding locations in the simulation.

  6. Mesh Merging: To optimize rendering performance, we merge the tree meshes into a single mesh for each LOD. This process involves combining the individual tree meshes as well as other scene elements (buildings, terrain) to create a unified mesh.

  7. Parallelization: We parallelize the tree placement steps to improve performance. This involves distributing the workload across multiple threads to take advantage of multi-core processors.

By following this methodology, we ensure that the trees are accurately represented and efficiently processed within the simulation environment.

References