ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
VisualizerForAlignment.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 // clang-format off
9 #include <visualization/visualizer/Visualizer.h> // must include first
11 // clang-format on
12 
13 #include <FileSystem.h>
14 #include <IJsonConvertible.h>
15 #include <IJsonConvertibleIO.h>
16 #include <Logging.h>
17 #include <ecvBBox.h>
18 #include <ecvKDTreeFlann.h>
19 #include <ecvOrientedBBox.h>
20 #include <ecvPointCloud.h>
21 
22 #include "AlignmentSession.h"
23 #include "io/PointCloudIO.h"
24 
25 namespace cloudViewer {
26 
28 public:
31  double voxel_size = -1.0,
32  double max_correspondence_distance = -1.0,
33  bool with_scaling = true,
34  bool use_dialog = true,
35  const std::string &polygon_filename = "",
36  const std::string &directory = "")
37  : source_visualizer_(source),
38  target_visualizer_(target),
39  voxel_size_(voxel_size),
41  with_scaling_(with_scaling),
42  use_dialog_(use_dialog),
43  polygon_filename_(polygon_filename),
44  default_directory_(directory) {}
46 
47 public:
48  void PrintVisualizerHelp() override;
49  bool AddSourceAndTarget(std::shared_ptr<ccPointCloud> source,
50  std::shared_ptr<ccPointCloud> target);
51 
52 protected:
53  void KeyPressCallback(GLFWwindow *window,
54  int key,
55  int scancode,
56  int action,
57  int mods) override;
58  bool SaveSessionToFile(const std::string &filename);
59  bool LoadSessionFromFile(const std::string &filename);
61  void PrintTransformation();
62  void EvaluateAlignmentAndSave(const std::string &filename);
63 
64 protected:
67  double voxel_size_ = -1.0;
69  bool with_scaling_ = true;
70  bool use_dialog_ = true;
71  Eigen::Matrix4d transformation_ = Eigen::Matrix4d::Identity();
72  std::string polygon_filename_ = "";
73  std::shared_ptr<ccPointCloud> source_copy_ptr_;
74  std::shared_ptr<ccPointCloud> target_copy_ptr_;
76  std::string default_directory_;
77 };
78 
79 } // namespace cloudViewer
std::string filename
std::shared_ptr< ccPointCloud > target_copy_ptr_
bool LoadSessionFromFile(const std::string &filename)
visualization::VisualizerWithEditing & target_visualizer_
VisualizerForAlignment(visualization::VisualizerWithEditing &source, visualization::VisualizerWithEditing &target, double voxel_size=-1.0, double max_correspondence_distance=-1.0, bool with_scaling=true, bool use_dialog=true, const std::string &polygon_filename="", const std::string &directory="")
visualization::VisualizerWithEditing & source_visualizer_
bool AddSourceAndTarget(std::shared_ptr< ccPointCloud > source, std::shared_ptr< ccPointCloud > target)
std::shared_ptr< ccPointCloud > source_copy_ptr_
void KeyPressCallback(GLFWwindow *window, int key, int scancode, int action, int mods) override
void EvaluateAlignmentAndSave(const std::string &filename)
bool SaveSessionToFile(const std::string &filename)
The main Visualizer class.
Definition: Visualizer.h:45
static const double max_correspondence_distance
Generic file read and write utility for python interface.