ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
export_scene.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
7
#include "reusex/geometry/BuildingComponent.hpp"
8
#include "reusex/types.hpp"
9
10
#include <pcl/PolygonMesh.h>
11
12
#include <array>
13
#include <cstdint>
14
#include <map>
15
#include <optional>
16
#include <string>
17
#include <vector>
18
19
namespace
reusex
{
20
class
ProjectDB
;
21
}
22
23
namespace
reusex::io
{
24
27
struct
ExportScene
{
28
29
// --- Cloud ---
30
struct
CloudLayer
{
31
CloudConstPtr
cloud
;
32
CloudNConstPtr
normals
;
33
};
34
std::optional<CloudLayer>
cloud
;
35
36
// --- Semantic ---
37
struct
SemanticInstance
{
38
uint32_t
instance_id
= 0;
39
CloudConstPtr
points
;
40
};
41
struct
SemanticCategory
{
42
std::string
name
;
43
int
label_id
= 0;
44
std::array<uint8_t, 3>
color
= {};
45
std::vector<SemanticInstance>
instances
;
46
};
47
std::vector<SemanticCategory>
semantic
;
48
49
// --- Meshes ---
50
struct
MeshEntry
{
51
std::string
name
;
52
pcl::PolygonMesh::Ptr
mesh
;
53
};
54
std::vector<MeshEntry>
meshes
;
55
56
// --- 360 Panoramas ---
57
struct
PanoEntry
{
58
std::string
image_name
;
59
std::string
image_url
;
60
double
x
= 0,
y
= 0,
z
= 0;
61
};
62
std::vector<PanoEntry>
panoramas
;
63
64
// --- Materials ---
65
struct
MaterialEntry
{
66
std::string
name
;
67
std::string
image_filename
;
68
double
x
= 0,
y
= 0,
z
= 0;
72
std::array<double, 16>
transform
{1, 0, 0, 0, 0, 1, 0, 0,
73
0, 0, 1, 0, 0, 0, 0, 1};
74
std::map<std::string, std::string>
properties
;
75
};
76
std::vector<MaterialEntry>
materials
;
77
78
// --- Building Components ---
79
struct
ComponentEntry
{
80
std::string
name
;
81
geometry::ComponentType
type
;
82
geometry::CoplanarPolygon
boundary
;
83
double
confidence
= -1.0;
84
std::string
notes
;
85
std::map<std::string, std::string>
properties
;
86
};
87
std::vector<ComponentEntry>
components
;
88
};
89
92
ExportScene
gather_export_scene
(
const
ProjectDB
&db);
93
94
}
// namespace reusex::io
reusex::ProjectDB
Definition
ProjectDB.hpp:31
reusex::geometry::ComponentType
ComponentType
Discriminator for building component types.
Definition
BuildingComponent.hpp:17
reusex::io
Definition
e57.hpp:17
reusex::io::gather_export_scene
ExportScene gather_export_scene(const ProjectDB &db)
Gather all exportable data from a ProjectDB.
reusex
Definition
filter_expression.hpp:12
reusex::CloudConstPtr
typename Cloud::ConstPtr CloudConstPtr
Definition
types.hpp:28
reusex::CloudNConstPtr
typename CloudN::ConstPtr CloudNConstPtr
Definition
types.hpp:32
reusex::geometry::CoplanarPolygon
A closed 3D polygon whose vertices are coplanar.
Definition
CoplanarPolygon.hpp:20
reusex::io::ExportScene::CloudLayer
Definition
export_scene.hpp:30
reusex::io::ExportScene::CloudLayer::normals
CloudNConstPtr normals
may be nullptr
Definition
export_scene.hpp:32
reusex::io::ExportScene::CloudLayer::cloud
CloudConstPtr cloud
XYZRGB (always present if layer exists).
Definition
export_scene.hpp:31
reusex::io::ExportScene::ComponentEntry
Definition
export_scene.hpp:79
reusex::io::ExportScene::ComponentEntry::boundary
geometry::CoplanarPolygon boundary
Definition
export_scene.hpp:82
reusex::io::ExportScene::ComponentEntry::name
std::string name
Definition
export_scene.hpp:80
reusex::io::ExportScene::ComponentEntry::notes
std::string notes
Definition
export_scene.hpp:84
reusex::io::ExportScene::ComponentEntry::properties
std::map< std::string, std::string > properties
Definition
export_scene.hpp:85
reusex::io::ExportScene::ComponentEntry::confidence
double confidence
Definition
export_scene.hpp:83
reusex::io::ExportScene::ComponentEntry::type
geometry::ComponentType type
Definition
export_scene.hpp:81
reusex::io::ExportScene::MaterialEntry
Definition
export_scene.hpp:65
reusex::io::ExportScene::MaterialEntry::properties
std::map< std::string, std::string > properties
Definition
export_scene.hpp:74
reusex::io::ExportScene::MaterialEntry::y
double y
Definition
export_scene.hpp:68
reusex::io::ExportScene::MaterialEntry::name
std::string name
designation or GUID
Definition
export_scene.hpp:66
reusex::io::ExportScene::MaterialEntry::z
double z
translation from linked sensor frame
Definition
export_scene.hpp:68
reusex::io::ExportScene::MaterialEntry::image_filename
std::string image_filename
original photo filename, empty if unknown
Definition
export_scene.hpp:67
reusex::io::ExportScene::MaterialEntry::transform
std::array< double, 16 > transform
Row-major 4x4 world pose of the linked sensor frame (identity if no frame is linked).
Definition
export_scene.hpp:72
reusex::io::ExportScene::MaterialEntry::x
double x
Definition
export_scene.hpp:68
reusex::io::ExportScene::MeshEntry
Definition
export_scene.hpp:50
reusex::io::ExportScene::MeshEntry::mesh
pcl::PolygonMesh::Ptr mesh
Definition
export_scene.hpp:52
reusex::io::ExportScene::MeshEntry::name
std::string name
Definition
export_scene.hpp:51
reusex::io::ExportScene::PanoEntry
Definition
export_scene.hpp:57
reusex::io::ExportScene::PanoEntry::z
double z
position from sensor frame pose
Definition
export_scene.hpp:60
reusex::io::ExportScene::PanoEntry::image_name
std::string image_name
filename
Definition
export_scene.hpp:58
reusex::io::ExportScene::PanoEntry::x
double x
Definition
export_scene.hpp:60
reusex::io::ExportScene::PanoEntry::image_url
std::string image_url
empty placeholder for future
Definition
export_scene.hpp:59
reusex::io::ExportScene::PanoEntry::y
double y
Definition
export_scene.hpp:60
reusex::io::ExportScene::SemanticCategory
Definition
export_scene.hpp:41
reusex::io::ExportScene::SemanticCategory::instances
std::vector< SemanticInstance > instances
Definition
export_scene.hpp:45
reusex::io::ExportScene::SemanticCategory::label_id
int label_id
semantic label ID
Definition
export_scene.hpp:43
reusex::io::ExportScene::SemanticCategory::color
std::array< uint8_t, 3 > color
Glasbey RGB.
Definition
export_scene.hpp:44
reusex::io::ExportScene::SemanticCategory::name
std::string name
e.g., "wall", "ceiling"
Definition
export_scene.hpp:42
reusex::io::ExportScene::SemanticInstance
Definition
export_scene.hpp:37
reusex::io::ExportScene::SemanticInstance::instance_id
uint32_t instance_id
0 if no instance segmentation
Definition
export_scene.hpp:38
reusex::io::ExportScene::SemanticInstance::points
CloudConstPtr points
Definition
export_scene.hpp:39
reusex::io::ExportScene
Intermediate representation for exporting all project data.
Definition
export_scene.hpp:27
reusex::io::ExportScene::materials
std::vector< MaterialEntry > materials
Definition
export_scene.hpp:76
reusex::io::ExportScene::cloud
std::optional< CloudLayer > cloud
Definition
export_scene.hpp:34
reusex::io::ExportScene::semantic
std::vector< SemanticCategory > semantic
Definition
export_scene.hpp:47
reusex::io::ExportScene::panoramas
std::vector< PanoEntry > panoramas
Definition
export_scene.hpp:62
reusex::io::ExportScene::components
std::vector< ComponentEntry > components
Definition
export_scene.hpp:87
reusex::io::ExportScene::meshes
std::vector< MeshEntry > meshes
Definition
export_scene.hpp:54
libs
reusex
include
io
export_scene.hpp
Generated by
1.17.0