Point Cloud Library (PCL)  1.9.1-dev
List of all members | Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes | Friends
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT > Class Template Reference

OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree, with accessors to its data via the pcl::outofcore::OutofcoreOctreeDiskContainer class or pcl::outofcore::OutofcoreOctreeRamContainer class, whichever it is templated against. More...

#include <pcl/outofcore/octree_base_node.h>

+ Inheritance diagram for pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >:

Public Types

using octree_disk = OutofcoreOctreeBase< OutofcoreOctreeDiskContainer< PointT >, PointT >
 
using octree_disk_node = OutofcoreOctreeBaseNode< OutofcoreOctreeDiskContainer< PointT >, PointT >
 
using AlignedPointTVector = std::vector< PointT, Eigen::aligned_allocator< PointT > >
 
using node_type_t = pcl::octree::node_type_t
 

Public Member Functions

 OutofcoreOctreeBaseNode ()
 Empty constructor; sets pointers for children and for bounding boxes to 0. More...
 
 OutofcoreOctreeBaseNode (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, OutofcoreOctreeBase< ContainerT, PointT > *const tree, const boost::filesystem::path &root_name)
 Create root node and directory. More...
 
 ~OutofcoreOctreeBaseNode ()
 Will recursively delete all children calling recFreeChildrein. More...
 
virtual void getBoundingBox (Eigen::Vector3d &min_bb, Eigen::Vector3d &max_bb) const
 gets the minimum and maximum corner of the bounding box represented by this node More...
 
const boost::filesystem::path & getPCDFilename () const
 
const boost::filesystem::path & getMetadataFilename () const
 
void queryFrustum (const double planes[24], std::list< std::string > &file_names)
 
void queryFrustum (const double planes[24], std::list< std::string > &file_names, const std::uint32_t query_depth, const bool skip_vfc_check=false)
 
void queryFrustum (const double planes[24], const Eigen::Vector3d &eye, const Eigen::Matrix4d &view_projection_matrix, std::list< std::string > &file_names, const std::uint32_t query_depth, const bool skip_vfc_check=false)
 
virtual void queryBBIncludes (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, std::size_t query_depth, AlignedPointTVector &dst)
 Recursively add points that fall into the queried bounding box up to the query_depth. More...
 
virtual void queryBBIncludes (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, std::size_t query_depth, const pcl::PCLPointCloud2::Ptr &dst_blob)
 Recursively add points that fall into the queried bounding box up to the query_depth. More...
 
virtual void queryBBIncludes_subsample (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, std::uint64_t query_depth, const double percent, AlignedPointTVector &v)
 Recursively add points that fall into the queried bounding box up to the query_depth. More...
 
virtual void queryBBIncludes_subsample (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, std::uint64_t query_depth, const pcl::PCLPointCloud2::Ptr &dst_blob, double percent=1.0)
 
virtual void queryBBIntersects (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const std::uint32_t query_depth, std::list< std::string > &file_names)
 Recursive acquires PCD paths to any node with which the queried bounding box intersects (at query_depth only). More...
 
virtual void printBoundingBox (const std::size_t query_depth) const
 Write the voxel size to stdout at query_depth. More...
 
virtual std::uint64_t addDataToLeaf (const AlignedPointTVector &p, const bool skip_bb_check=true)
 add point to this node if we are a leaf, or find the leaf below us that is supposed to take the point More...
 
virtual std::uint64_t addDataToLeaf (const std::vector< const PointT *> &p, const bool skip_bb_check=true)
 
virtual std::uint64_t addPointCloud (const pcl::PCLPointCloud2::Ptr &input_cloud, const bool skip_bb_check=false)
 Add a single PCLPointCloud2 object into the octree. More...
 
virtual std::uint64_t addPointCloud_and_genLOD (const pcl::PCLPointCloud2::Ptr input_cloud)
 Add a single PCLPointCloud2 into the octree and build the subsampled LOD during construction; this method of LOD construction is not multiresolution. More...
 
virtual std::uint64_t addDataToLeaf_and_genLOD (const AlignedPointTVector &p, const bool skip_bb_check)
 Recursively add points to the leaf and children subsampling LODs on the way down. More...
 
void writeVPythonVisual (std::ofstream &file)
 Write a python visual script to file. More...
 
virtual int read (pcl::PCLPointCloud2::Ptr &output_cloud)
 
node_type_t getNodeType () const override
 Pure virtual method for receiving the type of octree node (branch or leaf) More...
 
