DGtal 2.1.1
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/sparse_volume_grid.h"
37#include "polyscope/curve_network.h"
38#include "polyscope/surface_mesh.h"
39#include "polyscope/volume_mesh.h"
40#include "polyscope/volume_grid.h"
41#include "polyscope/point_cloud.h"
42#include "polyscope/pick.h"
43
44namespace DGtal {
45 namespace drawutils {
46 // @brief Convert a DGtal color to a glm color
47 glm::vec3 toglm(const DGtal::Color& col);
48
49 // @brief Convert a vector of DGtal color to a vector of glm color
50 std::vector<glm::vec3> toglm(const std::vector<DGtal::Color>& col);
51
52 // @brief Convert an Eigen transform to glm matrix
53 glm::mat4 toglm(const Eigen::Affine3d& transform);
54 }
55
56 template < typename Space = Z3i::Space, typename KSpace = Z3i::KSpace>
57 class PolyscopeViewer : public Display3D<Space, KSpace> {
58 public:
60 polyscope::init();
61 }
62
64 polyscope::init();
65 }
66
67 // @brief Clear the view (ie. remove all polyscope structures)
68 void clearView() override {
69 polyscope::removeAllStructures();
70 }
71
72 // @brief Starts event loop (first render data)
73 void show() override {
76
77 polyscope::show();
78 }
79
80 // @brief Render new data
81 void renderNewData() override;
82
83 // @brief setCallback
84 void setCallback(typename Display3D<Space, KSpace>::Callback* callback) override;
85
86 // @brief Renders the clipping planes
88
90 this->clear();
91 }
92
93 public:
94 static constexpr double BallToCubeRatio = 0.025;
95 static constexpr double VectorScale = 1. / 30.;
96
97 private:
98 void setGeneralProperties(polyscope::Structure* s, const DisplayData<typename Space::RealPoint>& d);
99
100 void registerPointCloud (const std::string& n, const DisplayData<typename Space::RealPoint>& d);
103 void registerVolumeMesh (const std::string& n, const DisplayData<typename Space::RealPoint>& d);
105
106 // @brief Global callback handling UI, click and callback calls
108 };
109}
110
111#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 registerSparseVolumeGrid(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