Open3D (C++ API)
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
RenderOption.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 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 
29 #include <Eigen/Core>
30 
32 
33 namespace open3d {
34 namespace visualization {
35 
37 public:
38  // Global options
40  Nearest = 0,
41  Linear = 1,
42  };
43 
44  enum class DepthFunc {
45  Never = 0,
46  Less = 1,
47  Equal = 2,
48  LEqual = 3,
49  Greater = 4,
50  NotEqual = 5,
51  GEqual = 6,
52  Always = 7
53  };
54 
55  // PointCloud options
56  enum class PointColorOption {
57  Default = 0,
58  Color = 1,
59  XCoordinate = 2,
60  YCoordinate = 3,
61  ZCoordinate = 4,
62  Normal = 9,
63  };
64 
65  const double POINT_SIZE_MAX = 25.0;
66  const double POINT_SIZE_MIN = 1.0;
67  const double POINT_SIZE_STEP = 1.0;
68  const double POINT_SIZE_DEFAULT = 5.0;
69  const double LINE_WIDTH_MAX = 10.0;
70  const double LINE_WIDTH_MIN = 1.0;
71  const double LINE_WIDTH_STEP = 1.0;
72  const double LINE_WIDTH_DEFAULT = 1.0;
73 
74  // TriangleMesh options
75  enum class MeshShadeOption {
76  FlatShade = 0,
77  SmoothShade = 1,
78  };
79 
80  enum class MeshColorOption {
81  Default = 0,
82  Color = 1,
83  XCoordinate = 2,
84  YCoordinate = 3,
85  ZCoordinate = 4,
86  Normal = 9,
87  };
88 
89  // Image options
90  enum class ImageStretchOption {
91  OriginalSize = 0,
92  StretchKeepRatio = 1,
93  StretchWithWindow = 2,
94  };
95 
96 public:
98  // VS2013 does not fully support C++11
99  // Array initialization has to be done in constructors.
100  light_position_relative_[0] = Eigen::Vector3d(0, 0, 2);
101  light_position_relative_[1] = Eigen::Vector3d(0, 0, 2);
102  light_position_relative_[2] = Eigen::Vector3d(0, 0, -2);
103  light_position_relative_[3] = Eigen::Vector3d(0, 0, -2);
104  light_color_[0] = Eigen::Vector3d::Ones();
105  light_color_[1] = Eigen::Vector3d::Ones();
106  light_color_[2] = Eigen::Vector3d::Ones();
107  light_color_[3] = Eigen::Vector3d::Ones();
108  light_diffuse_power_[0] = 0.66;
109  light_diffuse_power_[1] = 0.66;
110  light_diffuse_power_[2] = 0.66;
111  light_diffuse_power_[3] = 0.66;
112  light_specular_power_[0] = 0.2;
113  light_specular_power_[1] = 0.2;
114  light_specular_power_[2] = 0.2;
115  light_specular_power_[3] = 0.2;
116  light_specular_shininess_[0] = 100.0;
117  light_specular_shininess_[1] = 100.0;
118  light_specular_shininess_[2] = 100.0;
119  light_specular_shininess_[3] = 100.0;
120  }
121  ~RenderOption() override {}
122 
123 public:
124  bool ConvertToJsonValue(Json::Value &value) const override;
125  bool ConvertFromJsonValue(const Json::Value &value) override;
126 
127 public:
132  } else {
134  }
135  }
136  void ChangePointSize(double change) {
137  point_size_ = std::max(std::min(point_size_ + change * POINT_SIZE_STEP,
138  POINT_SIZE_MAX),
139  POINT_SIZE_MIN);
140  }
141  void SetPointSize(double size) {
142  point_size_ = std::max(std::min(size, POINT_SIZE_MAX), POINT_SIZE_MIN);
143  }
144  void ChangeLineWidth(double change) {
145  line_width_ = std::max(std::min(line_width_ + change * LINE_WIDTH_STEP,
146  LINE_WIDTH_MAX),
147  LINE_WIDTH_MIN);
148  }
153  } else {
155  }
156  }
159  }
162  }
166  } else if (image_stretch_option_ ==
169  } else {
171  }
172  }
173 
174  int GetGLDepthFunc() const;
175 
176 public:
177  // global options
178  Eigen::Vector3d background_color_ = Eigen::Vector3d::Ones();
182 
183  // Phong lighting options
184  bool light_on_ = true;
185  Eigen::Vector3d light_position_relative_[4];
186  Eigen::Vector3d light_color_[4];
187  Eigen::Vector3d light_ambient_color_ = Eigen::Vector3d::Zero();
191 
192  // PointCloud options
195  bool point_show_normal_ = false;
196 
197  // TriangleMesh options
200  bool mesh_show_back_face_ = false;
201  bool mesh_show_wireframe_ = false;
202  Eigen::Vector3d default_mesh_color_ = Eigen::Vector3d(0.7, 0.7, 0.7);
203 
204  // LineSet options
206 
207  // Image options
210  int image_max_depth_ = 3000;
211 
212  // Coordinate frame
214 };
215 
216 } // namespace visualization
217 } // namespace open3d
MeshShadeOption
Definition: RenderOption.h:75
TextureInterpolationOption interpolation_option_
Definition: RenderOption.h:179
const double POINT_SIZE_DEFAULT
Definition: RenderOption.h:68
const double POINT_SIZE_STEP
Definition: RenderOption.h:67
bool point_show_normal_
Definition: RenderOption.h:195
Eigen::Vector3d default_mesh_color_
Definition: RenderOption.h:202
void ToggleMeshShowBackFace()
Definition: RenderOption.h:157
ImageStretchOption
Definition: RenderOption.h:90
ImageStretchOption image_stretch_option_
Definition: RenderOption.h:208
Eigen::Vector3d light_ambient_color_
Definition: RenderOption.h:187
void SetPointSize(double size)
Definition: RenderOption.h:141
MeshColorOption mesh_color_option_
Definition: RenderOption.h:199
void ToggleShadingOption()
Definition: RenderOption.h:150
const double LINE_WIDTH_MIN
Definition: RenderOption.h:70
bool show_coordinate_frame_
Definition: RenderOption.h:213
void ChangePointSize(double change)
Definition: RenderOption.h:136
bool ConvertToJsonValue(Json::Value &value) const override
Definition: RenderOption.cpp:37
int size
Definition: FilePCD.cpp:56
RenderOption()
Definition: RenderOption.h:97
Eigen::Vector3d light_color_[4]
Definition: RenderOption.h:186
bool mesh_show_wireframe_
Definition: RenderOption.h:201
double light_specular_shininess_[4]
Definition: RenderOption.h:190
int image_max_depth_
Definition: RenderOption.h:210
int GetGLDepthFunc() const
Definition: RenderOption.cpp:255
Definition: RenderOption.h:36
const double LINE_WIDTH_STEP
Definition: RenderOption.h:71
void ToggleInterpolationOption()
Definition: RenderOption.h:129
MeshShadeOption mesh_shade_option_
Definition: RenderOption.h:198
DepthFunc depthFunc_
Definition: RenderOption.h:181
void ChangeLineWidth(double change)
Definition: RenderOption.h:144
bool mesh_show_back_face_
Definition: RenderOption.h:200
Eigen::Vector3d light_position_relative_[4]
Definition: RenderOption.h:185
bool ConvertFromJsonValue(const Json::Value &value) override
Definition: RenderOption.cpp:120
MeshColorOption
Definition: RenderOption.h:80
Definition: PinholeCameraIntrinsic.cpp:34
void ToggleLightOn()
Definition: RenderOption.h:128
~RenderOption() override
Definition: RenderOption.h:121
void TogglePointShowNormal()
Definition: RenderOption.h:149
PointColorOption
Definition: RenderOption.h:56
const double LINE_WIDTH_MAX
Definition: RenderOption.h:69
bool light_on_
Definition: RenderOption.h:184
PointColorOption point_color_option_
Definition: RenderOption.h:194
void ToggleMeshShowWireframe()
Definition: RenderOption.h:160
double light_specular_power_[4]
Definition: RenderOption.h:189
double light_diffuse_power_[4]
Definition: RenderOption.h:188
const double LINE_WIDTH_DEFAULT
Definition: RenderOption.h:72
double line_width_
Definition: RenderOption.h:205
Eigen::Vector3d background_color_
Definition: RenderOption.h:178
const double POINT_SIZE_MIN
Definition: RenderOption.h:66
void ToggleImageStretchOption()
Definition: RenderOption.h:163
DepthFunc
Definition: RenderOption.h:44
const double POINT_SIZE_MAX
Definition: RenderOption.h:65
TextureInterpolationOption
Definition: RenderOption.h:39
double point_size_
Definition: RenderOption.h:193
Definition: IJsonConvertible.h:42