OutofcoreOctreeBaseNodedeepCopy () const override
 Pure virtual method to perform a deep copy of the octree. More...
 
virtual std::size_t getDepth () const
 
virtual std::size_t getNumChildren () const
 Returns the total number of children on disk. More...
 
virtual std::size_t getNumLoadedChildren () const
 Count loaded chilren. More...
 
virtual OutofcoreOctreeBaseNodegetChildPtr (std::size_t index_arg) const
 Returns a pointer to the child in octant index_arg. More...
 
virtual std::uint64_t getDataSize () const
 Gets the number of points available in the PCD file. More...
 
virtual void clearData ()
 
- Public Member Functions inherited from pcl::octree::OctreeNode
 OctreeNode ()
 
virtual ~OctreeNode ()
 

Static Public Attributes

static const std::string node_index_basename = "node"
 
static const std::string node_container_basename = "node"
 
static const std::string node_index_extension = ".oct_idx"
 
static const std::string node_container_extension = ".oct_dat"
 
static const double sample_percent_ = .125
 

Protected Member Functions

 OutofcoreOctreeBaseNode (const boost::filesystem::path &directory_path, OutofcoreOctreeBaseNode< ContainerT, PointT > *super, bool load_all)
 Load from disk If creating root, path is full name. More...
 
void init_root_node (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, OutofcoreOctreeBase< ContainerT, PointT > *const tree, const boost::filesystem::path &rootname)
 Create root node and directory. More...
 
 OutofcoreOctreeBaseNode (const OutofcoreOctreeBaseNode &rval)
 no copy construction right now More...
 
OutofcoreOctreeBaseNodeoperator= (const OutofcoreOctreeBaseNode &rval)
 Operator= is not implemented. More...
 
virtual std::size_t countNumChildren () const
 Counts the number of child directories on disk; used to update num_children_. More...
 
virtual std::size_t countNumLoadedChildren () const
 Counts the number of loaded chilren by testing the children_ array; used to update num_loaded_chilren_ internally. More...
 
void saveIdx (bool recursive)
 Save node's metadata to file. More...
 
void randomSample (const AlignedPointTVector &p, AlignedPointTVector &insertBuff, const bool skip_bb_check)
 Randomly sample point data. More...
 
void subdividePoints (const AlignedPointTVector &p, std::vector< AlignedPointTVector > &c, const bool skip_bb_check)
 Subdivide points to pass to child nodes. More...
 
void subdividePoint (const PointT &point, std::vector< AlignedPointTVector > &c)
 Subdivide a single point into a specific child node. More...
 
std::uint64_t addDataAtMaxDepth (const AlignedPointTVector &p, const bool skip_bb_check=true)
 Add data to the leaf when at max depth of tree. More...
 
std::uint64_t addDataAtMaxDepth (const pcl::PCLPointCloud2::Ptr input_cloud, const bool skip_bb_check=true)
 Add data to the leaf when at max depth of tree. More...
 
bool intersectsWithBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb) const
 Tests whether the input bounding box intersects with the current node's bounding box. More...
 
bool inBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb) const
 Tests whether the input bounding box falls inclusively within this node's bounding box. More...
 
bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const Eigen::Vector3d &point)
 Tests whether point falls within the input bounding box. More...
 
bool pointInBoundingBox (const PointT &p) const
 Tests if specified point is within bounds of current node's bounding box. More...
 
void createChild (const std::size_t idx)
 Creates child node idx. More...
 
void saveMetadataToFile (const boost::filesystem::path &path)
 Write JSON metadata for this node to file. More...
 
void recFreeChildren ()
 Method which recursively free children of this node. More...
 
std::uint64_t size () const
 Number of points in the payload. More...
 
void flushToDiskRecursive ()
 
void loadFromFile (const boost::filesystem::path &path, OutofcoreOctreeBaseNode *super)
 Loads the nodes metadata from the JSON file. More...
 
void convertToXYZRecursive ()
 Recursively converts data files to ascii XZY files. More...
 
 OutofcoreOctreeBaseNode (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, const char *dir, OutofcoreOctreeBaseNode< ContainerT, PointT > *super)
 Private constructor used for children. More...
 
void copyAllCurrentAndChildPointsRec (std::list< PointT > &v)
 Copies points from this and all children into a single point container (std::list) More...
 
void copyAllCurrentAndChildPointsRec_sub (std::list< PointT > &v, const double percent)
 
