Template class that implements the data structure and algorithms for Octree-based efficient rendering.
Definition at line 45 of file COctreePointRenderer.h.
#include <mrpt/opengl/COctreePointRenderer.h>
Classes | |
struct | TNode |
The structure for each octree spatial node. More... | |
struct | TRenderQueueElement |
Public Types | |
enum | { OCTREE_ROOT_NODE = 0 } |
Public Member Functions | |
COctreePointRenderer () | |
Default ctor. | |
COctreePointRenderer (const COctreePointRenderer &) | |
Copy ctor. | |
size_t | octree_get_node_count () const |
Return the number of octree nodes (all of them, including the empty ones) | |
size_t | octree_get_visible_nodes () const |
Return the number of visible octree nodes in the last render event. | |
void | octree_mark_as_outdated () |
Called from the derived class (or the user) to indicate we have/want to rebuild the entire node tree (for example, after modifying the point cloud or any global octree parameter) | |
void | octree_get_graphics_boundingboxes (mrpt::opengl::CSetOfObjects &gl_bb, const double lines_width=1, const mrpt::utils::TColorf &lines_color=mrpt::utils::TColorf(1, 1, 1), const bool draw_solid_boxes=false) const |
Returns a graphical representation of all the bounding boxes of the octree (leaf) nodes. | |
void | octree_debug_dump_tree (std::ostream &o) const |
Used for debug only. | |
Protected Member Functions | |
Derived & | octree_derived () |
const Derived & | octree_derived () const |
void | octree_assure_uptodate () const |
Must be called at children class' render() previously to octree_render() | |
void | octree_render (const mrpt::opengl::gl_utils::TRenderInfo &ri) const |
Render the entire octree recursively. | |
void | octree_getBoundingBox (mrpt::math::TPoint3D &bb_min, mrpt::math::TPoint3D &bb_max) const |
Private Member Functions | |
void | octree_recursive_render (size_t node_idx, const mrpt::opengl::gl_utils::TRenderInfo &ri, mrpt::utils::TPixelCoordf cr_px[8], float cr_z[8], bool corners_are_all_computed=true, bool trust_me_youre_visible=false, float approx_area_sqpixels=0) const |
Render a given node. | |
void | internal_octree_assure_uptodate () |
void | internal_recursive_split (const size_t node_id, const bool all_pts=false) |
Private Attributes | |
std::vector< TRenderQueueElement > | m_render_queue |
The list of elements that really are visible and will be rendered. | |
bool | m_octree_has_to_rebuild_all |
mrpt::aligned_containers< TNode >::deque_t | m_octree_nodes |
First one [0] is always the root node. | |
volatile size_t | m_visible_octree_nodes |
volatile size_t | m_visible_octree_nodes_ongoing |
anonymous enum |
Enumerator | |
---|---|
OCTREE_ROOT_NODE |
Definition at line 63 of file COctreePointRenderer.h.
|
inline |
Default ctor.
Definition at line 49 of file COctreePointRenderer.h.
|
inline |
Copy ctor.
Definition at line 56 of file COctreePointRenderer.h.
|
inlineprivate |
Definition at line 420 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::internal_recursive_split(), mrpt::opengl::COctreePointRenderer< Derived >::m_octree_has_to_rebuild_all, mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, and mrpt::opengl::COctreePointRenderer< Derived >::OCTREE_ROOT_NODE.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_assure_uptodate().
|
inlineprivate |
Definition at line 435 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::TNode::all, mrpt::opengl::COctreePointRenderer< Derived >::TNode::center, mrpt::opengl::COctreePointRenderer< Derived >::TNode::child_id, mrpt::opengl::COctreePointRenderer< Derived >::internal_recursive_split(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::is_leaf, mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, mean(), mrpt::opengl::COctreePointRenderer< Derived >::octree_derived(), mrpt::global_settings::OCTREE_RENDER_MAX_POINTS_PER_NODE, mrpt::opengl::COctreePointRenderer< Derived >::OCTREE_ROOT_NODE, mrpt::opengl::COctreePointRenderer< Derived >::TNode::pts, mrpt::opengl::COctreePointRenderer< Derived >::TNode::update_bb(), mrpt::math::TPoint3Df::x, mrpt::math::TPoint3Df::y, and mrpt::math::TPoint3Df::z.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::internal_octree_assure_uptodate(), and mrpt::opengl::COctreePointRenderer< Derived >::internal_recursive_split().
|
inlineprotected |
Must be called at children class' render() previously to octree_render()
Definition at line 71 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::internal_octree_assure_uptodate().
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_get_graphics_boundingboxes(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_getBoundingBox().
|
inline |
Used for debug only.
Definition at line 577 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::TNode::all, mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_max, mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_min, mrpt::opengl::COctreePointRenderer< Derived >::TNode::center, mrpt::opengl::COctreePointRenderer< Derived >::TNode::child_id, mrpt::opengl::COctreePointRenderer< Derived >::TNode::is_leaf, mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, mrpt::opengl::COctreePointRenderer< Derived >::octree_derived(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::pts, mrpt::math::TPoint3Df::x, mrpt::math::TPoint3Df::y, and mrpt::math::TPoint3Df::z.
|
inlineprotected |
|
inlineprotected |
Definition at line 68 of file COctreePointRenderer.h.
|
inline |
Returns a graphical representation of all the bounding boxes of the octree (leaf) nodes.
[in] | draw_solid_boxes | If false, will draw solid boxes of color lines_color. Otherwise, wireframe boxes will be drawn. |
Definition at line 554 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_max, mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_min, mrpt::opengl::CBoxPtr, mrpt::opengl::CSetOfObjects::clear(), mrpt::opengl::CBox::Create(), mrpt::opengl::CSetOfObjects::insert(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::is_leaf, mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, and mrpt::opengl::COctreePointRenderer< Derived >::octree_assure_uptodate().
|
inline |
Return the number of octree nodes (all of them, including the empty ones)
Definition at line 543 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes.
|
inline |
Return the number of visible octree nodes in the last render event.
Definition at line 546 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes.
|
inlineprotected |
Definition at line 102 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, and mrpt::opengl::COctreePointRenderer< Derived >::octree_assure_uptodate().
|
inline |
Called from the derived class (or the user) to indicate we have/want to rebuild the entire node tree (for example, after modifying the point cloud or any global octree parameter)
Definition at line 549 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::m_octree_has_to_rebuild_all.
|
inlineprivate |
Render a given node.
Definition at line 216 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::TNode::all, mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_max, mrpt::opengl::COctreePointRenderer< Derived >::TNode::bb_min, mrpt::opengl::COctreePointRenderer< Derived >::TNode::center, mrpt::opengl::COctreePointRenderer< Derived >::TNode::child_id, DO_RECURSE_CHILD, mrpt::opengl::COctreePointRenderer< Derived >::TNode::getCornerX(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::getCornerY(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::getCornerZ(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::is_leaf, mrpt::utils::keep_max(), mrpt::utils::keep_min(), mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, mrpt::opengl::COctreePointRenderer< Derived >::m_render_queue, mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes_ongoing, mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), PROJ_SUB_NODE, PROJ_SUB_NODE_ALREADY_DONE, mrpt::opengl::gl_utils::TRenderInfo::projectPointPixels(), mrpt::opengl::COctreePointRenderer< Derived >::TNode::pts, mrpt::opengl::gl_utils::TRenderInfo::vp_height, mrpt::opengl::gl_utils::TRenderInfo::vp_width, mrpt::math::TPoint3Df::x, mrpt::utils::TPixelCoordf::x, mrpt::math::TPoint3Df::y, mrpt::utils::TPixelCoordf::y, and mrpt::math::TPoint3Df::z.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_render().
|
inlineprotected |
Render the entire octree recursively.
Should be called from children's render() method.
Definition at line 79 of file COctreePointRenderer.h.
References mrpt::opengl::COctreePointRenderer< Derived >::TNode::all, mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes, mrpt::opengl::COctreePointRenderer< Derived >::m_render_queue, mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes, mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes_ongoing, mrpt::opengl::COctreePointRenderer< Derived >::octree_derived(), mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), mrpt::opengl::COctreePointRenderer< Derived >::OCTREE_ROOT_NODE, and mrpt::opengl::COctreePointRenderer< Derived >::TNode::pts.
|
private |
Definition at line 209 of file COctreePointRenderer.h.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::internal_octree_assure_uptodate(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_mark_as_outdated().
|
private |
First one [0] is always the root node.
Definition at line 210 of file COctreePointRenderer.h.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::internal_octree_assure_uptodate(), mrpt::opengl::COctreePointRenderer< Derived >::internal_recursive_split(), mrpt::opengl::COctreePointRenderer< Derived >::octree_debug_dump_tree(), mrpt::opengl::COctreePointRenderer< Derived >::octree_get_graphics_boundingboxes(), mrpt::opengl::COctreePointRenderer< Derived >::octree_get_node_count(), mrpt::opengl::COctreePointRenderer< Derived >::octree_getBoundingBox(), mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_render().
|
mutableprivate |
The list of elements that really are visible and will be rendered.
Definition at line 206 of file COctreePointRenderer.h.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_render().
|
mutableprivate |
Definition at line 213 of file COctreePointRenderer.h.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_get_visible_nodes(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_render().
|
private |
Definition at line 213 of file COctreePointRenderer.h.
Referenced by mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render(), and mrpt::opengl::COctreePointRenderer< Derived >::octree_render().
Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 04:35:51 UTC 2023 |