MRPT  2.0.4
List of all members | Classes | Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
mrpt::opengl::COctreePointRenderer< Derived > Class Template Reference

Detailed Description

template<class Derived>
class mrpt::opengl::COctreePointRenderer< Derived >

Template class that implements the data structure and algorithms for Octree-based efficient rendering.

See also
mrpt::opengl::CPointCloud, mrpt::opengl::CPointCloudColoured, https://www.mrpt.org/Efficiently_rendering_point_clouds_of_millions_of_points

Definition at line 52 of file COctreePointRenderer.h.

#include <mrpt/opengl/COctreePointRenderer.h>

Inheritance diagram for mrpt::opengl::COctreePointRenderer< Derived >:

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
 Default ctor. More...
 
 COctreePointRenderer (const COctreePointRenderer &)
 Copy ctor. More...
 
size_t octree_get_node_count () const
 Return the number of octree nodes (all of them, including the empty ones) More...
 
size_t octree_get_visible_nodes () const
 Return the number of visible octree nodes in the last render event. More...
 
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) More...
 
void octree_get_graphics_boundingboxes (mrpt::opengl::CSetOfObjects &gl_bb, const float lines_width=1, const mrpt::img::TColorf &lines_color=mrpt::img::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. More...
 
void octree_debug_dump_tree (std::ostream &o) const
 Used for debug only. More...
 

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() More...
 
void octree_render (const mrpt::opengl::TRenderMatrices &ri) const
 Render the entire octree recursively. More...
 
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::TRenderMatrices &ri, mrpt::img::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. More...
 
void internal_octree_assure_uptodate ()
 
void internal_recursive_split (const size_t node_id, const bool all_pts=false)
 

Private Attributes

std::vector< TRenderQueueElementm_render_queue
 The list of elements that really are visible and will be rendered. More...
 
bool m_octree_has_to_rebuild_all {true}
 
std::deque< TNodem_octree_nodes
 First one [0] is always the root node. More...
 
std::atomic< size_t > m_visible_octree_nodes = 0
 
size_t m_visible_octree_nodes_ongoing = 0
 

Member Enumeration Documentation

◆ anonymous enum

template<class Derived>
anonymous enum
Enumerator
OCTREE_ROOT_NODE 

Definition at line 66 of file COctreePointRenderer.h.

Constructor & Destructor Documentation

◆ COctreePointRenderer() [1/2]

template<class Derived>
mrpt::opengl::COctreePointRenderer< Derived >::COctreePointRenderer ( )
default

Default ctor.

◆ COctreePointRenderer() [2/2]

template<class Derived>
mrpt::opengl::COctreePointRenderer< Derived >::COctreePointRenderer ( const COctreePointRenderer< Derived > &  )
inline

Copy ctor.

Definition at line 59 of file COctreePointRenderer.h.

Member Function Documentation

◆ internal_octree_assure_uptodate()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::internal_octree_assure_uptodate ( )
inlineprivate

Definition at line 568 of file COctreePointRenderer.h.

Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_assure_uptodate().

Here is the caller graph for this function:

◆ internal_recursive_split()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::internal_recursive_split ( const size_t  node_id,
const bool  all_pts = false 
)
inlineprivate

Definition at line 585 of file COctreePointRenderer.h.

Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::internal_octree_assure_uptodate(), and mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::internal_recursive_split().

Here is the caller graph for this function:

◆ octree_assure_uptodate()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_assure_uptodate ( ) const
inlineprotected

Must be called at children class' render() previously to octree_render()

Definition at line 81 of file COctreePointRenderer.h.

Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_get_graphics_boundingboxes(), and mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_getBoundingBox().

Here is the caller graph for this function:

◆ octree_debug_dump_tree()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_debug_dump_tree ( std::ostream &  o) const
inline

Used for debug only.

Definition at line 752 of file COctreePointRenderer.h.

◆ octree_derived() [1/2]

template<class Derived>
Derived& mrpt::opengl::COctreePointRenderer< Derived >::octree_derived ( )
inlineprotected

Definition at line 73 of file COctreePointRenderer.h.

Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::internal_recursive_split(), mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_debug_dump_tree(), and mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_render().

Here is the caller graph for this function:

◆ octree_derived() [2/2]

template<class Derived>
const Derived& mrpt::opengl::COctreePointRenderer< Derived >::octree_derived ( ) const
inlineprotected

Definition at line 74 of file COctreePointRenderer.h.

◆ octree_get_graphics_boundingboxes()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_get_graphics_boundingboxes ( mrpt::opengl::CSetOfObjects gl_bb,
const float  lines_width = 1,
const mrpt::img::TColorf lines_color = mrpt::img::TColorf(1, 1, 1),
const bool  draw_solid_boxes = false 
) const
inline

Returns a graphical representation of all the bounding boxes of the octree (leaf) nodes.

Parameters
[in]draw_solid_boxesIf false, will draw solid boxes of color lines_color. Otherwise, wireframe boxes will be drawn.

Definition at line 729 of file COctreePointRenderer.h.

◆ octree_get_node_count()

template<class Derived>
size_t mrpt::opengl::COctreePointRenderer< Derived >::octree_get_node_count ( ) const
inline

Return the number of octree nodes (all of them, including the empty ones)

See also
octree_get_nonempty_node_count

Definition at line 713 of file COctreePointRenderer.h.

◆ octree_get_visible_nodes()

template<class Derived>
size_t mrpt::opengl::COctreePointRenderer< Derived >::octree_get_visible_nodes ( ) const
inline

Return the number of visible octree nodes in the last render event.

Definition at line 715 of file COctreePointRenderer.h.

◆ octree_getBoundingBox()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_getBoundingBox ( mrpt::math::TPoint3D bb_min,
mrpt::math::TPoint3D bb_max 
) const
inlineprotected

Definition at line 115 of file COctreePointRenderer.h.

◆ octree_mark_as_outdated()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_mark_as_outdated ( )
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 719 of file COctreePointRenderer.h.

◆ octree_recursive_render()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_recursive_render ( size_t  node_idx,
const mrpt::opengl::TRenderMatrices ri,
mrpt::img::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
inlineprivate

Render a given node.

Definition at line 287 of file COctreePointRenderer.h.

Referenced by mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_recursive_render(), and mrpt::opengl::COctreePointRenderer< CPointCloudColoured >::octree_render().

Here is the caller graph for this function:

◆ octree_render()

template<class Derived>
void mrpt::opengl::COctreePointRenderer< Derived >::octree_render ( const mrpt::opengl::TRenderMatrices ri) const
inlineprotected

Render the entire octree recursively.

Should be called from children's render() method.

Definition at line 90 of file COctreePointRenderer.h.

Member Data Documentation

◆ m_octree_has_to_rebuild_all

template<class Derived>
bool mrpt::opengl::COctreePointRenderer< Derived >::m_octree_has_to_rebuild_all {true}
private

◆ m_octree_nodes

template<class Derived>
std::deque<TNode> mrpt::opengl::COctreePointRenderer< Derived >::m_octree_nodes
private

◆ m_render_queue

template<class Derived>
std::vector<TRenderQueueElement> mrpt::opengl::COctreePointRenderer< Derived >::m_render_queue
mutableprivate

◆ m_visible_octree_nodes

template<class Derived>
std::atomic<size_t> mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes = 0
mutableprivate

◆ m_visible_octree_nodes_ongoing

template<class Derived>
size_t mrpt::opengl::COctreePointRenderer< Derived >::m_visible_octree_nodes_ongoing = 0
mutableprivate



Page generated by Doxygen 1.8.14 for MRPT 2.0.4 Git: 33de1d0ad Sat Jun 20 11:02:42 2020 +0200 at sáb jun 20 17:35:17 CEST 2020