bool hasUnloadedChildren () const
 Returns whether or not a node has unloaded children data. More...
 
virtual void loadChildren (bool recursive)
 Load nodes child data creating new nodes for each. More...
 
void getOccupiedVoxelCentersRecursive (AlignedPointTVector &voxel_centers, const std::size_t query_depth)
 Gets a vector of occupied voxel centers. More...
 
void getOccupiedVoxelCentersRecursive (std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > &voxel_centers, const std::size_t query_depth)
 Gets a vector of occupied voxel centers. More...
 
void sortOctantIndices (const pcl::PCLPointCloud2::Ptr &input_cloud, std::vector< std::vector< int > > &indices, const Eigen::Vector3d &mid_xyz)
 Sorts the indices based on x,y,z fields and pushes the index into the proper octant's vector; This could be overloaded with a parallelized implementation. More...
 
void enlargeToCube (Eigen::Vector3d &bb_min, Eigen::Vector3d &bb_max)
 Enlarges the shortest two sidelengths of the bounding box to a cubic shape; operation is done in place. More...
 

Static Protected Member Functions

static bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const PointT &p)
 Tests whether p falls within the input bounding box. More...
 
static bool pointInBoundingBox (const Eigen::Vector3d &min_bb, const Eigen::Vector3d &max_bb, const double x, const double y, const double z)
 Tests whether x, y, and z fall within the input bounding box. More...
 

Protected Attributes

OutofcoreOctreeBase< ContainerT, PointT > * m_tree_
 The tree we belong to. More...
 
OutofcoreOctreeBaseNoderoot_node_
 The root node of the tree we belong to. More...
 
OutofcoreOctreeBaseNodeparent_
 super-node More...
 
std::size_t depth_
 Depth in the tree, root is 0, root's children are 1, ... More...
 
std::vector< OutofcoreOctreeBaseNode * > children_
 The children of this node. More...
 
std::uint64_t num_children_
 Number of children on disk. More...
 
std::uint64_t num_loaded_children_
 Number of loaded children this node has. More...
 
std::shared_ptr< ContainerT > payload_
 what holds the points. More...
 
OutofcoreOctreeNodeMetadata::Ptr node_metadata_
 

Static Protected Attributes

static std::mutex rng_mutex_
 Random number generator mutex. More...
 
static std::mt19937 rng_
 Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator. More...
 
static const std::string pcd_extension = ".pcd"
 Extension for this class to find the pcd files on disk. More...
 

Friends

class OutofcoreOctreeBase< ContainerT, PointT >
 
OutofcoreOctreeBaseNode< ContainerT, PointT > * makenode_norec (const boost::filesystem::path &path, OutofcoreOctreeBaseNode< ContainerT, PointT > *super)
 Non-class function which creates a single child leaf; used with queryBBIntersects_noload to avoid loading the data from disk. More...
 
void queryBBIntersects_noload (const boost::filesystem::path &rootnode, const Eigen::Vector3d &min, const Eigen::Vector3d &max, const std::uint32_t query_depth, std::list< std::string > &bin_name)
 Non-class method which performs a bounding box query without loading any of the point cloud data from disk. More...
 
void queryBBIntersects_noload (OutofcoreOctreeBaseNode< ContainerT, PointT > *current, const Eigen::Vector3d &min, const Eigen::Vector3d &max, const std::uint32_t query_depth, std::list< std::string > &bin_name)
 Non-class method overload. More...
 

Detailed Description

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
class pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >

OutofcoreOctreeBaseNode Class internally representing nodes of an outofcore octree, with accessors to its data via the pcl::outofcore::OutofcoreOctreeDiskContainer class or pcl::outofcore::OutofcoreOctreeRamContainer class, whichever it is templated against.

Note
Code was adapted from the Urban Robotics out of core octree implementation. Contact Jacob Schloss jacob.nosp@m..sch.nosp@m.loss@.nosp@m.urba.nosp@m.nrobo.nosp@m.tics.nosp@m..net with any questions. http://www.urbanrobotics.net/
Author
Jacob Schloss (jacob.nosp@m..sch.nosp@m.loss@.nosp@m.urba.nosp@m.nrobo.nosp@m.tics.nosp@m..net)

Definition at line 62 of file octree_base_node.h.

Member Typedef Documentation

◆ AlignedPointTVector

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
using pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::AlignedPointTVector = std::vector<PointT, Eigen::aligned_allocator<PointT> >

