7#include "reusex/geometry/BuildingComponent.hpp"
8#include "reusex/types.hpp"
11#include <pcl/PolygonMesh.h>
59std::vector<WallCandidate>
61 float normal_z_threshold = 0.3f,
62 float coplanarity_angle_deg = 10.0f);
73 const std::map<uint32_t, uint32_t> &instance_to_semantic,
74 const pcl::PolygonMesh &
mesh,
75 const std::vector<uint32_t> &window_semantic_labels,
pcl::PolygonMeshPtr mesh(CloudConstPtr cloud, CloudNConstPtr normals, EigenVectorContainer< double, 4 > &planes, EigenVectorContainer< double, 3 > ¢roids, std::vector< IndicesPtr > &inliers, CloudLConstPtr rooms, MeshOptions const opt=MeshOptions{})
Generate a mesh from point cloud and geometric primitives.
CreateWindowsResult create_windows(CloudConstPtr cloud, CloudLConstPtr instance_labels, const std::map< uint32_t, uint32_t > &instance_to_semantic, const pcl::PolygonMesh &mesh, const std::vector< uint32_t > &window_semantic_labels, const CreateWindowsOptions &options={})
Create window BuildingComponents from instance-labeled points and wall geometry.
std::vector< WallCandidate > extract_wall_candidates(const pcl::PolygonMesh &mesh, float normal_z_threshold=0.3f, float coplanarity_angle_deg=10.0f)
Extract planar vertical wall candidates from a triangle mesh.
WindowBoundaryMode
How to compute the window boundary polygon.
typename CloudL::ConstPtr CloudLConstPtr
typename Cloud::ConstPtr CloudConstPtr
Configuration for the create_windows pipeline.
float coplanarity_angle_deg
Max angle deviation within wall component.
float alpha
ConcaveHull alpha for polyline mode.
float wall_normal_z_threshold
|normal.z| < this → vertical
float wall_offset
Offset along outward wall normal (meters).
bool include_internal
Include windows inside mesh volume (default: false).
Output of create_windows().
std::vector< BuildingComponent > components
std::vector< int > unmatched_instances
Instance IDs with no wall found.
A connected component of approximately-vertical, coplanar mesh faces.
std::vector< std::vector< Eigen::Vector3d > > boundary_loops
Boundary loops ordered by half-edge traversal (outer loop first, then holes) Each loop is a sequence ...
std::vector< int > face_indices
Mesh face indices in this component.
Eigen::Vector3d normal
Unit outward normal (approximately horizontal).
Eigen::Vector3d centroid
Area-weighted centroid of component faces.
Eigen::Vector4d plane
Hessian normal form [a,b,c,d]: ax+by+cz+d=0.