ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
PCLDisplayTools.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 #pragma once
9 
10 // Local
11 #include <Utils/PCLCloud.h>
12 
13 #include "ImageVis.h"
14 #include "PCLVis.h"
15 #include "Tools/Common/ecvTools.h"
17 #include "qPCL.h"
18 
19 // CV_CORE_LIB
20 #include <CVMath.h>
21 
22 // CV_DB_LIB
23 #include <ecvDisplayTools.h>
24 
25 // system
26 #include <list>
27 #include <string>
28 
29 class ccHObject;
30 class ImageVis;
31 class ccSensor;
32 class ccGenericMesh;
33 class ccImage;
34 class ecvOrientedBBox;
35 class ccPointCloud;
36 class QMainWindow;
37 
38 namespace cloudViewer {
39 namespace geometry {
40 class LineSet;
41 }
42 } // namespace cloudViewer
43 
46 public:
48  PCLDisplayTools() = default;
49 
51  virtual ~PCLDisplayTools() override;
52 
53 public: // inherit from ecvDisplayTools
54  inline virtual ecvGenericVisualizer3D* getVisualizer3D() override {
55  return get3DViewer();
56  }
57  inline virtual ecvGenericVisualizer2D* getVisualizer2D() override {
58  return get2DViewer();
59  }
60 
61  inline QVTKWidgetCustom* getQVtkWidget() { return this->m_vtkWidget; }
62 
63  inline virtual void toWorldPoint(const CCVector3d& input2D,
64  CCVector3d& output3D) override {
65  getQVtkWidget()->toWorldPoint(input2D, output3D);
66  }
67  inline virtual void toWorldPoint(const CCVector3& input2D,
68  CCVector3d& output3D) override {
69  getQVtkWidget()->toWorldPoint(input2D, output3D);
70  }
71 
72  virtual void toDisplayPoint(const CCVector3d& worldPos,
73  CCVector3d& displayPos) override {
74  getQVtkWidget()->toDisplayPoint(worldPos, displayPos);
75  }
76  virtual void toDisplayPoint(const CCVector3& worldPos,
77  CCVector3d& displayPos) override {
78  getQVtkWidget()->toDisplayPoint(worldPos, displayPos);
79  }
80 
81  virtual void displayText(const CC_DRAW_CONTEXT& context) override;
82 
83  virtual void toggle2Dviewer(bool state) override;
84 
85  virtual void drawWidgets(const WIDGETS_PARAMETER& param) override;
86  virtual void changeEntityProperties(PROPERTY_PARAM& param) override;
87 
88  virtual void transformCameraView(const ccGLMatrixd& viewMat) override;
89  virtual void transformCameraProjection(const ccGLMatrixd& projMat) override;
90 
91  virtual void draw(const CC_DRAW_CONTEXT& context,
92  const ccHObject* obj) override;
93 
94  virtual void updateMeshTextures(const CC_DRAW_CONTEXT& context,
95  const ccGenericMesh* mesh) override;
96 
97  bool checkEntityNeedUpdate(std::string& viewID, const ccHObject* obj);
98 
99  virtual void drawBBox(const CC_DRAW_CONTEXT& context,
100  const ccBBox* bbox) override;
101 
102  virtual void drawOrientedBBox(const CC_DRAW_CONTEXT& context,
103  const ecvOrientedBBox* obb) override;
104 
105  virtual bool orientationMarkerShown() override;
106  virtual void toggleOrientationMarker(bool state) override;
107 
108  virtual void removeEntities(const CC_DRAW_CONTEXT& context) override;
109  virtual bool hideShowEntities(const CC_DRAW_CONTEXT& context) override;
110 
123  inline virtual void createViewPort(double xmin,
124  double ymin,
125  double xmax,
126  double ymax,
127  int& viewport) override {
128  m_visualizer3D->createViewPort(xmin, ymin, xmax, ymax, viewport);
129  }
130 
131  inline virtual void resetCameraViewpoint(
132  const std::string& viewID) override {
133  m_visualizer3D->resetCameraViewpoint(viewID);
134  }
135 
136  inline virtual void setBackgroundColor(
137  const CC_DRAW_CONTEXT& context) override {
138  getQVtkWidget()->setBackgroundColor(
139  ecvTools::TransFormRGB(context.backgroundCol),
140  ecvTools::TransFormRGB(context.backgroundCol2),
141  context.drawBackgroundGradient);
142  }
143 
144  inline virtual void showOrientationMarker() override {
145  m_visualizer3D->showPclMarkerAxes(
146  m_visualizer3D->getRenderWindowInteractor());
147  }
148 
149  inline virtual void drawCoordinates(double scale = 1.0,
150  const std::string& id = "reference",
151  int viewport = 0) override {
152  m_visualizer3D->addCoordinateSystem(scale, id, viewport);
153  }
154 
155  inline virtual void rotateWithAxis(const CCVector2i& pos,
156  const CCVector3d& axis,
157  double angle,
158  int viewport = 0) override {
159  m_visualizer3D->rotateWithAxis(pos, axis, angle, viewport);
160  }
161 
162 public:
163  // set and get camera parameters
164  inline virtual void resetCamera() override {
165  m_visualizer3D->resetCamera();
166  }
167  inline virtual void resetCamera(const ccBBox* bbox) override {
168  m_visualizer3D->resetCamera(bbox);
169  }
170  inline virtual void updateCamera() override {
171  // PCL's updateCamera() is deprecated and will be removed in PCL 1.15
172  // Only call it for PCL versions < 1.15
173 #if defined(PCL_VERSION_COMPARE)
174 #if PCL_VERSION_COMPARE(<, 1, 13, 0)
175  m_visualizer3D->updateCamera();
176 #endif
177 #elif defined(PCL_MAJOR_VERSION) && defined(PCL_MINOR_VERSION)
178 #if (PCL_MAJOR_VERSION < 1) || \
179  (PCL_MAJOR_VERSION == 1 && PCL_MINOR_VERSION < 13)
180  m_visualizer3D->updateCamera();
181 #endif
182 #else
183  // If version macros are not available, assume older version and call it
184  // This maintains backward compatibility
185  // m_visualizer3D->updateCamera();
186 #endif
187  }
188 
189  inline virtual void updateScene() override {
190  getQVtkWidget()->updateScene();
191  }
192 
193  inline virtual void setAutoUpateCameraPos(bool state) override {
194  if (this->m_visualizer3D) {
195  this->m_visualizer3D->setAutoUpateCameraPos(state);
196  }
197  }
198 
202  inline virtual void getCenterOfRotation(double center[3]) override {
203  if (this->m_visualizer3D) {
204  this->m_visualizer3D->getCenterOfRotation(center);
205  }
206  }
207 
211  inline virtual void resetCenterOfRotation(int viewport = 0) override {
212  if (this->m_visualizer3D) {
213  this->m_visualizer3D->resetCenterOfRotation(viewport);
214  }
215  }
216 
223  inline virtual void setCenterOfRotation(double x,
224  double y,
225  double z) override {
226  if (this->m_visualizer3D) {
227  this->m_visualizer3D->setCenterOfRotation(x, y, z);
228  }
229  }
230  inline void setCenterOfRotation(const double xyz[3]) {
231  this->setCenterOfRotation(xyz[0], xyz[1], xyz[2]);
232  }
233 
234  virtual void setPivotVisibility(bool state) override {
235  if (this->m_visualizer3D) {
236  this->m_visualizer3D->setCenterAxesVisibility(state);
237  }
238  }
239 
240  inline virtual void resetCameraClippingRange(int viewport = 0) override {
241  if (m_visualizer3D) {
242  m_visualizer3D->resetCameraClippingRange(viewport);
243  }
244  }
245 
246  inline virtual double getGLDepth(int x, int y) override {
247  if (m_visualizer3D) {
248  return m_visualizer3D->getGLDepth(x, y);
249  } else {
250  return 1.0;
251  }
252  }
253 
254  inline virtual void zoomCamera(double zoomFactor,
255  int viewport = 0) override {
256  m_visualizer3D->zoomCamera(zoomFactor, viewport);
257  }
258 
259  inline virtual double getCameraFocalDistance(int viewport = 0) override {
260  return m_visualizer3D->getCameraFocalDistance(viewport);
261  }
262  inline virtual void setCameraFocalDistance(double focal_distance,
263  int viewport = 0) override {
264  m_visualizer3D->setCameraFocalDistance(focal_distance, viewport);
265  }
266 
267  inline virtual void getCameraPos(double* pos, int viewport = 0) override {
268  const pcl::visualization::Camera& cam =
269  m_visualizer3D->getCamera(viewport);
270  pos[0] = cam.pos[0];
271  pos[1] = cam.pos[1];
272  pos[2] = cam.pos[2];
273  }
274  inline virtual void getCameraFocal(double* focal,
275  int viewport = 0) override {
276  const pcl::visualization::Camera& cam =
277  m_visualizer3D->getCamera(viewport);
278  focal[0] = cam.focal[0];
279  focal[1] = cam.focal[1];
280  focal[2] = cam.focal[2];
281  }
282  inline virtual void getCameraUp(double* up, int viewport = 0) override {
283  const pcl::visualization::Camera& cam =
284  m_visualizer3D->getCamera(viewport);
285  up[0] = cam.view[0];
286  up[1] = cam.view[1];
287  up[2] = cam.view[2];
288  }
289 
290  inline virtual void setCameraPosition(const CCVector3d& pos,
291  int viewport = 0) override {
292  getQVtkWidget()->setCameraPosition(pos);
293  }
294 
295  inline virtual void setCameraPosition(const double* pos,
296  const double* focal,
297  const double* up,
298  int viewport = 0) override {
299  m_visualizer3D->setCameraPosition(pos[0], pos[1], pos[2], focal[0],
300  focal[1], focal[2], up[0], up[1],
301  up[2], viewport);
302  }
303 
304  inline virtual void setCameraPosition(const double* pos,
305  const double* up,
306  int viewport = 0) override {
307  m_visualizer3D->setCameraPosition(pos[0], pos[1], pos[2], up[0], up[1],
308  up[2], viewport);
309  }
310 
311  inline virtual void setCameraPosition(double pos_x,
312  double pos_y,
313  double pos_z,
314  double view_x,
315  double view_y,
316  double view_z,
317  double up_x,
318  double up_y,
319  double up_z,
320  int viewport = 0) override {
321  m_visualizer3D->setCameraPosition(pos_x, pos_y, pos_z, view_x, view_y,
322  view_z, up_x, up_y, up_z, viewport);
323  }
324 
325  inline virtual void setRenderWindowSize(int xw, int yw) override {
326  getQVtkWidget()->GetRenderWindow()->SetPosition(0, 0);
327  getQVtkWidget()->GetRenderWindow()->SetSize(xw, yw);
328  }
329 
330  inline virtual void fullScreen(bool state) override {
331  m_visualizer3D->setFullScreen(state);
332  }
333 
334  inline virtual void setOrthoProjection(int viewport = 0) override {
335  if (m_visualizer3D) {
336  m_visualizer3D->setOrthoProjection(viewport);
337  m_visualizer3D->resetCameraClippingRange(viewport);
338  }
339  }
340  inline virtual void setPerspectiveProjection(int viewport = 0) override {
341  if (m_visualizer3D) {
342  m_visualizer3D->setPerspectiveProjection(viewport);
343  m_visualizer3D->resetCameraClippingRange(viewport);
344  }
345  }
346 
347  // set and get clip distances (near and far)
348  inline virtual void getCameraClip(double* clipPlanes,
349  int viewport = 0) override {
350  const pcl::visualization::Camera& cam =
351  m_visualizer3D->getCamera(viewport);
352  clipPlanes[0] = cam.clip[0];
353  clipPlanes[1] = cam.clip[1];
354  }
355  inline virtual void setCameraClip(double znear,
356  double zfar,
357  int viewport = 0) override {
358  if (m_visualizer3D) {
359  m_visualizer3D->setCameraClipDistances(znear, zfar, viewport);
360  }
361  }
362 
363  // set and get view angle in y direction or zoom factor in perspective mode
364  inline virtual double getCameraFovy(int viewport = 0) override {
366  m_visualizer3D->getCamera(viewport).fovy);
367  }
368  inline virtual void setCameraFovy(double fovy, int viewport = 0) override {
369  m_visualizer3D->setCameraFieldOfView(fovy, viewport);
370  }
371 
372  // get zoom factor in parallel mode
373  virtual double getParallelScale(int viewport = 0) override;
374  virtual void setParallelScale(double scale, int viewport = 0) override;
375 
379  inline virtual void saveScreenshot(const std::string& file) override {
380  m_visualizer3D->saveScreenshot(file);
381  }
382 
386  inline virtual void saveCameraParameters(const std::string& file) override {
387  m_visualizer3D->saveCameraParameters(file);
388  }
389  inline virtual void loadCameraParameters(const std::string& file) override {
390  m_visualizer3D->loadCameraParameters(file);
391  }
392 
398  inline virtual void setUseVbos(bool useVbos) override {
399  m_visualizer3D->setUseVbos(useVbos);
400  }
401 
405  inline virtual void setLookUpTableID(const std::string& viewID) override {
406  m_visualizer3D->setLookUpTableID(viewID);
407  }
408 
409  virtual void getProjectionMatrix(double* projArray,
410  int viewport = 0) override;
411  virtual void getViewMatrix(double* ViewArray, int viewport = 0) override;
412  virtual void setViewMatrix(const ccGLMatrixd& viewMat,
413  int viewport = 0) override;
414 
415  virtual void changeOpacity(double opacity,
416  const std::string& viewID,
417  int viewport = 0) override;
418 
419 public:
420  inline PclUtils::PCLVis* get3DViewer() { return m_visualizer3D.get(); }
421  inline PclUtils::ImageVis* get2DViewer() { return m_visualizer2D.get(); }
422 
423  virtual QString pick2DLabel(int x, int y) override;
424 
425  virtual QString pick3DItem(int x = -1, int y = -1) override;
426  virtual QString pickObject(double x = -1, double y = -1) override;
427 
428  virtual QImage renderToImage(int zoomFactor = 1,
429  bool renderOverlayItems = false,
430  bool silent = false,
431  int viewport = 0) override;
432 
433  virtual void setScaleBarVisible(bool visible) override {
434  if (getQVtkWidget()) getQVtkWidget()->setScaleBarVisible(visible);
435  }
436 
437  // ========== View Properties (ParaView-compatible) ==========
438  // Note: These are PCLDisplayTools-specific methods, not part of
439  // ecvDisplayTools interface They delegate to PCLVis for VTK-level
440  // implementation
441 
454  void SetDataAxesGridProperties(const std::string& viewID,
455  bool visible,
456  const std::array<double, 3>& color,
457  double lineWidth,
458  double spacing,
459  int subdivisions,
460  bool showLabels,
461  double opacity);
462 
467  void GetDataAxesGridProperties(const std::string& viewID,
468  bool& visible,
469  std::array<double, 3>& color,
470  double& lineWidth,
471  double& spacing,
472  int& subdivisions,
473  bool& showLabels,
474  double& opacity) const;
475 
480  void ToggleCameraOrientationWidget(bool show);
481 
486  bool IsCameraOrientationWidgetShown() const;
487 
488  // Override base class virtual methods
489  void toggleCameraOrientationWidget(bool show) override;
490  bool isCameraOrientationWidgetShown() const override;
491 
497  void setLightIntensity(double intensity) override;
498 
503  double getLightIntensity() const override;
504 
505  // ========================================================================
506  // Data Axes Grid (Unified Interface with AxesGridProperties)
507  // ========================================================================
508 
516  void setDataAxesGridProperties(const QString& viewID,
517  const AxesGridProperties& props,
518  int viewport = 0) override;
519 
526  void getDataAxesGridProperties(const QString& viewID,
527  AxesGridProperties& props,
528  int viewport = 0) const override;
529 
530 private:
531  void drawPointCloud(const CC_DRAW_CONTEXT& context, ccPointCloud* ecvCloud);
532  void drawMesh(CC_DRAW_CONTEXT& context, ccGenericMesh* mesh);
533  void drawPolygon(const CC_DRAW_CONTEXT& context, ccPolyline* polyline);
534  void drawLines(const CC_DRAW_CONTEXT& context,
536  void drawImage(const CC_DRAW_CONTEXT& context, ccImage* image);
537  void drawSensor(const CC_DRAW_CONTEXT& context, ccSensor* sensor);
538 
539  bool updateEntityColor(const CC_DRAW_CONTEXT& context, ccHObject* ent);
540 
541 protected:
542  // QVTKOpenGLNativeWidget
543  QVTKWidgetCustom* m_vtkWidget = nullptr;
544 
545  PclUtils::ImageVisPtr m_visualizer2D = nullptr;
546 
547  PclUtils::PCLVisPtr m_visualizer3D = nullptr;
548 
549  virtual void registerVisualizer(QMainWindow* widget,
550  bool stereoMode = false) override;
551 };
std::shared_ptr< core::Tensor > image
math::float4 color
CC to PCL cloud converter.
virtual void setAutoUpateCameraPos(bool state) override
virtual void setPivotVisibility(bool state) override
virtual void fullScreen(bool state) override
virtual double getCameraFovy(int viewport=0) override
virtual void setCameraPosition(double pos_x, double pos_y, double pos_z, double view_x, double view_y, double view_z, double up_x, double up_y, double up_z, int viewport=0) override
virtual void setOrthoProjection(int viewport=0) override
QVTKWidgetCustom * getQVtkWidget()
virtual void setRenderWindowSize(int xw, int yw) override
void GetDataAxesGridProperties(const std::string &viewID, bool &visible, std::array< double, 3 > &color, double &lineWidth, double &spacing, int &subdivisions, bool &showLabels, double &opacity) const
Get Data Axes Grid properties for a specific object.
virtual void saveCameraParameters(const std::string &file) override
Save or Load the current rendered camera parameters to disk or current camera.
virtual void getCameraFocal(double *focal, int viewport=0) override
virtual void createViewPort(double xmin, double ymin, double xmax, double ymax, int &viewport) override
Create a new viewport from [xmin,ymin] -> [xmax,ymax].
virtual void setCameraPosition(const CCVector3d &pos, int viewport=0) override
virtual void setCameraClip(double znear, double zfar, int viewport=0) override
virtual void setUseVbos(bool useVbos) override
Use Vertex Buffer Objects renderers. This is an optimization for the obsolete OpenGL backend....
virtual void resetCamera() override
virtual ecvGenericVisualizer2D * getVisualizer2D() override
virtual void setCameraPosition(const double *pos, const double *focal, const double *up, int viewport=0) override
virtual ecvGenericVisualizer3D * getVisualizer3D() override
virtual void showOrientationMarker() override
virtual void setBackgroundColor(const CC_DRAW_CONTEXT &context) override
virtual void toWorldPoint(const CCVector3d &input2D, CCVector3d &output3D) override
virtual void getCameraUp(double *up, int viewport=0) override
virtual void resetCamera(const ccBBox *bbox) override
virtual void getCameraClip(double *clipPlanes, int viewport=0) override
virtual void zoomCamera(double zoomFactor, int viewport=0) override
virtual void setCameraFocalDistance(double focal_distance, int viewport=0) override
virtual void setScaleBarVisible(bool visible) override
PclUtils::PCLVis * get3DViewer()
virtual void updateScene() override
virtual void getCameraPos(double *pos, int viewport=0) override
PclUtils::ImageVis * get2DViewer()
virtual void loadCameraParameters(const std::string &file) override
PCLDisplayTools()=default
Constructor.
virtual void setCameraFovy(double fovy, int viewport=0) override
virtual void saveScreenshot(const std::string &file) override
Save the current rendered image to disk, as a PNG screen shot.
virtual void setPerspectiveProjection(int viewport=0) override
virtual void resetCenterOfRotation(int viewport=0) override
virtual void setCameraPosition(const double *pos, const double *up, int viewport=0) override
virtual void resetCameraClippingRange(int viewport=0) override
void setCenterOfRotation(const double xyz[3])
void SetDataAxesGridProperties(const std::string &viewID, bool visible, const std::array< double, 3 > &color, double lineWidth, double spacing, int subdivisions, bool showLabels, double opacity)
Set Data Axes Grid properties (ParaView-style) Each ccHObject has its own Data Axes Grid bound to its...
virtual void setLookUpTableID(const std::string &viewID) override
Set the ID of a cloud or shape to be used for LUT display.
virtual void toDisplayPoint(const CCVector3 &worldPos, CCVector3d &displayPos) override
virtual void updateCamera() override
virtual double getGLDepth(int x, int y) override
virtual void drawCoordinates(double scale=1.0, const std::string &id="reference", int viewport=0) override
virtual void getCenterOfRotation(double center[3]) override
virtual double getCameraFocalDistance(int viewport=0) override
virtual void setCenterOfRotation(double x, double y, double z) override
virtual void rotateWithAxis(const CCVector2i &pos, const CCVector3d &axis, double angle, int viewport=0) override
virtual void toWorldPoint(const CCVector3 &input2D, CCVector3d &output3D) override
virtual void toDisplayPoint(const CCVector3d &worldPos, CCVector3d &displayPos) override
virtual void resetCameraViewpoint(const std::string &viewID) override
Container widget for vtk.
2D Vector
Definition: CVGeom.h:32
Bounding box structure.
Definition: ecvBBox.h:25
Double version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:56
Generic mesh interface.
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Generic image.
Definition: ecvImage.h:19
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
Colored polyline.
Definition: ecvPolyline.h:24
Generic sensor interface.
Definition: ecvSensor.h:27
LineSet define a sets of lines in 3D. A typical application is to display the point cloud corresponde...
Definition: LineSet.h:29
virtual void toggle2Dviewer(bool state)
virtual void transformCameraView(const ccGLMatrixd &viewMat)
virtual void transformCameraProjection(const ccGLMatrixd &projMat)
virtual QString pick3DItem(int x=-1, int y=-1)
virtual QString pick2DLabel(int x, int y)
virtual void toggleOrientationMarker(bool state=true)
virtual void displayText(const CC_DRAW_CONTEXT &CONTEXT)
virtual void drawWidgets(const WIDGETS_PARAMETER &param)
virtual QString pickObject(double x=-1, double y=-1)
virtual void getViewMatrix(double *viewArray, int viewport=0)
virtual void setViewMatrix(const ccGLMatrixd &viewMat, int viewport=0)
virtual void setDataAxesGridProperties(const QString &viewID, const AxesGridProperties &props, int viewport=0)
Set Data Axes Grid properties (Virtual interface for derived classes)
virtual void drawBBox(const CC_DRAW_CONTEXT &context, const ccBBox *bbox)
static void ToggleCameraOrientationWidget(bool show)
virtual void getDataAxesGridProperties(const QString &viewID, AxesGridProperties &props, int viewport=0) const
Get Data Axes Grid properties (Virtual interface for derived classes)
virtual QImage renderToImage(int zoomFactor=1, bool renderOverlayItems=false, bool silent=false, int viewport=0)
virtual bool isCameraOrientationWidgetShown() const
virtual void removeEntities(const CC_DRAW_CONTEXT &CONTEXT)
virtual void changeEntityProperties(PROPERTY_PARAM &propertyParam)
virtual bool hideShowEntities(const CC_DRAW_CONTEXT &CONTEXT)
virtual double getLightIntensity() const
virtual void setCenterOfRotation(double x, double y, double z)
virtual void updateMeshTextures(const CC_DRAW_CONTEXT &context, const ccGenericMesh *mesh)
virtual void registerVisualizer(QMainWindow *win, bool stereoMode=false)=0
register visualizer callback function
virtual double getParallelScale(int viewport=0)
virtual void setParallelScale(double scale, int viewport=0)
virtual void changeOpacity(double opacity, const std::string &viewID, int viewport=0)
virtual void drawOrientedBBox(const CC_DRAW_CONTEXT &context, const ecvOrientedBBox *obb)
virtual void draw(const CC_DRAW_CONTEXT &context, const ccHObject *obj)
virtual void getProjectionMatrix(double *projArray, int viewport=0)
virtual bool orientationMarkerShown()
static bool IsCameraOrientationWidgetShown()
Check if Camera Orientation Widget is shown.
virtual void toggleCameraOrientationWidget(bool show)
virtual void setLightIntensity(double intensity)
Generic visualizer 2D interface.
Generic visualizer 3D interface.
ImGuiContext * context
Definition: Window.cpp:76
normal_z y
normal_z x
normal_z z
std::shared_ptr< ImageVis > ImageVisPtr
Definition: ImageVis.h:183
std::shared_ptr< PCLVis > PCLVisPtr
Definition: PCLVis.h:808
Generic file read and write utility for python interface.
float RadiansToDegrees(int radians)
Convert radians to degrees.
Definition: CVMath.h:71
static ecvColor::Rgbf TransFormRGB(const ecvColor::Rgb &col)
Definition: ecvTools.h:53
#define QPCL_ENGINE_LIB_API
Definition: qPCL.h:15
Data Axes Grid properties structure Encapsulates all properties for vtkCubeAxesActor configuration.
Display context.