Definition at line 113 of file octree_base_node.h.

◆ node_type_t

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
using pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_type_t = pcl::octree::node_type_t

Definition at line 115 of file octree_base_node.h.

◆ octree_disk

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
using pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::octree_disk = OutofcoreOctreeBase<OutofcoreOctreeDiskContainer < PointT > , PointT >

Definition at line 110 of file octree_base_node.h.

◆ octree_disk_node

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
using pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::octree_disk_node = OutofcoreOctreeBaseNode<OutofcoreOctreeDiskContainer < PointT > , PointT >

Definition at line 111 of file octree_base_node.h.

Constructor & Destructor Documentation

◆ OutofcoreOctreeBaseNode() [1/5]

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( )

◆ OutofcoreOctreeBaseNode() [2/5]

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
OutofcoreOctreeBase< ContainerT, PointT > *const  tree,
const boost::filesystem::path &  root_name 
)

◆ ~OutofcoreOctreeBaseNode()

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::~OutofcoreOctreeBaseNode ( )

Will recursively delete all children calling recFreeChildrein.

Definition at line 258 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren().

◆ OutofcoreOctreeBaseNode() [3/5]

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const boost::filesystem::path &  directory_path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super,
bool  load_all 
)
protected

◆ OutofcoreOctreeBaseNode() [4/5]

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const OutofcoreOctreeBaseNode< ContainerT, PointT > &  rval)
protected

no copy construction right now

◆ OutofcoreOctreeBaseNode() [5/5]

template<typename ContainerT , typename PointT >
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
const char *  dir,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
)
protected

Member Function Documentation

◆ addDataAtMaxDepth() [1/2]

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth ( const AlignedPointTVector p,
const bool  skip_bb_check = true 
)
protected

Add data to the leaf when at max depth of tree.

If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box

Parameters
[in]pvector of points to attempt to add to the tree
[in]skip_bb_checkif true, doesn't check that points are in the proper bounding box; if false, only adds the points that fall into the bounding box to this node
Returns
number of points successfully added

Definition at line 617 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData().

◆ addDataAtMaxDepth() [2/2]

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth ( const pcl::PCLPointCloud2::Ptr  input_cloud,
const bool  skip_bb_check = true 
)
protected

Add data to the leaf when at max depth of tree.

If skip_bb_check is true, adds to the node regardless of the bounding box it represents; otherwise only adds points that fall within the bounding box

Parameters
[in]input_cloudPCLPointCloud2 points to attempt to add to the tree;
Warning
PCLPointCloud2 inserted into the tree must have x,y,z fields, and must be of same type of any other points inserted in the tree
Parameters
[in]skip_bb_check(default true) if true, doesn't check that points are in the proper bounding box; if false, only adds the points that fall into the bounding box to this node
Returns
number of points successfully added

Definition at line 654 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

◆ addDataToLeaf() [1/2]

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf ( const AlignedPointTVector p,
const bool  skip_bb_check = true 
)
virtual

◆ addDataToLeaf() [2/2]

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf ( const std::vector< const PointT *> &  p,
const bool  skip_bb_check = true 
)
virtual

◆ addDataToLeaf_and_genLOD()

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD ( const AlignedPointTVector p,
const bool  skip_bb_check 
)
virtual

◆ addPointCloud()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud ( const pcl::PCLPointCloud2::Ptr input_cloud,
const bool  skip_bb_check = false 
)
virtual

◆ addPointCloud_and_genLOD()

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD ( const pcl::PCLPointCloud2::Ptr  input_cloud)
virtual

Add a single PCLPointCloud2 into the octree and build the subsampled LOD during construction; this method of LOD construction is not multiresolution.

Rather, there are no redundant data.

