10 #ifndef opengl_CPointCloudColoured_H
11 #define opengl_CPointCloudColoured_H
58 float _x,
float _y,
float _z,
float _R,
float _G,
float _B)
59 :
x(_x),
y(_y),
z(_z),
R(_R),
G(_G),
B(_B)
112 void push_back(
float x,
float y,
float z,
float R,
float G,
float B);
156 void setPoint(
size_t i,
const TPointColour&
p);
167 const size_t i,
const float x,
const float y,
const float z)
185 size_t index,
float&
R,
float& G,
float& B)
const
203 template <
class POINTSMAP>
226 const float coord_min,
const float coord_max,
const int coord_index = 2,
231 void render()
const override;
235 const bool all,
const std::vector<size_t>& idxs,
236 const float render_area_sqpixels)
const;
299 static const int HAS_RGB = 1;
301 static const int HAS_RGBf = 1;
303 static const int HAS_RGBu8 = 0;
307 : m_obj(*const_cast<
mrpt::opengl::CPointCloudColoured*>(&
obj))
311 inline size_t size()
const {
return m_obj.
size(); }
315 template <
typename T>
332 THROW_EXCEPTION(
"mrpt::opengl::CPointCloudColoured needs to be dense");
336 template <
typename T>
338 const size_t idx, T&
x, T&
y, T&
z,
float&
r,
float&
g,
float&
b)
const
351 const float r,
const float g,
const float b)
359 template <
typename T>
379 x,
y,
z,
r / 255.f,
g / 255.f,
b / 255.f));
384 const size_t idx,
float&
r,
float&
g,
float&
b)
const
390 const size_t idx,
const float r,
const float g,
const float b)
417 template <
class POINTSMAP>
422 const size_t N = pc_src.size();
424 for (
size_t i = 0; i < N; i++)
427 pc_src.getPointXYZ_RGBf(i,
x,
y,
z,
r,
g,
b);
428 pc_dst.setPointXYZ_RGBf(i,
x,
y,
z,
r,
g,
b);
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
#define MRPT_DECLARE_TTYPENAME_NAMESPACE(_TYPE, __NS)
Template class that implements the data structure and algorithms for Octree-based efficient rendering...
void octree_getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const
A cloud of points, each one with an individual colour (R,G,B).
void clear()
Erase all the points.
void markAllPointsAsNew()
Do needed internal work if all points are new (octree rebuilt,...)
CPointCloudColoured()
Constructor.
std::vector< TPointColour > TListPointColour
const TPointColour & getPoint(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
TListPointColour::const_iterator const_iterator
void recolorizeByCoordinate(const float coord_min, const float coord_max, const int coord_index=2, const mrpt::utils::TColormap color_map=mrpt::utils::cmJET)
Regenerates the color of each point according the one coordinate (coord_index:0,1,...
size_t PLY_export_get_face_count() const override
In a base class, return the number of faces.
void getPointColor_fast(size_t index, float &R, float &G, float &B) const
Like getPointColor but without checking for out-of-index erors.
const TPointColour & operator[](size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
mrpt::math::TPoint3Df getPointf(size_t i) const
Read access to each individual point (checks for "i" in the valid range only in Debug).
TListPointColour m_points
size_t getActuallyRendered() const
Get the number of elements actually rendered in the last render event.
float getPointSize() const
void PLY_export_get_vertex(const size_t idx, mrpt::math::TPoint3Df &pt, bool &pt_has_color, mrpt::utils::TColorf &pt_color) const override
In a base class, will be called after PLY_export_get_vertex_count() once for each exported point.
float m_pointSize
By default is 1.0.
void setPoint_fast(const size_t i, const TPointColour &p)
Like setPoint() but does not check for index out of bounds.
volatile size_t m_last_rendered_count
void disablePointSmooth()
void reserve(size_t N)
Like STL std::vector's reserve.
virtual ~CPointCloudColoured()
Private, virtual destructor: only can be deleted from smart pointers.
bool m_pointSmooth
Default: false.
size_t PLY_export_get_vertex_count() const override
In a base class, return the number of vertices.
virtual void PLY_import_set_face_count(const size_t N) override
In a base class, reserve memory to prepare subsequent calls to PLY_import_set_face.
void enablePointSmooth(bool enable=true)
void render_subset(const bool all, const std::vector< size_t > &idxs, const float render_area_sqpixels) const
Render a subset of points (required by octree renderer)
void loadFromPointsMap(const POINTSMAP *themap)
Load the points from any other point map class supported by the adapter mrpt::utils::PointCloudAdapte...
void push_back(float x, float y, float z, float R, float G, float B)
Inserts a new point into the point cloud.
void resize(size_t N)
Set the number of points, with undefined contents.
void setPoint_fast(const size_t i, const float x, const float y, const float z)
Like setPoint() but does not check for index out of bounds.
size_t size() const
Return the number of points.
bool isPointSmoothEnabled() const
virtual void getBoundingBox(mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const override
Evaluates the bounding box of this object (including possible children) in the coordinate frame of th...
void render() const override
Render.
volatile size_t m_last_rendered_count_ongoing
virtual void PLY_import_set_vertex_count(const size_t N) override
In a base class, reserve memory to prepare subsequent calls to PLY_import_set_vertex.
void setPointColor_fast(size_t index, float R, float G, float B)
Like setPointColor but without checking for out-of-index erors.
virtual void PLY_import_set_vertex(const size_t idx, const mrpt::math::TPoint3Df &pt, const mrpt::utils::TColorf *pt_color=nullptr) override
In a base class, will be called after PLY_import_set_vertex_count() once for each loaded point.
TListPointColour::iterator iterator
void setPointSize(float pointSize)
const_iterator begin() const
const_iterator end() const
void setPoint(size_t i, const TPointColour &p)
Write an individual point (checks for "i" in the valid range only in Debug).
The base class of 3D objects that can be directly rendered through OpenGL.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
A virtual base class that implements the capability of exporting 3D point clouds and faces to a file ...
A virtual base class that implements the capability of importing 3D point clouds and faces from a fil...
void getPointRGBu8(const size_t idx, uint8_t &r, uint8_t &g, uint8_t &b) const
Get RGBu8 color of i'th point.
void getPointXYZ_RGBu8(const size_t idx, T &x, T &y, T &z, uint8_t &r, uint8_t &g, uint8_t &b) const
Get XYZ_RGBu8 coordinates of i'th point.
void setPointXYZ(const size_t idx, const coords_t x, const coords_t y, const coords_t z)
Set XYZ coordinates of i'th point.
void setPointRGBf(const size_t idx, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
size_t size() const
Get number of points.
PointCloudAdapter(const mrpt::opengl::CPointCloudColoured &obj)
Constructor (accept a const ref for convenience)
void getPointXYZ(const size_t idx, T &x, T &y, T &z) const
Get XYZ coordinates of i'th point.
void setPointXYZ_RGBf(const size_t idx, const coords_t x, const coords_t y, const coords_t z, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
void resize(const size_t N)
Set number of points (to uninitialized values)
void setInvalidPoint(const size_t idx)
float coords_t
The type of each point XYZ coordinates.
void getPointRGBf(const size_t idx, float &r, float &g, float &b) const
Get RGBf color of i'th point.
void getPointXYZ_RGBf(const size_t idx, T &x, T &y, T &z, float &r, float &g, float &b) const
Get XYZ_RGBf coordinates of i'th point.
void setPointRGBu8(const size_t idx, const uint8_t r, const uint8_t g, const uint8_t b)
Set RGBu8 coordinates of i'th point.
mrpt::opengl::CPointCloudColoured & m_obj
void setPointXYZ_RGBu8(const size_t idx, const coords_t x, const coords_t y, const coords_t z, const uint8_t r, const uint8_t g, const uint8_t b)
Set XYZ_RGBu8 coordinates of i'th point.
An adapter to different kinds of point cloud object.
const Scalar * const_iterator
GLsizei GLsizei GLuint * obj
GLdouble GLdouble GLdouble r
TColormap
Different colormaps for use in mrpt::utils::colormap()
#define ASSERT_BELOW_(__A, __B)
#define THROW_EXCEPTION(msg)
#define MRPT_UNUSED_PARAM(a)
Can be used to avoid "not used parameters" warnings from the compiler.
The namespace for 3D scene representation and rendering.
mrpt::utils::CStream & operator<<(mrpt::utils::CStream &out, const mrpt::opengl::CLight &o)
mrpt::utils::CStream & operator>>(mrpt::utils::CStream &in, mrpt::opengl::CLight &o)
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Lightweight 3D point (float version).
TPointColour(float _x, float _y, float _z, float _R, float _G, float _B)
A RGB color - floats in the range [0,1].