Open3D (C++ API)
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,
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,
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,
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
open3d::visualization::RenderOption::light_color_
Eigen::Vector3d light_color_[4]
Definition: RenderOption.h:186
open3d::visualization::RenderOption::GetGLDepthFunc
int GetGLDepthFunc() const
Definition: RenderOption.cpp:255
open3d::visualization::RenderOption::DepthFunc::LEqual
@ LEqual
open3d::visualization::RenderOption::DepthFunc::GEqual
@ GEqual
open3d::visualization::RenderOption::LINE_WIDTH_STEP
const double LINE_WIDTH_STEP
Definition: RenderOption.h:71
open3d::visualization::RenderOption::mesh_show_back_face_
bool mesh_show_back_face_
Definition: RenderOption.h:200
open3d::visualization::RenderOption::line_width_
double line_width_
Definition: RenderOption.h:205
open3d::visualization::RenderOption::ConvertFromJsonValue
bool ConvertFromJsonValue(const Json::Value &value) override
Definition: RenderOption.cpp:120
open3d::visualization::RenderOption::PointColorOption::Normal
@ Normal
open3d::visualization::RenderOption::ToggleMeshShowWireframe
void ToggleMeshShowWireframe()
Definition: RenderOption.h:160
open3d::visualization::RenderOption::MeshColorOption::YCoordinate
@ YCoordinate
open3d::visualization::RenderOption::depthFunc_
DepthFunc depthFunc_
Definition: RenderOption.h:181
open3d::visualization::RenderOption
Definition: RenderOption.h:36
open3d::visualization::RenderOption::MeshShadeOption::SmoothShade
@ SmoothShade
open3d::visualization::RenderOption::DepthFunc::NotEqual
@ NotEqual
open3d::visualization::RenderOption::PointColorOption::ZCoordinate
@ ZCoordinate
open3d::visualization::RenderOption::ToggleInterpolationOption
void ToggleInterpolationOption()
Definition: RenderOption.h:129
open3d::visualization::RenderOption::PointColorOption::YCoordinate
@ YCoordinate
open3d::visualization::RenderOption::MeshColorOption::Color
@ Color
open3d::visualization::RenderOption::point_show_normal_
bool point_show_normal_
Definition: RenderOption.h:195
open3d::visualization::RenderOption::~RenderOption
~RenderOption() override
Definition: RenderOption.h:121
open3d::visualization::RenderOption::TextureInterpolationOption
TextureInterpolationOption
Definition: RenderOption.h:39
open3d::visualization::RenderOption::ConvertToJsonValue
bool ConvertToJsonValue(Json::Value &value) const override
Definition: RenderOption.cpp:37
open3d::visualization::RenderOption::LINE_WIDTH_MIN
const double LINE_WIDTH_MIN
Definition: RenderOption.h:70
open3d::visualization::RenderOption::PointColorOption
PointColorOption
Definition: RenderOption.h:56
open3d::visualization::RenderOption::show_coordinate_frame_
bool show_coordinate_frame_
Definition: RenderOption.h:213
open3d::visualization::RenderOption::SetPointSize
void SetPointSize(double size)
Definition: RenderOption.h:141
open3d::visualization::RenderOption::PointColorOption::XCoordinate
@ XCoordinate
open3d::visualization::RenderOption::ToggleShadingOption
void ToggleShadingOption()
Definition: RenderOption.h:150
open3d::visualization::RenderOption::TextureInterpolationOption::Nearest
@ Nearest
open3d::visualization::RenderOption::image_max_depth_
int image_max_depth_
Definition: RenderOption.h:210
open3d::visualization::RenderOption::ImageStretchOption::OriginalSize
@ OriginalSize
open3d::visualization::RenderOption::LINE_WIDTH_DEFAULT
const double LINE_WIDTH_DEFAULT
Definition: RenderOption.h:72
open3d::visualization::RenderOption::MeshColorOption::Normal
@ Normal
open3d::visualization::RenderOption::LINE_WIDTH_MAX
const double LINE_WIDTH_MAX
Definition: RenderOption.h:69
open3d::visualization::RenderOption::light_specular_power_
double light_specular_power_[4]
Definition: RenderOption.h:189
open3d::visualization::RenderOption::MeshShadeOption::FlatShade
@ FlatShade
open3d::visualization::RenderOption::mesh_color_option_
MeshColorOption mesh_color_option_
Definition: RenderOption.h:199
open3d::visualization::RenderOption::DepthFunc::Always
@ Always
open3d::visualization::RenderOption::TextureInterpolationOption::Linear
@ Linear
size
int size
Definition: FilePCD.cpp:56
open3d::visualization::RenderOption::mesh_shade_option_
MeshShadeOption mesh_shade_option_
Definition: RenderOption.h:198
open3d::visualization::RenderOption::POINT_SIZE_MAX
const double POINT_SIZE_MAX
Definition: RenderOption.h:65
open3d::visualization::RenderOption::DepthFunc
DepthFunc
Definition: RenderOption.h:44
open3d::visualization::RenderOption::ToggleMeshShowBackFace
void ToggleMeshShowBackFace()
Definition: RenderOption.h:157
open3d::visualization::RenderOption::light_ambient_color_
Eigen::Vector3d light_ambient_color_
Definition: RenderOption.h:187
open3d::visualization::RenderOption::ToggleImageStretchOption
void ToggleImageStretchOption()
Definition: RenderOption.h:163
open3d::visualization::RenderOption::ToggleLightOn
void ToggleLightOn()
Definition: RenderOption.h:128
open3d::visualization::RenderOption::point_color_option_
PointColorOption point_color_option_
Definition: RenderOption.h:194
open3d::visualization::RenderOption::MeshColorOption::Default
@ Default
open3d::visualization::RenderOption::TogglePointShowNormal
void TogglePointShowNormal()
Definition: RenderOption.h:149
open3d::visualization::RenderOption::RenderOption
RenderOption()
Definition: RenderOption.h:97
open3d::visualization::RenderOption::DepthFunc::Greater
@ Greater
open3d::visualization::RenderOption::MeshColorOption::XCoordinate
@ XCoordinate
open3d::visualization::RenderOption::background_color_
Eigen::Vector3d background_color_
Definition: RenderOption.h:178
open3d::visualization::RenderOption::DepthFunc::Less
@ Less
open3d::visualization::RenderOption::MeshColorOption::ZCoordinate
@ ZCoordinate
open3d::visualization::RenderOption::default_mesh_color_
Eigen::Vector3d default_mesh_color_
Definition: RenderOption.h:202
open3d::visualization::RenderOption::MeshColorOption
MeshColorOption
Definition: RenderOption.h:80
open3d::visualization::RenderOption::interpolation_option_
TextureInterpolationOption interpolation_option_
Definition: RenderOption.h:179
open3d::visualization::RenderOption::light_specular_shininess_
double light_specular_shininess_[4]
Definition: RenderOption.h:190
open3d
Definition: PinholeCameraIntrinsic.cpp:34
open3d::visualization::RenderOption::ImageStretchOption::StretchKeepRatio
@ StretchKeepRatio
open3d::visualization::RenderOption::point_size_
double point_size_
Definition: RenderOption.h:193
open3d::visualization::RenderOption::MeshShadeOption
MeshShadeOption
Definition: RenderOption.h:75
open3d::visualization::RenderOption::DepthFunc::Never
@ Never
open3d::visualization::RenderOption::PointColorOption::Default
@ Default
open3d::visualization::RenderOption::ChangePointSize
void ChangePointSize(double change)
Definition: RenderOption.h:136
open3d::visualization::RenderOption::ImageStretchOption
ImageStretchOption
Definition: RenderOption.h:90
open3d::visualization::RenderOption::ChangeLineWidth
void ChangeLineWidth(double change)
Definition: RenderOption.h:144
open3d::visualization::RenderOption::DepthFunc::Equal
@ Equal
open3d::visualization::RenderOption::POINT_SIZE_MIN
const double POINT_SIZE_MIN
Definition: RenderOption.h:66
open3d::utility::IJsonConvertible
Definition: IJsonConvertible.h:42
open3d::visualization::RenderOption::light_diffuse_power_
double light_diffuse_power_[4]
Definition: RenderOption.h:188
IJsonConvertible.h
open3d::visualization::RenderOption::POINT_SIZE_STEP
const double POINT_SIZE_STEP
Definition: RenderOption.h:67
open3d::visualization::RenderOption::light_on_
bool light_on_
Definition: RenderOption.h:184
open3d::visualization::RenderOption::mesh_show_wireframe_
bool mesh_show_wireframe_
Definition: RenderOption.h:201
open3d::visualization::RenderOption::PointColorOption::Color
@ Color
open3d::visualization::RenderOption::light_position_relative_
Eigen::Vector3d light_position_relative_[4]
Definition: RenderOption.h:185
open3d::visualization::RenderOption::POINT_SIZE_DEFAULT
const double POINT_SIZE_DEFAULT
Definition: RenderOption.h:68
open3d::visualization::RenderOption::image_stretch_option_
ImageStretchOption image_stretch_option_
Definition: RenderOption.h:208
open3d::visualization::RenderOption::ImageStretchOption::StretchWithWindow
@ StretchWithWindow