Definition at line 705 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_, pcl::copyPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::FilterIndices< pcl::PCLPointCloud2 >::filter(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::hasUnloadedChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_, pcl::PCLBase< pcl::PCLPointCloud2 >::setIndices(), pcl::PCLBase< pcl::PCLPointCloud2 >::setInputCloud(), pcl::FilterIndices< pcl::PCLPointCloud2 >::setNegative(), pcl::RandomSample< pcl::PCLPointCloud2 >::setSample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename().

◆ clearData()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData ( )
inlinevirtual

◆ convertToXYZRecursive()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive ( )
protected

◆ copyAllCurrentAndChildPointsRec()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec ( std::list< PointT > &  v)
protected

◆ copyAllCurrentAndChildPointsRec_sub()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub ( std::list< PointT > &  v,
const double  percent 
)
protected

◆ countNumChildren()

template<typename ContainerT , typename PointT >
std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumChildren ( ) const
protectedvirtual

◆ countNumLoadedChildren()

template<typename ContainerT , typename PointT >
std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumLoadedChildren ( ) const
protectedvirtual

Counts the number of loaded chilren by testing the children_ array; used to update num_loaded_chilren_ internally.

Definition at line 1913 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumLoadedChildren().

◆ createChild()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild ( const std::size_t  idx)
protected

◆ deepCopy()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::deepCopy ( ) const
inlineoverridevirtual

Pure virtual method to perform a deep copy of the octree.

Implements pcl::octree::OctreeNode.

Definition at line 264 of file octree_base_node.h.

◆ enlargeToCube()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::enlargeToCube ( Eigen::Vector3d &  bb_min,
Eigen::Vector3d &  bb_max 
)
protected

Enlarges the shortest two sidelengths of the bounding box to a cubic shape; operation is done in place.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size().

◆ flushToDiskRecursive()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::flushToDiskRecursive ( )
protected

◆ getBoundingBox()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getBoundingBox ( Eigen::Vector3d &  min_bb,
Eigen::Vector3d &  max_bb 
) const
inlinevirtual

gets the minimum and maximum corner of the bounding box represented by this node

Parameters
[out]min_bbreturns the minimum corner of the bounding box indexed by 0–>X, 1–>Y, 2–>Z
[out]max_bbreturns the maximum corner of the bounding box indexed by 0–>X, 1–>Y, 2–>Z

Definition at line 140 of file octree_base_node.h.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBase< ContainerT, pcl::PointXYZRGB >::buildLOD().

◆ getChildPtr()

template<typename ContainerT , typename PointT >
OutofcoreOctreeBaseNode< ContainerT, PointT > * pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getChildPtr ( std::size_t  index_arg) const
virtual

◆ getDataSize()

template<typename ContainerT , typename PointT >
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDataSize ( ) const
virtual

◆ getDepth()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDepth ( ) const
inlinevirtual

◆ getMetadataFilename()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const boost::filesystem::path& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename ( ) const
inline

◆ getNodeType()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
node_type_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNodeType ( ) const
inlineoverridevirtual

◆ getNumChildren()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumChildren ( ) const
inlinevirtual

◆ getNumLoadedChildren()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumLoadedChildren ( ) const
inlinevirtual

◆ getOccupiedVoxelCentersRecursive() [1/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive ( AlignedPointTVector voxel_centers,
const std::size_t  query_depth 
)
protected

◆ getOccupiedVoxelCentersRecursive() [2/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive ( std::vector< Eigen::Vector3d, Eigen::aligned_allocator< Eigen::Vector3d > > &  voxel_centers,
const std::size_t  query_depth 
)
protected

◆ getPCDFilename()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const boost::filesystem::path& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getPCDFilename ( ) const
inline

◆ hasUnloadedChildren()

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::hasUnloadedChildren ( ) const
protected

◆ inBoundingBox()

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::inBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb 
) const
inlineprotected

Tests whether the input bounding box falls inclusively within this node's bounding box.

Parameters
[in]min_bbThe minimum corner of the input bounding box
[in]max_bbThe maximum corner of the input bounding box
Returns
bool True if the input bounding box falls inclusively within the boundaries of this node's bounding box

Definition at line 1826 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample().

◆ init_root_node()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node ( const Eigen::Vector3d &  bb_min,
const Eigen::Vector3d &  bb_max,
OutofcoreOctreeBase< ContainerT, PointT > *const  tree,
const boost::filesystem::path &  rootname 
)
protected

Create root node and directory.

Initializes the root node and performs initial filesystem checks for the octree; throws OctreeException::OCT_BAD_PATH if root directory is an existing file

Parameters
bb_mintriple of x,y,z minima for bounding box
bb_maxtriple of x,y,z maxima for bounding box
treeaddress of the tree data structure that will hold this initial root node
rootnameRoot directory for location of on-disk octree storage; if directory doesn't exist, it is created; if "rootname" is an existing file,
Exceptions
PCLExceptionif the specified path already exists

Definition at line 201 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_, pcl::outofcore::OutofcoreOctreeDiskContainer< PointT >::getRandomUUIDString(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_basename, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::parent_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pcd_extension, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode().

◆ intersectsWithBoundingBox()

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::intersectsWithBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb 
) const
inlineprotected

Tests whether the input bounding box intersects with the current node's bounding box.

Parameters
[in]min_bbThe minimum corner of the input bounding box
[in]max_bbThe maximum corner of the input bounding box
Returns
bool True if any portion of the bounding box intersects with this node's bounding box; false otherwise

Definition at line 1804 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

◆ loadChildren()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren ( bool  recursive)
protectedvirtual

Load nodes child data creating new nodes for each.

Definition at line 307 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_, pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_loaded_children_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size().

◆ loadFromFile()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile ( const boost::filesystem::path &  path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
)
protected

◆ operator=()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode& pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::operator= ( const OutofcoreOctreeBaseNode< ContainerT, PointT > &  rval)
protected

◆ pointInBoundingBox() [1/4]

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const Eigen::Vector3d &  point 
)
protected

◆ pointInBoundingBox() [2/4]

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const PointT p 
)
inlinestaticprotected

