Open3D (C++ API)  0.16.0
GeometryRenderer.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
41
42namespace open3d {
43namespace visualization {
44
45namespace glsl {
46
48public:
49 virtual ~GeometryRenderer() {}
50
51public:
52 virtual bool Render(const RenderOption &option,
53 const ViewControl &view) = 0;
54
61 virtual bool AddGeometry(
62 std::shared_ptr<const geometry::Geometry> geometry_ptr) = 0;
63
66 virtual bool UpdateGeometry() = 0;
67
68 bool HasGeometry() const { return bool(geometry_ptr_); }
69 std::shared_ptr<const geometry::Geometry> GetGeometry() const {
70 return geometry_ptr_;
71 }
72
74 std::shared_ptr<const geometry::Geometry> geometry_ptr) const {
75 return geometry_ptr_ == geometry_ptr;
76 }
77
78 bool IsVisible() const { return is_visible_; }
79 void SetVisible(bool visible) { is_visible_ = visible; };
80
81protected:
82 std::shared_ptr<const geometry::Geometry> geometry_ptr_;
83 bool is_visible_ = true;
84};
85
87public:
88 ~PointCloudRenderer() override {}
89
90public:
91 bool Render(const RenderOption &option, const ViewControl &view) override;
92 bool AddGeometry(
93 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
94 bool UpdateGeometry() override;
95
96protected:
101};
102
104public:
106
107public:
108 bool Render(const RenderOption &option, const ViewControl &view) override;
109 bool AddGeometry(
110 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
111 bool UpdateGeometry() override;
112
113protected:
115};
116
118public:
119 ~LineSetRenderer() override {}
120
121public:
122 bool Render(const RenderOption &option, const ViewControl &view) override;
123 bool AddGeometry(
124 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
125 bool UpdateGeometry() override;
126
127protected:
129};
130
132public:
133 ~TetraMeshRenderer() override {}
134
135public:
136 bool Render(const RenderOption &option, const ViewControl &view) override;
137 bool AddGeometry(
138 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
139 bool UpdateGeometry() override;
140
141protected:
143};
144
146public:
148
149public:
150 bool Render(const RenderOption &option, const ViewControl &view) override;
151 bool AddGeometry(
152 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
153 bool UpdateGeometry() override;
154
155protected:
157};
158
160public:
162
163public:
164 bool Render(const RenderOption &option, const ViewControl &view) override;
165 bool AddGeometry(
166 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
167 bool UpdateGeometry() override;
168
169protected:
172};
173
175public:
177
178public:
179 bool Render(const RenderOption &option, const ViewControl &view) override;
180 bool AddGeometry(
181 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
182 bool UpdateGeometry() override;
183
184protected:
191};
192
194public:
195 ~VoxelGridRenderer() override {}
196
197public:
198 bool Render(const RenderOption &option, const ViewControl &view) override;
199 bool AddGeometry(
200 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
201 bool UpdateGeometry() override;
202
203protected:
206};
207
209public:
210 ~OctreeRenderer() override {}
211
212public:
213 bool Render(const RenderOption &option, const ViewControl &view) override;
214 bool AddGeometry(
215 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
216 bool UpdateGeometry() override;
217
218protected:
221};
222
224public:
225 ~ImageRenderer() override {}
226
227public:
228 bool Render(const RenderOption &option, const ViewControl &view) override;
229 bool AddGeometry(
230 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
231 bool UpdateGeometry() override;
232
233protected:
235};
236
238public:
239 ~RGBDImageRenderer() override {}
240
241public:
242 bool Render(const RenderOption &option, const ViewControl &view) override;
243 bool AddGeometry(
244 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
245 bool UpdateGeometry() override;
246
247protected:
249};
250
252public:
254
255public:
256 bool Render(const RenderOption &option, const ViewControl &view) override;
257 bool AddGeometry(
258 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
259 bool UpdateGeometry() override;
260
261protected:
263};
264
266public:
268
269public:
270 bool Render(const RenderOption &option, const ViewControl &view) override;
271 bool AddGeometry(
272 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
273 bool UpdateGeometry() override;
274
275protected:
278};
279
281public:
283
284public:
285 bool Render(const RenderOption &option, const ViewControl &view) override;
286 bool AddGeometry(
287 std::shared_ptr<const geometry::Geometry> geometry_ptr) override;
288 bool UpdateGeometry() override;
289
290protected:
292};
293
294} // namespace glsl
295
296} // namespace visualization
297} // namespace open3d
Defines rendering options for visualizer.
Definition: RenderOption.h:39
View controller for visualizer.
Definition: ViewControl.h:41
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:227
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:234
~AxisAlignedBoundingBoxRenderer() override
Definition: GeometryRenderer.h:161
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:244
SimpleShaderForAxisAlignedBoundingBox simple_axis_aligned_bounding_box_shader_
Definition: GeometryRenderer.h:171
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:363
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:343
~CoordinateFrameRenderer() override
Definition: GeometryRenderer.h:253
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:351
PhongShaderForTriangleMesh phong_shader_
Definition: GeometryRenderer.h:262
Definition: GeometryRenderer.h:47
virtual bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr)=0
void SetVisible(bool visible)
Definition: GeometryRenderer.h:79
bool is_visible_
Definition: GeometryRenderer.h:83
std::shared_ptr< const geometry::Geometry > geometry_ptr_
Definition: GeometryRenderer.h:82
std::shared_ptr< const geometry::Geometry > GetGeometry() const
Definition: GeometryRenderer.h:69
virtual ~GeometryRenderer()
Definition: GeometryRenderer.h:49
bool HasGeometry() const
Definition: GeometryRenderer.h:68
virtual bool Render(const RenderOption &option, const ViewControl &view)=0
bool HasGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) const
Definition: GeometryRenderer.h:73
bool IsVisible() const
Definition: GeometryRenderer.h:78
Definition: GeometryRenderer.h:223
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:317
ImageShaderForImage image_shader_
Definition: GeometryRenderer.h:234
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:307
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:301
~ImageRenderer() override
Definition: GeometryRenderer.h:225
Definition: GeometryRenderer.h:117
SimpleShaderForLineSet simple_lineset_shader_
Definition: GeometryRenderer.h:128
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:163
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:169
~LineSetRenderer() override
Definition: GeometryRenderer.h:119
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:179
Definition: GeometryRenderer.h:208
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:157
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:132
SimpleShaderForOctreeLine simple_shader_for_octree_line_
Definition: GeometryRenderer.h:219
~OctreeRenderer() override
Definition: GeometryRenderer.h:210
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:147
SimpleShaderForOctreeFace simple_shader_for_octree_face_
Definition: GeometryRenderer.h:220
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:222
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:205
~OrientedBoundingBoxRenderer() override
Definition: GeometryRenderer.h:147
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:212
SimpleShaderForOrientedBoundingBox simple_oriented_bounding_box_shader_
Definition: GeometryRenderer.h:156
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:395
~PointCloudPickerRenderer() override
Definition: GeometryRenderer.h:282
PhongShaderForTriangleMesh phong_shader_
Definition: GeometryRenderer.h:291
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:443
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:433
PickingShaderForPointCloud picking_shader_
Definition: GeometryRenderer.h:114
~PointCloudPickingRenderer() override
Definition: GeometryRenderer.h:105
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:82
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:99
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:89
Definition: GeometryRenderer.h:86
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:42
PhongShaderForPointCloud phong_point_shader_
Definition: GeometryRenderer.h:98
SimpleBlackShaderForPointCloudNormal simpleblack_normal_shader_
Definition: GeometryRenderer.h:100
~PointCloudRenderer() override
Definition: GeometryRenderer.h:88
NormalShaderForPointCloud normal_point_shader_
Definition: GeometryRenderer.h:99
SimpleShaderForPointCloud simple_point_shader_
Definition: GeometryRenderer.h:97
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:64
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:74
Definition: GeometryRenderer.h:237
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:338
RGBDImageShaderForImage rgbd_image_shader_
Definition: GeometryRenderer.h:248
~RGBDImageRenderer() override
Definition: GeometryRenderer.h:239
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:322
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:328
ImageMaskShaderForImage image_mask_shader_
Definition: GeometryRenderer.h:277
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:389
~SelectionPolygonRenderer() override
Definition: GeometryRenderer.h:267
Simple2DShaderForSelectionPolygon simple2d_shader_
Definition: GeometryRenderer.h:276
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:379
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:368
Definition: GeometryRenderer.h:131
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:190
~TetraMeshRenderer() override
Definition: GeometryRenderer.h:133
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:200
SimpleShaderForTetraMesh simple_tetramesh_shader_
Definition: GeometryRenderer.h:142
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:184
Definition: GeometryRenderer.h:174
SimpleShaderForTriangleMesh simple_mesh_shader_
Definition: GeometryRenderer.h:185
TexturePhongShaderForTriangleMesh texture_phong_mesh_shader_
Definition: GeometryRenderer.h:188
~TriangleMeshRenderer() override
Definition: GeometryRenderer.h:176
TextureSimpleShaderForTriangleMesh texture_simple_mesh_shader_
Definition: GeometryRenderer.h:186
NormalShaderForTriangleMesh normal_mesh_shader_
Definition: GeometryRenderer.h:189
PhongShaderForTriangleMesh phong_mesh_shader_
Definition: GeometryRenderer.h:187
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:279
SimpleBlackShaderForTriangleMeshWireFrame simpleblack_wireframe_shader_
Definition: GeometryRenderer.h:190
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:249
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:291
Definition: GeometryRenderer.h:193
SimpleShaderForVoxelGridFace simple_shader_for_voxel_grid_face_
Definition: GeometryRenderer.h:205
~VoxelGridRenderer() override
Definition: GeometryRenderer.h:195
bool Render(const RenderOption &option, const ViewControl &view) override
Definition: GeometryRenderer.cpp:104
bool AddGeometry(std::shared_ptr< const geometry::Geometry > geometry_ptr) override
Definition: GeometryRenderer.cpp:116
SimpleShaderForVoxelGridLine simple_shader_for_voxel_grid_line_
Definition: GeometryRenderer.h:204
bool UpdateGeometry() override
Definition: GeometryRenderer.cpp:126
Definition: PinholeCameraIntrinsic.cpp:35