Open3D (C++ API)  0.16.1
VisualizerWithEditing.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27#pragma once
28
30
31namespace open3d {
32
33namespace visualization {
34class SelectionPolygon;
35class PointCloudPicker;
36
41public:
42 enum class SelectionMode {
43 None = 0,
44 Rectangle = 1,
45 Polygon = 2,
46 };
47
48public:
49 VisualizerWithEditing(double voxel_size = -1.0,
50 bool use_dialog = true,
51 const std::string &directory = "")
52 : voxel_size_(voxel_size),
53 use_dialog_(use_dialog),
54 default_directory_(directory) {}
58
59public:
63 bool AddGeometry(std::shared_ptr<const geometry::Geometry> geometry_ptr,
64 bool reset_bounding_box = true) override;
65 void PrintVisualizerHelp() override;
66 void UpdateWindowTitle() override;
67 void BuildUtilities() override;
68 int PickPoint(double x, double y);
69 std::vector<size_t> &GetPickedPoints();
70 std::shared_ptr<geometry::Geometry> GetCroppedGeometry() const;
71
72protected:
73 bool InitViewControl() override;
74 bool InitRenderOption() override;
75 void WindowResizeCallback(GLFWwindow *window, int w, int h) override;
76 void MouseMoveCallback(GLFWwindow *window, double x, double y) override;
77 void MouseScrollCallback(GLFWwindow *window, double x, double y) override;
78 void MouseButtonCallback(GLFWwindow *window,
79 int button,
80 int action,
81 int mods) override;
82 void KeyPressCallback(GLFWwindow *window,
83 int key,
84 int scancode,
85 int action,
86 int mods) override;
88 void InvalidatePicking();
89 void SaveCroppingResult(const std::string &filename = "");
90
91protected:
92 std::shared_ptr<SelectionPolygon> selection_polygon_ptr_;
93 std::shared_ptr<glsl::SelectionPolygonRenderer>
96
97 std::shared_ptr<PointCloudPicker> pointcloud_picker_ptr_;
98 std::shared_ptr<glsl::PointCloudPickerRenderer>
100
101 std::shared_ptr<const geometry::Geometry> original_geometry_ptr_;
102 std::shared_ptr<geometry::Geometry> editing_geometry_ptr_;
103 std::shared_ptr<glsl::GeometryRenderer> editing_geometry_renderer_ptr_;
104
105 double voxel_size_ = -1.0;
106 bool use_dialog_ = true;
108 unsigned int crop_action_count_ = 0;
109};
110
111} // namespace visualization
112} // namespace open3d
The main Visualizer class.
Definition: Visualizer.h:62
Visualizer with editing capabilities.
Definition: VisualizerWithEditing.h:40
SelectionMode selection_mode_
Definition: VisualizerWithEditing.h:95
double voxel_size_
Definition: VisualizerWithEditing.h:105
void SaveCroppingResult(const std::string &filename="")
Definition: VisualizerWithEditing.cpp:689
std::shared_ptr< SelectionPolygon > selection_polygon_ptr_
Definition: VisualizerWithEditing.h:92
void KeyPressCallback(GLFWwindow *window, int key, int scancode, int action, int mods) override
Definition: VisualizerWithEditing.cpp:293
std::shared_ptr< geometry::Geometry > editing_geometry_ptr_
Definition: VisualizerWithEditing.h:102
void UpdateWindowTitle() override
Definition: VisualizerWithEditing.cpp:152
~VisualizerWithEditing() override
Definition: VisualizerWithEditing.h:55
std::shared_ptr< const geometry::Geometry > original_geometry_ptr_
Definition: VisualizerWithEditing.h:101
bool InitViewControl() override
Function to initialize ViewControl.
Definition: VisualizerWithEditing.cpp:280
VisualizerWithEditing & operator=(const VisualizerWithEditing &)=delete
bool InitRenderOption() override
Function to initialize RenderOption.
Definition: VisualizerWithEditing.cpp:287
std::shared_ptr< geometry::Geometry > GetCroppedGeometry() const
Definition: VisualizerWithEditing.cpp:266
void InvalidatePicking()
Definition: VisualizerWithEditing.cpp:682
std::shared_ptr< PointCloudPicker > pointcloud_picker_ptr_
Definition: VisualizerWithEditing.h:97
void WindowResizeCallback(GLFWwindow *window, int w, int h) override
Definition: VisualizerWithEditing.cpp:513
std::string default_directory_
Definition: VisualizerWithEditing.h:107
void InvalidateSelectionPolygon()
Definition: VisualizerWithEditing.cpp:674
std::shared_ptr< glsl::SelectionPolygonRenderer > selection_polygon_renderer_ptr_
Definition: VisualizerWithEditing.h:94
int PickPoint(double x, double y)
Definition: VisualizerWithEditing.cpp:196
SelectionMode
Definition: VisualizerWithEditing.h:42
void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods) override
Definition: VisualizerWithEditing.cpp:558
std::vector< size_t > & GetPickedPoints()
Definition: VisualizerWithEditing.cpp:262
bool use_dialog_
Definition: VisualizerWithEditing.h:106
std::shared_ptr< glsl::GeometryRenderer > editing_geometry_renderer_ptr_
Definition: VisualizerWithEditing.h:103
void MouseMoveCallback(GLFWwindow *window, double x, double y) override
Definition: VisualizerWithEditing.cpp:520
void PrintVisualizerHelp() override
Definition: VisualizerWithEditing.cpp:126
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr, bool reset_bounding_box=true) override
Definition: VisualizerWithEditing.cpp:49
VisualizerWithEditing(const VisualizerWithEditing &)=delete
unsigned int crop_action_count_
Definition: VisualizerWithEditing.h:108
void MouseScrollCallback(GLFWwindow *window, double x, double y) override
Definition: VisualizerWithEditing.cpp:548
void BuildUtilities() override
Definition: VisualizerWithEditing.cpp:161
std::shared_ptr< glsl::PointCloudPickerRenderer > pointcloud_picker_renderer_ptr_
Definition: VisualizerWithEditing.h:99
VisualizerWithEditing(double voxel_size=-1.0, bool use_dialog=true, const std::string &directory="")
Definition: VisualizerWithEditing.h:49
Definition: PinholeCameraIntrinsic.cpp:35