Tests whether p falls within the input bounding box.

Parameters
[in]min_bbThe minimum corner of the input bounding box
[in]max_bbThe maximum corner of the input bounding box
[in]pThe point to be tested

Definition at line 1848 of file octree_base_node.hpp.

◆ pointInBoundingBox() [3/4]

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
static bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const double  x,
const double  y,
const double  z 
)
staticprotected

Tests whether x, y, and z fall within the input bounding box.

Parameters
[in]min_bbThe minimum corner of the input bounding box
[in]max_bbThe maximum corner of the input bounding box
x
y
z

◆ pointInBoundingBox() [4/4]

template<typename ContainerT , typename PointT >
bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox ( const PointT p) const
inlineprotected

Tests if specified point is within bounds of current node's bounding box.

Definition at line 926 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

◆ printBoundingBox()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox ( const std::size_t  query_depth) const
virtual

◆ queryBBIncludes() [1/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
std::size_t  query_depth,
AlignedPointTVector dst 
)
virtual

◆ queryBBIncludes() [2/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
std::size_t  query_depth,
const pcl::PCLPointCloud2::Ptr dst_blob 
)
virtual

◆ queryBBIncludes_subsample() [1/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
std::uint64_t  query_depth,
const double  percent,
AlignedPointTVector v 
)
virtual

◆ queryBBIncludes_subsample() [2/2]

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
std::uint64_t  query_depth,
const pcl::PCLPointCloud2::Ptr dst_blob,
double  percent = 1.0 
)
virtual

◆ queryBBIntersects()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects ( const Eigen::Vector3d &  min_bb,
const Eigen::Vector3d &  max_bb,
const std::uint32_t  query_depth,
std::list< std::string > &  file_names 
)
virtual

◆ queryFrustum() [1/3]

template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
std::list< std::string > &  file_names 
)

◆ queryFrustum() [2/3]

template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
std::list< std::string > &  file_names,
const std::uint32_t  query_depth,
const bool  skip_vfc_check = false 
)

◆ queryFrustum() [3/3]

template<typename Container , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< Container, PointT >::queryFrustum ( const double  planes[24],
const Eigen::Vector3d &  eye,
const Eigen::Matrix4d &  view_projection_matrix,
std::list< std::string > &  file_names,
const std::uint32_t  query_depth,
const bool  skip_vfc_check = false 
)

◆ randomSample()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample ( const AlignedPointTVector p,
AlignedPointTVector insertBuff,
const bool  skip_bb_check 
)
protected

◆ read()

template<typename ContainerT , typename PointT >
int pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::read ( pcl::PCLPointCloud2::Ptr output_cloud)
virtual

◆ recFreeChildren()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren ( )
protected

◆ saveIdx()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx ( bool  recursive)
protected

Save node's metadata to file.

Parameters
[in]recursiveif false, save only this node's metadata to file; if true, recursively save all children's metadata to files as well

Definition at line 283 of file octree_base_node.hpp.

References pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_, and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode().

◆ saveMetadataToFile()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveMetadataToFile ( const boost::filesystem::path &  path)
protected

Write JSON metadata for this node to file.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData().

◆ size()

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size ( ) const
inlineprotected

◆ sortOctantIndices()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices ( const pcl::PCLPointCloud2::Ptr input_cloud,
std::vector< std::vector< int > > &  indices,
const Eigen::Vector3d &  mid_xyz 
)
protected

