ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvEntityAction.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include "ecvColorScale.h"
11 #include "ecvMesh.h"
12 #include "ecvPointCloud.h"
13 
14 class QWidget;
15 
17 
18 namespace ccEntityAction {
19 // Utility
20 template <typename T>
21 void ConvertToScalarType(const std::vector<std::vector<T>> &inputScalars,
22  std::vector<std::vector<ScalarType>> &outputScalars) {
23  outputScalars.resize(inputScalars.size());
24  size_t index = 0;
25  for (auto &scalars : inputScalars) {
26  outputScalars[index].resize(scalars.size());
27  std::transform(
28  scalars.begin(), scalars.end(), outputScalars[index].begin(),
29  [](const size_t &s) { return static_cast<ScalarType>(s); });
30  index++;
31  }
32 }
33 
34 // Colours
35 bool setColor(ccHObject::Container selectedEntities,
36  bool colorize,
37  QWidget *parent);
38 bool rgbToGreyScale(const ccHObject::Container &selectedEntities);
39 bool setColorGradient(const ccHObject::Container &selectedEntities,
40  QWidget *parent);
41 bool changeColorLevels(const ccHObject::Container &selectedEntities,
42  QWidget *parent);
43 bool interpolateColors(const ccHObject::Container &selectedEntities,
44  QWidget *parent);
45 bool convertTextureToColor(const ccHObject::Container &selectedEntities,
46  QWidget *parent);
47 bool enhanceRGBWithIntensities(const ccHObject::Container &selectedEntities,
48  QWidget *parent);
49 bool rgbGaussianFilter(const ccHObject::Container &selectedEntities,
50  ccPointCloud::RgbFilterOptions filterParams,
51  QWidget *parent = nullptr);
52 
53 // Scalar Fields
54 bool sfGaussianFilter(const ccHObject::Container &selectedEntities,
55  ccPointCloud::RgbFilterOptions filterParams,
56  QWidget *parent = nullptr);
57 bool sfConvertToRGB(const ccHObject::Container &selectedEntities,
58  QWidget *parent);
59 bool sfConvertToRandomRGB(const ccHObject::Container &selectedEntities,
60  QWidget *parent);
61 bool sfRename(const ccHObject::Container &selectedEntities, QWidget *parent);
62 bool sfAddIdField(const ccHObject::Container &selectedEntities);
63 bool sfSetAsCoord(const ccHObject::Container &selectedEntities,
64  QWidget *parent);
65 bool importToSF(const ccHObject::Container &selectedEntities,
66  const std::vector<std::vector<ScalarType>> &scalarsVector,
67  const std::string &name = "Scalars");
68 bool exportCoordToSF(const ccHObject::Container &selectedEntities,
69  QWidget *parent);
70 bool exportNormalToSF(const ccHObject::Container &selectedEntities,
71  QWidget *parent,
72  bool *exportDimensions = nullptr);
73 bool sfArithmetic(const ccHObject::Container &selectedEntities,
74  QWidget *parent);
75 bool sfFromColor(const ccHObject::Container &selectedEntities, QWidget *parent);
76 bool interpolateSFs(const ccHObject::Container &selectedEntities,
77  ecvMainAppInterface *parent);
78 
79 bool processMeshSF(const ccHObject::Container &selectedEntities,
81  QWidget *parent);
82 
83 // Normals
84 bool computeNormals(const ccHObject::Container &selectedEntities,
85  QWidget *parent);
86 bool invertNormals(const ccHObject::Container &selectedEntities);
87 bool orientNormalsFM(const ccHObject::Container &selectedEntities,
88  QWidget *parent);
89 bool orientNormalsMST(const ccHObject::Container &selectedEntities,
90  QWidget *parent);
91 
95 bool convertNormalsTo(const ccHObject::Container &selectedEntities,
97 
98 // Octrees
99 bool computeOctree(const ccHObject::Container &selectedEntities,
100  QWidget *parent);
101 
102 // Properties
103 enum class CLEAR_PROPERTY {
104  COLORS = 0,
105  NORMALS,
108 };
109 bool clearProperty(ccHObject::Container selectedEntities,
110  CLEAR_PROPERTY property,
111  QWidget *parent);
112 
113 enum class TOGGLE_PROPERTY {
114  ACTIVE = 0,
115  VISIBLE,
116  COLOR,
117  NORMALS,
118  SCALAR_FIELD,
119  MATERIAL,
120  NAME
121 };
122 bool toggleProperty(const ccHObject::Container &selectedEntities,
123  TOGGLE_PROPERTY property);
124 
125 // Stats
126 bool statisticalTest(const ccHObject::Container &selectedEntities,
127  QWidget *parent);
128 bool computeStatParams(const ccHObject::Container &selectedEntities,
129  QWidget *parent);
130 
131 // segmentation
132 bool DBScanCluster(const ccHObject::Container &selectedEntities,
133  QWidget *parent);
134 bool RansacSegmentation(const ccHObject::Container &selectedEntities,
135  ccHObject::Container &outEntities,
136  QWidget *parent);
137 
138 // convex hull
139 bool ConvexHull(const ccHObject::Container &selectedEntities,
140  ccHObject::Container &outEntities,
141  QWidget *parent);
142 
143 // sampling
144 bool VoxelSampling(const ccHObject::Container &selectedEntities,
145  ccHObject::Container &outEntities,
146  QWidget *parent);
147 
148 } // namespace ccEntityAction
std::string name
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Definition: ecvHObject.h:337
MESH_SCALAR_FIELD_PROCESS
Mesh scalar field processes.
Definition: ecvMesh.h:554
Main application interface (for plugins)
bool VoxelSampling(const ccHObject::Container &selectedEntities, ccHObject::Container &outEntities, QWidget *parent)
bool exportNormalToSF(const ccHObject::Container &selectedEntities, QWidget *parent, bool *exportDimensions)
bool invertNormals(const ccHObject::Container &selectedEntities)
bool sfSetAsCoord(const ccHObject::Container &selectedEntities, QWidget *parent)
bool statisticalTest(const ccHObject::Container &selectedEntities, QWidget *parent)
bool sfRename(const ccHObject::Container &selectedEntities, QWidget *parent)
bool convertTextureToColor(const ccHObject::Container &selectedEntities, QWidget *parent)
bool computeOctree(const ccHObject::Container &selectedEntities, QWidget *parent)
bool orientNormalsFM(const ccHObject::Container &selectedEntities, QWidget *parent)
bool sfFromColor(const ccHObject::Container &selectedEntities, QWidget *parent)
bool changeColorLevels(const ccHObject::Container &selectedEntities, QWidget *parent)
bool computeStatParams(const ccHObject::Container &selectedEntities, QWidget *parent)
bool orientNormalsMST(const ccHObject::Container &selectedEntities, QWidget *parent)
bool interpolateColors(const ccHObject::Container &selectedEntities, QWidget *parent)
Interpolate colors from on entity and transfer them to another one.
bool rgbToGreyScale(const ccHObject::Container &selectedEntities)
bool ConvexHull(const ccHObject::Container &selectedEntities, ccHObject::Container &outEntities, QWidget *parent)
bool clearProperty(ccHObject::Container selectedEntities, CLEAR_PROPERTY property, QWidget *parent)
bool sfGaussianFilter(const ccHObject::Container &selectedEntities, ccPointCloud::RgbFilterOptions filterParams, QWidget *parent)
bool sfAddIdField(const ccHObject::Container &selectedEntities)
bool toggleProperty(const ccHObject::Container &selectedEntities, TOGGLE_PROPERTY property)
bool enhanceRGBWithIntensities(const ccHObject::Container &selectedEntities, QWidget *parent)
bool setColorGradient(const ccHObject::Container &selectedEntities, QWidget *parent)
bool exportCoordToSF(const ccHObject::Container &selectedEntities, QWidget *parent)
bool setColor(ccHObject::Container selectedEntities, bool colorize, QWidget *parent)
void ConvertToScalarType(const std::vector< std::vector< T >> &inputScalars, std::vector< std::vector< ScalarType >> &outputScalars)
bool interpolateSFs(const ccHObject::Container &selectedEntities, ecvMainAppInterface *app)
Interpolate scalar fields from on entity and transfer them to another one.
bool RansacSegmentation(const ccHObject::Container &selectedEntities, ccHObject::Container &outEntities, QWidget *parent)
bool convertNormalsTo(const ccHObject::Container &selectedEntities, NORMAL_CONVERSION_DEST dest)
Converts a cloud's normals.
bool importToSF(const ccHObject::Container &selectedEntities, const std::vector< std::vector< ScalarType >> &scalarsVector, const std::string &name)
bool sfArithmetic(const ccHObject::Container &selectedEntities, QWidget *parent)
bool DBScanCluster(const ccHObject::Container &selectedEntities, QWidget *parent)
NORMAL_CONVERSION_DEST
Normals conversion destinations.
bool processMeshSF(const ccHObject::Container &selectedEntities, ccMesh::MESH_SCALAR_FIELD_PROCESS process, QWidget *parent)
bool sfConvertToRandomRGB(const ccHObject::Container &selectedEntities, QWidget *parent)
bool computeNormals(const ccHObject::Container &selectedEntities, QWidget *parent)
bool sfConvertToRGB(const ccHObject::Container &selectedEntities, QWidget *parent)
bool rgbGaussianFilter(const ccHObject::Container &selectedEntities, ccPointCloud::RgbFilterOptions filterParams, QWidget *parent)