DGtal 2.1.0
Loading...
Searching...
No Matches
PolyscopeViewer.h
1
15#pragma once
16
28#if !defined(DGTAL_WITH_POLYSCOPE_VIEWER)
29#error DGTAL_WITH_POLYSCOPE_VIEWER flag not set during the cmake step
30#endif
31
32#include "DGtal/io/Display3D.h"
33
34#include "polyscope/polyscope.h"
35
36#include "polyscope/curve_network.h"
37#include "polyscope/surface_mesh.h"
38#include "polyscope/volume_mesh.h"
39#include "polyscope/volume_grid.h"
40#include "polyscope/point_cloud.h"
41#include "polyscope/pick.h"
42
43namespace DGtal {
44 namespace drawutils {
45 // @brief Convert a DGtal color to a glm color
46 glm::vec3 toglm(const DGtal::Color& col);
47
48 // @brief Convert a vector of DGtal color to a vector of glm color
49 std::vector<glm::vec3> toglm(const std::vector<DGtal::Color>& col);
50
51 // @brief Convert an Eigen transform to glm matrix
52 glm::mat4 toglm(const Eigen::Affine3d& transform);
53 }
54
55 template < typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
56 class PolyscopeViewer : public Display3D<Space, KSpace> {
57 public:
59 polyscope::init();
60 }
61
63 polyscope::init();
64 }
65
66 // @brief Clear the view (ie. remove all polyscope structures)
67 void clearView() override {
68 polyscope::removeAllStructures();
69 }
70
71 // @brief Starts event loop (first render data)
72 void show() override {
75
76 polyscope::show();
77 }
78
79 // @brief Render new data
80 void renderNewData() override;
81
82 // @brief setCallback
83 void setCallback(typename Display3D<Space, KSpace>::Callback* callback) override;
84
85 // @brief Renders the clipping planes
87
89 this->clear();
90 }
91
92 public:
93 static constexpr double BallToCubeRatio = 0.025;
94 static constexpr double VectorScale = 1. / 30.;
95
96 private:
97 void setGeneralProperties(polyscope::Structure* s, const DisplayData<typename Space::RealPoint>& d);
98
99 void registerPointCloud (const std::string& n, const DisplayData<typename Space::RealPoint>& d);
102 void registerVolumeMesh (const std::string& n, const DisplayData<typename Space::RealPoint>& d);
103
104 // @brief Global callback handling UI, click and callback calls
106 };
107}
108
109#include "PolyscopeViewer.ih"
Structure representing an RGB triple with alpha component.
Definition Color.h:77
Base class for viewing DGtal objects.
Definition Display3D.h:381
virtual void clear()
Clear the viewer, including screen and internal data.
Aim: This class is a model of CCellularGridSpaceND. It represents the cubical grid as a cell complex,...
void registerVolumeMesh(const std::string &n, const DisplayData< typename Space::RealPoint > &d)
void setGeneralProperties(polyscope::Structure *s, const DisplayData< typename Space::RealPoint > &d)
void setCallback(typename Display3D< Space, KSpace >::Callback *callback) override
void registerPointCloud(const std::string &n, const DisplayData< typename Space::RealPoint > &d)
void show() override
Starts the event loop and display of elements.
static constexpr double BallToCubeRatio
void clearView() override
Clear the screen.
PolyscopeViewer(const KSpace &k)
void registerSurfaceMesh(const std::string &n, const DisplayData< typename Space::RealPoint > &d)
void registerLineNetwork(const std::string &n, const DisplayData< typename Space::RealPoint > &d)
void renderNewData() override
Renders newly added data.
static constexpr double VectorScale
glm::vec3 toglm(const DGtal::Color &col)
DGtal is the top-level namespace which contains all DGtal functions and types.
A general callback for the viewer to give control to the user.
Definition Display3D.h:408
Data required to display an object.
Definition Display3D.h:247