◆ subdividePoint()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoint ( const PointT point,
std::vector< AlignedPointTVector > &  c 
)
protected

◆ subdividePoints()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoints ( const AlignedPointTVector p,
std::vector< AlignedPointTVector > &  c,
const bool  skip_bb_check 
)
protected

◆ writeVPythonVisual()

template<typename ContainerT , typename PointT >
void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual ( std::ofstream &  file)

Friends And Related Function Documentation

◆ makenode_norec

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode<ContainerT, PointT>* makenode_norec ( const boost::filesystem::path &  path,
OutofcoreOctreeBaseNode< ContainerT, PointT > *  super 
)
friend

Non-class function which creates a single child leaf; used with queryBBIntersects_noload to avoid loading the data from disk.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

◆ OutofcoreOctreeBase< ContainerT, PointT >

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
friend class OutofcoreOctreeBase< ContainerT, PointT >
friend

Definition at line 97 of file octree_base_node.h.

◆ queryBBIntersects_noload [1/2]

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void queryBBIntersects_noload ( const boost::filesystem::path &  rootnode,
const Eigen::Vector3d &  min,
const Eigen::Vector3d &  max,
const std::uint32_t  query_depth,
std::list< std::string > &  bin_name 
)
friend

Non-class method which performs a bounding box query without loading any of the point cloud data from disk.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

◆ queryBBIntersects_noload [2/2]

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
void queryBBIntersects_noload ( OutofcoreOctreeBaseNode< ContainerT, PointT > *  current,
const Eigen::Vector3d &  min,
const Eigen::Vector3d &  max,
const std::uint32_t  query_depth,
std::list< std::string > &  bin_name 
)
friend

Non-class method overload.

Member Data Documentation

◆ children_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::vector<OutofcoreOctreeBaseNode*> pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::children_
protected

The children of this node.

Definition at line 542 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumLoadedChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::flushToDiskRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getChildPtr(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual().

◆ depth_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_
protected

◆ m_tree_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBase<ContainerT, PointT>* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_
protected

◆ node_container_basename

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_basename = "node"
static

◆ node_container_extension

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_extension = ".oct_dat"
static

Definition at line 120 of file octree_base_node.h.

◆ node_index_basename

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_index_basename = "node"
static

◆ node_index_extension

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_index_extension = ".oct_idx"
static

◆ node_metadata_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeNodeMetadata::Ptr pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_metadata_
protected

Definition at line 570 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::createChild(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getOccupiedVoxelCentersRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getPCDFilename(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::inBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::intersectsWithBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::printBoundingBox(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::subdividePoint(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::writeVPythonVisual().

◆ num_children_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_
protected

◆ num_loaded_children_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_loaded_children_
protected

Number of loaded children this node has.

"Loaded" means child OctreeBaseNodes have been allocated, and their metadata files have been loaded into memory. num_loaded_children_ <= num_children_

Definition at line 553 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren().

◆ parent_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::parent_
protected

◆ payload_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::shared_ptr<ContainerT> pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::payload_
protected

what holds the points.

currently a custom class, but in theory you could use an stl container if you rewrote some of this class. I used to use deques for this...

Definition at line 558 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataAtMaxDepth(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addDataToLeaf_and_genLOD(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::addPointCloud_and_genLOD(), pcl::outofcore::OutofcoreOctreeBase< ContainerT, pcl::PointXYZRGB >::buildLODRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDataSize(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::init_root_node(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadFromFile(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::OutofcoreOctreeBaseNode(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIncludes_subsample(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryBBIntersects(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::queryFrustum(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::read(), pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size(), and pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sortOctantIndices().

◆ pcd_extension

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pcd_extension = ".pcd"
staticprotected

◆ rng_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::mt19937 pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rng_
staticprotected

Mersenne Twister: A 623-dimensionally equidistributed uniform pseudo-random number generator.

Definition at line 565 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample().

◆ rng_mutex_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
std::mutex pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rng_mutex_
staticprotected

Random number generator mutex.

Definition at line 561 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample().

◆ root_node_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_
protected

◆ sample_percent_

template<typename ContainerT = OutofcoreOctreeDiskContainer<pcl::PointXYZ>, typename PointT = pcl::PointXYZ>
const double pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sample_percent_ = .125
static

The documentation for this class was generated from the following files: