Visualizer.cpp
Go to the documentation of this file.
1 #include "Visualizer.h"
2 
3 #include <pcl/common/colors.h>
4 #include <pcl/point_types.h> // for pcl::RGB
5 
7 
9 {
10 
11  Visualizer::Visualizer() = default;
12 
13  Visualizer::Visualizer(const armarx::DebugDrawerTopic& debugDrawer, const std::string& layer) :
14  voxelgrid::Visualizer<Voxel>(debugDrawer, layer)
15  {
16  }
17 
18  Visualizer::~Visualizer() = default;
19 
20  bool
22  {
23  return !visu.voxel.isFree();
24  }
25 
26  void
28  {
29  armarx::DrawColor color{1, 1, 1, 1};
30 
31  const std::map<Label, float> density = visu.voxel.getDensity();
32 
33  const Eigen::Vector3f y = (visu.ori * Eigen::Vector3f::UnitY()) * visu.extents.y();
34  const Eigen::Vector3f posBase = visu.pos - y / 2;
35 
36  float sum = 0;
37  for (const auto& [label, fraction] : density)
38  {
39  const pcl::RGB rgb =
40  pcl::GlasbeyLUT::at(static_cast<unsigned int>(label) % pcl::GlasbeyLUT::size());
41 
42  color = drawer().toDrawColor(rgb, alpha, true);
43 
44  Eigen::Vector3f extents = visu.extents;
45  extents.y() *= fraction;
46 
47  const Eigen::Vector3f position = posBase + y * (sum + fraction / 2);
48  sum += fraction;
49 
50  ARMARX_CHECK_LESS_EQUAL(sum, 1 + 1e-6f);
51 
52  drawer().drawBox({getVoxelLayer(), visu.name + "_" + std::to_string(label)},
53  position,
54  visu.ori,
55  extents,
56  color);
57  }
58  }
59 
60  float
62  {
63  return alpha;
64  }
65 
66  void
68  {
71 
72  this->alpha = value;
73  }
74 
75 
76 } // namespace visionx::voxelgrid::LabelDensity
visionx::voxelgrid::LabelDensity::Visualizer
Visualizer for label density voxel grids.
Definition: Visualizer.h:16
visionx::voxelgrid::LabelDensity::Visualizer::alpha
float alpha
Definition: Visualizer.h:38
armarx::DebugDrawerTopic
The DebugDrawerTopic wraps a DebugDrawerInterfacePrx and provides a more useful interface than the Ic...
Definition: DebugDrawerTopic.h:151
visionx::voxelgrid::Visualizer::VoxelVisuData
Information about a voxel about to-be-drawn.
Definition: Visualizer.hpp:97
visionx::voxelgrid::Visualizer::VoxelVisuData::pos
const Eigen::Vector3f & pos
The voxel.
Definition: Visualizer.hpp:105
visionx::voxelgrid::LabelDensity::Visualizer::Visualizer
Visualizer()
visionx::voxelgrid::Visualizer< Voxel >::drawer
armarx::DebugDrawerTopic & drawer()
Get the debug drawer.
Definition: Visualizer.hpp:124
armarx::DebugDrawerTopic::toDrawColor
static DrawColor toDrawColor(const ColorT &color, float alpha=1, bool byteToFloat=false)
Construct a DrawColor from the given color type.
Definition: DebugDrawerTopic.h:861
visionx::voxelgrid::Visualizer::VoxelVisuData::ori
const Eigen::Quaternionf & ori
The voxel's position.
Definition: Visualizer.hpp:106
visionx::voxelgrid::LabelDensity::Visualizer::setAlpha
void setAlpha(float value)
Set the alpha. Must be in [0, 1].
Definition: Visualizer.cpp:67
cxxopts::value
std::shared_ptr< Value > value()
Definition: cxxopts.hpp:855
visionx::voxelgrid::LabelDensity::Visualizer::isVisible
virtual bool isVisible(const VoxelVisuData &voxelVisu) const override
Indicate whether a voxel shall be drawn.
visionx::voxelgrid::Visualizer< Voxel >::getVoxelLayer
std::string getVoxelLayer() const
Get the layer name.
Definition: Visualizer.hpp:137
visionx::voxelgrid::Visualizer::VoxelVisuData::voxel
const VoxelT & voxel
The voxel's index.
Definition: Visualizer.hpp:103
armarx::DebugDrawerTopic::drawBox
void drawBox(const VisuID &id, const Eigen::Vector3f &position, const Eigen::Quaternionf &orientation, const Eigen::Vector3f &extents, const DrawColor &color=DEFAULTS.colorBox, bool ignoreLengthScale=false)
Draw a box.
Definition: DebugDrawerTopic.cpp:207
visionx::voxelgrid::LabelDensity::Voxel
Map of labels (object IDs) to number of points.
Definition: VoxelGrid.h:26
armarx::to_string
const std::string & to_string(const std::string &s)
Definition: StringHelpers.h:41
ARMARX_CHECK_LESS_EQUAL
#define ARMARX_CHECK_LESS_EQUAL(lhs, rhs)
This macro evaluates whether lhs is less or equal (<=) rhs and if it turns out to be false it will th...
Definition: ExpressionException.h:109
ExpressionException.h
visionx::voxelgrid::Visualizer::VoxelVisuData::extents
const Eigen::Vector3f & extents
The voxel's orientation.
Definition: Visualizer.hpp:107
Visualizer.h
visionx::voxelgrid::LabelDensity::Visualizer::getAlpha
float getAlpha() const
Get the alpha.
Definition: Visualizer.cpp:61
visionx::voxelgrid::Visualizer::VoxelVisuData::name
const std::string & name
The voxel grid.
Definition: Visualizer.hpp:100
visionx::voxelgrid::LabelDensity::Visualizer::~Visualizer
virtual ~Visualizer() override
Virtual destructor.
visionx::voxelgrid::LabelDensity
Definition: Visualizer.cpp:8
visionx::voxelgrid::LabelDensity::Visualizer::drawVoxel
virtual void drawVoxel(const VoxelVisuData &voxelVisu) override
Draw a voxel.