Loading...
Searching...
No Matches
pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT > Class Template Reference
Module outofcore

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.
| 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.
| ~OutofcoreOctreeBaseNode () override
| Will recursively delete all children calling recFreeChildrein.
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
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)=delete
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.
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.
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.
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).
virtual void | printBoundingBox (const std::size_t query_depth) const
| Write the voxel size to stdout at `query_depth`.
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
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.
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.
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.
void | writeVPythonVisual (std::ofstream &file)
| Write a python visual script to file.
virtual int | read (pcl::PCLPointCloud2::Ptr &output_cloud)
node_type_t | getNodeType () const override
| Pure virtual method for retrieving the type of octree node (branch or leaf).
OutofcoreOctreeBaseNode * | deepCopy () const override
| Pure virtual method to perform a deep copy of the octree.
virtual std::size_t | getDepth () const
virtual std::size_t | getNumChildren () const
| Returns the total number of children on disk.
virtual std::size_t | getNumLoadedChildren () const
| Count loaded children.
virtual OutofcoreOctreeBaseNode * | getChildPtr (std::size_t index_arg) const
| Returns a pointer to the child in octant index_arg.
virtual std::uint64_t | getDataSize () const
| Gets the number of points available in the PCD file.
virtual void | clearData ()
Public Member Functions inherited from pcl::octree::OctreeNode
| OctreeNode ()=default
virtual | ~OctreeNode ()=default

## Static Public Attributes

static const std::string | node_index_basename
static const std::string | node_container_basename
static const std::string | node_index_extension
static const std::string | node_container_extension
static const double | sample_percent_

## 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.
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.
| OutofcoreOctreeBaseNode (const OutofcoreOctreeBaseNode &rval)
| no copy construction right now
OutofcoreOctreeBaseNode & | operator= (const OutofcoreOctreeBaseNode &rval)
| Operator= is not implemented.
virtual std::size_t | countNumChildren () const
| Counts the number of child directories on disk; used to update num_children_.
virtual std::size_t | countNumLoadedChildren () const
| Counts the number of loaded children by testing the `children_` array; used to update num_loaded_children_ internally.
void | saveIdx (bool recursive)
| Save node's metadata to file.
void | randomSample (const AlignedPointTVector &p, AlignedPointTVector &insertBuff, const bool skip_bb_check)
| Randomly sample point data.
void | subdividePoints (const AlignedPointTVector &p, std::vector< AlignedPointTVector > &c, const bool skip_bb_check)
| Subdivide points to pass to child nodes.
void | subdividePoint (const PointT &point, std::vector< AlignedPointTVector > &c)
| Subdivide a single point into a specific child node.
std::uint64_t | addDataAtMaxDepth (const AlignedPointTVector &p, const bool skip_bb_check=true)
| Add data to the leaf when at max depth of tree.
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.
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.
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.
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.
bool | pointInBoundingBox (const PointT &p) const
| Tests if specified point is within bounds of current node's bounding box.
void | createChild (const std::size_t idx)
| Creates child node `idx`.
void | saveMetadataToFile (const boost::filesystem::path &path)
| Write JSON metadata for this node to file.
void | recFreeChildren ()
| Method which recursively free children of this node.
std::uint64_t | size () const
| Number of points in the payload.
void | flushToDiskRecursive ()
void | loadFromFile (const boost::filesystem::path &path, OutofcoreOctreeBaseNode *super)
| Loads the nodes metadata from the JSON file.
void | convertToXYZRecursive ()
| Recursively converts data files to ascii XZY files.
| OutofcoreOctreeBaseNode (const Eigen::Vector3d &bb_min, const Eigen::Vector3d &bb_max, const char *dir, OutofcoreOctreeBaseNode< ContainerT, PointT > *super)
| Private constructor used for children.
void | copyAllCurrentAndChildPointsRec (std::list< PointT > &v)
| Copies points from this and all children into a single point container (std::list).
void | copyAllCurrentAndChildPointsRec_sub (std::list< PointT > &v, const double percent)
bool | hasUnloadedChildren () const
| Returns whether or not a node has unloaded children data.
virtual void | loadChildren (bool recursive)
| Load nodes child data creating new nodes for each.
void | getOccupiedVoxelCentersRecursive (AlignedPointTVector &voxel_centers, const std::size_t query_depth)
| Gets a vector of occupied voxel centers.
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.
void | sortOctantIndices (const pcl::PCLPointCloud2::Ptr &input_cloud, std::vector< pcl::Indices > &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.
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.

## 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.
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.

## Protected Attributes

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

## Static Protected Attributes

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

## 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.
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.
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.

## 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 95 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 | ( |  | ) |

Empty constructor; sets pointers for children and for bounding boxes to 0.

Definition at line 99 of file octree_base_node.hpp.

References children_, depth_, m_tree_, node_metadata_, num_children_, num_loaded_children_, parent_, payload_, and root_node_.

Referenced by createChild(), loadChildren(), loadFromFile(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), and recFreeChildren().

## 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 )

Create root node and directory.

Definition at line 190 of file octree_base_node.hpp.

References children_, depth_, init_root_node(), m_tree_, node_metadata_, num_children_, num_loaded_children_, parent_, payload_, and root_node_.

## ~OutofcoreOctreeBaseNode()

template<typename ContainerT, typename PointT>

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

override

Will recursively delete all children calling recFreeChildrein.

Definition at line 265 of file octree_base_node.hpp.

References 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

Load from disk If creating root, path is full name.

If creating any other node, path is dir; throws exception if directory or metadata not found

Parameters

  [in] | directory_path | pathname
  [in] | super |
  [in] | load_all |

Exceptions

  PCLException | if directory is missing
  PCLException | if node index is missing

Definition at line 116 of file octree_base_node.hpp.

References children_, countNumChildren(), depth_, getDepth(), loadChildren(), loadFromFile(), m_tree_, node_index_extension, node_metadata_, num_children_, num_loaded_children_, OutofcoreOctreeBaseNode(), parent_, payload_, and root_node_.

## 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

Private constructor used for children.

Definition at line 1703 of file octree_base_node.hpp.

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

## 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] | p | vector of points to attempt to add to the tree
  [in] | skip_bb_check | 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 620 of file octree_base_node.hpp.

References depth_, payload_, pointInBoundingBox(), and root_node_.

Referenced by addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), and addPointCloud_and_genLOD().

## 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_cloud | PCLPointCloud2 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 657 of file octree_base_node.hpp.

References depth_, payload_, and 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

add point to this node if we are a leaf, or find the leaf below us that is supposed to take the point

Parameters

  [in] | p | vector of points to add to the leaf
  [in] | skip_bb_check | whether to check if the point's coordinates fall within the bounding box

Definition at line 355 of file octree_base_node.hpp.

References addDataAtMaxDepth(), children_, createChild(), depth_, hasUnloadedChildren(), loadChildren(), node_metadata_, pointInBoundingBox(), and root_node_.

## 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

Definition at line 414 of file octree_base_node.hpp.

References children_, createChild(), depth_, hasUnloadedChildren(), loadChildren(), node_metadata_, payload_, pointInBoundingBox(), pcl::outofcore::pointInBoundingBox(), and root_node_.

## 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

Recursively add points to the leaf and children subsampling LODs on the way down.

Note
  rng_mutex_ lock occurs

Definition at line 808 of file octree_base_node.hpp.

References addDataAtMaxDepth(), children_, createChild(), depth_, hasUnloadedChildren(), loadChildren(), payload_, randomSample(), root_node_, and subdividePoints().

## 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

Add a single PCLPointCloud2 object into the octree.

Parameters

  [in] | input_cloud |
  [in] | skip_bb_check | (default = false)

Definition at line 501 of file octree_base_node.hpp.

References addDataAtMaxDepth(), children_, pcl::copyPointCloud(), createChild(), depth_, hasUnloadedChildren(), loadChildren(), node_metadata_, num_children_, root_node_, size(), and sortOctantIndices().

## 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 708 of file octree_base_node.hpp.

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

## clearData()

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

virtual void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::clearData | ( |  | ) |

inline virtual

Definition at line 309 of file octree_base_node.h.

## convertToXYZRecursive()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::convertToXYZRecursive | ( |  | ) |

protected

Recursively converts data files to ascii XZY files.

Definition at line 1946 of file octree_base_node.hpp.

References children_, hasUnloadedChildren(), loadChildren(), node_metadata_, and payload_.

## copyAllCurrentAndChildPointsRec()

template<typename ContainerT, typename PointT>

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

protected

Copies points from this and all children into a single point container (std::list).

Definition at line 1755 of file octree_base_node.hpp.

References children_, hasUnloadedChildren(), loadChildren(), num_children_, and payload_.

## copyAllCurrentAndChildPointsRec_sub()

template<typename ContainerT, typename PointT>

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

protected

Definition at line 1778 of file octree_base_node.hpp.

References children_, hasUnloadedChildren(), loadChildren(), num_children_, and payload_.

## countNumChildren()

template<typename ContainerT, typename PointT>

std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumChildren | ( |  | ) | const

protected virtual

Counts the number of child directories on disk; used to update num_children_.

Definition at line 274 of file octree_base_node.hpp.

References node_metadata_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< OutofcoreOctreeDiskContainer< PointT >, PointT >::getNumChildren(), and OutofcoreOctreeBaseNode().

## countNumLoadedChildren()

template<typename ContainerT, typename PointT>

std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::countNumLoadedChildren | ( |  | ) | const

protected virtual

Counts the number of loaded children by testing the `children_` array; used to update num_loaded_children_ internally.

Definition at line 1912 of file octree_base_node.hpp.

References children_.

Referenced by pcl::outofcore::OutofcoreOctreeBaseNode< OutofcoreOctreeDiskContainer< PointT >, PointT >::getNumLoadedChildren().

## createChild()

template<typename ContainerT, typename PointT>

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

protected

Creates child node `idx`.

Parameters

  [in] | idx | Index (0-7) of the child node

Definition at line 866 of file octree_base_node.hpp.

References children_, node_metadata_, num_children_, and OutofcoreOctreeBaseNode().

Referenced by addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), and addPointCloud_and_genLOD().

## deepCopy()

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

OutofcoreOctreeBaseNode * pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::deepCopy | ( |  | ) | const

inline override virtual

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

Implements pcl::octree::OctreeNode.

Definition at line 271 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.

## flushToDiskRecursive()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::flushToDiskRecursive | ( |  | ) |

protected

Definition at line 1967 of file octree_base_node.hpp.

References children_.

## 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

inline virtual

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

Parameters

  [out] | min_bb | returns the minimum corner of the bounding box indexed by 0-->X, 1-->Y, 2-->Z
  [out] | max_bb | returns 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.

## getChildPtr()

template<typename ContainerT, typename PointT>

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

virtual

Returns a pointer to the child in octant index_arg.

Definition at line 1896 of file octree_base_node.hpp.

References children_.

Referenced by pcl::outofcore::OutofcoreOctreeBase< ContainerT, PointT >::getBranchChildPtr().

## getDataSize()

template<typename ContainerT, typename PointT>

std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDataSize | ( |  | ) | const

virtual

Gets the number of points available in the PCD file.

Definition at line 1904 of file octree_base_node.hpp.

References payload_.

## getDepth()

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

virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getDepth | ( |  | ) | const

inline virtual

Definition at line 279 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreOctreeBase< OutofcoreOctreeDiskContainer< pcl::PointXYZ >, pcl::PointXYZRGB >::flushToDiskLazy(), pcl::outofcore::OutofcoreBreadthFirstIterator< PointT, ContainerT >::operator++(), and OutofcoreOctreeBaseNode().

## getMetadataFilename()

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

const boost::filesystem::path & pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getMetadataFilename | ( |  | ) | const

inline

Definition at line 153 of file octree_base_node.h.

## getNodeType()

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

node_type_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNodeType | ( |  | ) | const

inline override virtual

Pure virtual method for retrieving the type of octree node (branch or leaf).

Implements pcl::octree::OctreeNode.

Definition at line 260 of file octree_base_node.h.

Referenced by pcl::outofcore::OutofcoreBreadthFirstIterator< PointT, ContainerT >::operator++().

## getNumChildren()

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

virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumChildren | ( |  | ) | const

inline virtual

Returns the total number of children on disk.

Definition at line 286 of file octree_base_node.h.

Referenced by hasUnloadedChildren(), loadChildren(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIntersects(), and queryFrustum().

## getNumLoadedChildren()

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

virtual std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getNumLoadedChildren | ( |  | ) | const

inline virtual

Count loaded children.

Definition at line 294 of file octree_base_node.h.

Referenced by hasUnloadedChildren().

## 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

Gets a vector of occupied voxel centers.

Parameters

  [out] | voxel_centers |
  [in] | query_depth |

Definition at line 974 of file octree_base_node.hpp.

References children_, depth_, node_metadata_, and num_children_.

## 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

Gets a vector of occupied voxel centers.

Parameters

  [out] | voxel_centers |
  [in] | query_depth |

Definition at line 1319 of file octree_base_node.hpp.

References children_, depth_, node_metadata_, and num_children_.

## getPCDFilename()

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

const boost::filesystem::path & pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::getPCDFilename | ( |  | ) | const

inline

Definition at line 147 of file octree_base_node.h.

## hasUnloadedChildren()

template<typename ContainerT, typename PointT>

bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::hasUnloadedChildren | ( |  | ) | const

protected

Returns whether or not a node has unloaded children data.

Definition at line 307 of file octree_base_node.hpp.

References getNumChildren(), and getNumLoadedChildren().

Referenced by addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), addPointCloud_and_genLOD(), convertToXYZRecursive(), copyAllCurrentAndChildPointsRec(), copyAllCurrentAndChildPointsRec_sub(), queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), queryBBIntersects(), and queryFrustum().

## inBoundingBox()

template<typename ContainerT, typename PointT>

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

inline protected

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

Parameters

  [in] | min_bb | The minimum corner of the input bounding box
  [in] | max_bb | The 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 1825 of file octree_base_node.hpp.

References node_metadata_.

Referenced by queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), and 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_min | triple of x,y,z minima for bounding box
  bb_max | triple of x,y,z maxima for bounding box
  tree | address of the tree data structure that will hold this initial root node
  rootname | Root directory for location of on-disk octree storage; if directory doesn't exist, it is created; if "rootname" is an existing file,

Exceptions

  PCLException | if the specified path already exists

Definition at line 209 of file octree_base_node.hpp.

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

Referenced by 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

inline protected

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

Parameters

  [in] | min_bb | The minimum corner of the input bounding box
  [in] | max_bb | The 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 1803 of file octree_base_node.hpp.

References node_metadata_.

Referenced by queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), and queryBBIntersects().

## loadChildren()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::loadChildren | ( | bool | recursive | ) |

protected virtual

Load nodes child data creating new nodes for each.

Definition at line 314 of file octree_base_node.hpp.

References children_, getNumChildren(), node_metadata_, num_loaded_children_, and OutofcoreOctreeBaseNode().

Referenced by addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), addPointCloud_and_genLOD(), convertToXYZRecursive(), copyAllCurrentAndChildPointsRec(), copyAllCurrentAndChildPointsRec_sub(), OutofcoreOctreeBaseNode(), queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), queryBBIntersects(), and queryFrustum().

## 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

Loads the nodes metadata from the JSON file.

Definition at line 1928 of file octree_base_node.hpp.

References node_metadata_, num_children_, OutofcoreOctreeBaseNode(), parent_, payload_, and recFreeChildren().

Referenced by OutofcoreOctreeBaseNode().

## operator=()

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

OutofcoreOctreeBaseNode & pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::operator= | ( | const OutofcoreOctreeBaseNode< ContainerT, PointT > & | rval | ) |

protected

Operator= is not implemented.

## 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 double | x,
|  | const double | y,
|  | const double | z )

static protected

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

Parameters

  [in] | min_bb | The minimum corner of the input bounding box
  [in] | max_bb | The maximum corner of the input bounding box
  | x |
  | y |
  | z |

## pointInBoundingBox() [2/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

Tests whether `point` falls within the input bounding box.

Parameters

  [in] | min_bb | The minimum corner of the input bounding box
  [in] | max_bb | The maximum corner of the input bounding box
  [in] | point | The test point

Referenced by addDataAtMaxDepth(), addDataToLeaf(), addDataToLeaf(), queryBBIncludes(), queryBBIncludes_subsample(), and sortOctantIndices().

## pointInBoundingBox() [3/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 )

inline static protected

Tests whether `p` falls within the input bounding box.

Parameters

  [in] | min_bb | The minimum corner of the input bounding box
  [in] | max_bb | The maximum corner of the input bounding box
  [in] | p | The point to be tested

Definition at line 1847 of file octree_base_node.hpp.

## pointInBoundingBox() [4/4]

template<typename ContainerT, typename PointT>

bool pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pointInBoundingBox | ( | const PointT & | p | ) | const

inline protected

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

Definition at line 929 of file octree_base_node.hpp.

References node_metadata_.

## printBoundingBox()

template<typename ContainerT, typename PointT>

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

virtual

Write the voxel size to stdout at `query_depth`.

Parameters

  [in] | query_depth | The depth at which to print the size of the voxel/bounding boxes

Definition at line 946 of file octree_base_node.hpp.

References children_, depth_, node_metadata_, and num_children_.

## 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

Recursively add points that fall into the queried bounding box up to the query_depth.

Parameters

  [in] | min_bb | the minimum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | max_bb | the maximum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | query_depth | the maximum depth to query in the octree for points within the bounding box
  [out] | dst | destion of points returned by the queries

Definition at line 1496 of file octree_base_node.hpp.

References children_, depth_, getNumChildren(), hasUnloadedChildren(), inBoundingBox(), intersectsWithBoundingBox(), loadChildren(), payload_, and pointInBoundingBox().

## 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

Recursively add points that fall into the queried bounding box up to the query_depth.

Parameters

  [in] | min_bb | the minimum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | max_bb | the maximum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | query_depth | the maximum depth to query in the octree for points within the bounding box
  [out] | dst_blob | destion of points returned by the queries

Definition at line 1378 of file octree_base_node.hpp.

References children_, pcl::concatenate(), pcl::copyPointCloud(), depth_, pcl::fromPCLPointCloud2(), pcl::getPointsInBox(), hasUnloadedChildren(), pcl::PointCloud< PointT >::height, pcl::utils::ignore(), inBoundingBox(), intersectsWithBoundingBox(), loadChildren(), num_children_, payload_, and pcl::PointCloud< PointT >::width.

## 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

Recursively add points that fall into the queried bounding box up to the query_depth.

Parameters

  [in] | min_bb | the minimum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | max_bb | the maximum corner of the bounding box, indexed by X,Y,Z coordinates
  [in] | query_depth |
  | percent |
  [out] | v | std::list of points returned by the query

Definition at line 1635 of file octree_base_node.hpp.

References children_, depth_, hasUnloadedChildren(), inBoundingBox(), intersectsWithBoundingBox(), loadChildren(), num_children_, payload_, and pointInBoundingBox().

## 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

Definition at line 1567 of file octree_base_node.hpp.

References children_, pcl::concatenate(), depth_, pcl::FilterIndices< PointT >::filter(), getNumChildren(), hasUnloadedChildren(), inBoundingBox(), intersectsWithBoundingBox(), loadChildren(), payload_, pcl::PCLBase< PointT >::setIndices(), pcl::PCLBase< PointT >::setInputCloud(), and pcl::RandomSample< PointT >::setSample().

## 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

Recursive acquires PCD paths to any node with which the queried bounding box intersects (at query_depth only).

Definition at line 1342 of file octree_base_node.hpp.

References children_, depth_, getNumChildren(), hasUnloadedChildren(), intersectsWithBoundingBox(), loadChildren(), node_metadata_, and payload_.

## queryFrustum() [1/3]

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

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, 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 )

delete

Warning
  This function is only available if the visualization module is available and the preprocessor symbol PCL_VISUALIZATION_AVAILABLE is defined.

## 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 )

Definition at line 1051 of file octree_base_node.hpp.

References m_tree_, and queryFrustum().

Referenced by queryFrustum().

## queryFrustum() [3/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 )

Definition at line 1057 of file octree_base_node.hpp.

References children_, depth_, getNumChildren(), hasUnloadedChildren(), loadChildren(), node_metadata_, and payload_.

## randomSample()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::randomSample | ( | const AlignedPointTVector & | p,
|  | AlignedPointTVector & | insertBuff,
|  | const bool | skip_bb_check )

protected

Randomly sample point data.

Definition at line 565 of file octree_base_node.hpp.

References depth_, pcl::outofcore::pointInBoundingBox(), rng_, rng_mutex_, root_node_, and sample_percent_.

Referenced by addDataToLeaf_and_genLOD().

## read()

template<typename ContainerT, typename PointT>

int pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::read | ( | pcl::PCLPointCloud2::Ptr & | output_cloud | ) |

virtual

Definition at line 1888 of file octree_base_node.hpp.

References payload_.

## recFreeChildren()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::recFreeChildren | ( |  | ) |

protected

Method which recursively free children of this node.

Definition at line 338 of file octree_base_node.hpp.

References children_, num_children_, and OutofcoreOctreeBaseNode().

Referenced by loadFromFile(), and ~OutofcoreOctreeBaseNode().

## saveIdx()

template<typename ContainerT, typename PointT>

void pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::saveIdx | ( | bool | recursive | ) |

protected

Save node's metadata to file.

Parameters

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

Definition at line 290 of file octree_base_node.hpp.

References children_, and node_metadata_.

Referenced by 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.

## size()

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

std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::size | ( |  | ) | const

inline protected

Number of points in the payload.

Definition at line 474 of file octree_base_node.h.

Referenced by addPointCloud(), and addPointCloud_and_genLOD().

## sortOctantIndices()

template<typename ContainerT, typename PointT>

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

protected

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.

Definition at line 1979 of file octree_base_node.hpp.

References pcl::getFieldIndex(), and pointInBoundingBox().

Referenced by addPointCloud(), and addPointCloud_and_genLOD().

## subdividePoint()

template<typename ContainerT, typename PointT>

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

protected

Subdivide a single point into a specific child node.

Definition at line 698 of file octree_base_node.hpp.

References node_metadata_.

Referenced by subdividePoints().

## 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

Subdivide points to pass to child nodes.

Definition at line 676 of file octree_base_node.hpp.

References pcl::outofcore::pointInBoundingBox(), and subdividePoint().

Referenced by addDataToLeaf_and_genLOD().

## writeVPythonVisual()

template<typename ContainerT, typename PointT>

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

Write a python visual script to file.

Parameters

  [in] | file | output file stream to write the python visual script

Definition at line 1867 of file octree_base_node.hpp.

References children_, node_metadata_, and num_children_.

## Friends And Related Symbol 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.

## OutofcoreOctreeBase< ContainerT, PointT >

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

friend class OutofcoreOctreeBase< ContainerT, PointT >

friend

Definition at line 77 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.

## 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 547 of file octree_base_node.h.

Referenced by addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), addPointCloud_and_genLOD(), convertToXYZRecursive(), copyAllCurrentAndChildPointsRec(), copyAllCurrentAndChildPointsRec_sub(), countNumLoadedChildren(), createChild(), flushToDiskRecursive(), getChildPtr(), getOccupiedVoxelCentersRecursive(), getOccupiedVoxelCentersRecursive(), loadChildren(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), printBoundingBox(), queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), queryBBIntersects(), queryFrustum(), recFreeChildren(), saveIdx(), and writeVPythonVisual().

## depth_

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

std::size_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::depth_

protected

Depth in the tree, root is 0, root's children are 1, ...

Definition at line 545 of file octree_base_node.h.

Referenced by addDataAtMaxDepth(), addDataAtMaxDepth(), addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), addPointCloud_and_genLOD(), getOccupiedVoxelCentersRecursive(), getOccupiedVoxelCentersRecursive(), init_root_node(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), printBoundingBox(), queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), queryBBIntersects(), queryFrustum(), and randomSample().

## m_tree_

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

OutofcoreOctreeBase<ContainerT, PointT>* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::m_tree_

protected

The tree we belong to.

Definition at line 539 of file octree_base_node.h.

Referenced by init_root_node(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), and queryFrustum().

## node_container_basename

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

const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_basename

static

Definition at line 118 of file octree_base_node.h.

Referenced by init_root_node(), and OutofcoreOctreeBaseNode().

## node_container_extension

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

const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_container_extension

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

static

Definition at line 117 of file octree_base_node.h.

Referenced by OutofcoreOctreeBaseNode().

## node_index_extension

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

const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::node_index_extension

static

Definition at line 119 of file octree_base_node.h.

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

## 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 575 of file octree_base_node.h.

Referenced by addDataToLeaf(), addDataToLeaf(), addPointCloud(), addPointCloud_and_genLOD(), convertToXYZRecursive(), countNumChildren(), createChild(), getOccupiedVoxelCentersRecursive(), getOccupiedVoxelCentersRecursive(), inBoundingBox(), init_root_node(), intersectsWithBoundingBox(), loadChildren(), loadFromFile(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), pointInBoundingBox(), printBoundingBox(), queryBBIntersects(), queryFrustum(), saveIdx(), subdividePoint(), and writeVPythonVisual().

## num_children_

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

std::uint64_t pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::num_children_

protected

Number of children on disk.

This is only changed when a new node is created

Definition at line 550 of file octree_base_node.h.

Referenced by addPointCloud(), addPointCloud_and_genLOD(), copyAllCurrentAndChildPointsRec(), copyAllCurrentAndChildPointsRec_sub(), createChild(), getOccupiedVoxelCentersRecursive(), getOccupiedVoxelCentersRecursive(), init_root_node(), loadFromFile(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), printBoundingBox(), queryBBIncludes(), queryBBIncludes_subsample(), recFreeChildren(), and writeVPythonVisual().

## 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 558 of file octree_base_node.h.

Referenced by loadChildren(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), and OutofcoreOctreeBaseNode().

## parent_

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

OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::parent_

protected

super-node

Definition at line 543 of file octree_base_node.h.

Referenced by init_root_node(), loadFromFile(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), and OutofcoreOctreeBaseNode().

## 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 563 of file octree_base_node.h.

Referenced by addDataAtMaxDepth(), addDataAtMaxDepth(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud_and_genLOD(), convertToXYZRecursive(), copyAllCurrentAndChildPointsRec(), copyAllCurrentAndChildPointsRec_sub(), pcl::outofcore::OutofcoreOctreeBase< OutofcoreOctreeDiskContainer< pcl::PointXYZ >, pcl::PointXYZRGB >::flushToDiskLazy(), getDataSize(), init_root_node(), loadFromFile(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), queryBBIncludes(), queryBBIncludes(), queryBBIncludes_subsample(), queryBBIncludes_subsample(), queryBBIntersects(), queryFrustum(), and read().

## pcd_extension

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

const std::string pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::pcd_extension

static protected

Extension for this class to find the pcd files on disk.

Definition at line 573 of file octree_base_node.h.

Referenced by init_root_node(), and OutofcoreOctreeBaseNode().

## rng_

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

std::mt19937 pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rng_

static protected

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

Definition at line 570 of file octree_base_node.h.

Referenced by randomSample().

## rng_mutex_

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

std::mutex pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::rng_mutex_

static protected

Random number generator mutex.

Definition at line 566 of file octree_base_node.h.

Referenced by randomSample().

## root_node_

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

OutofcoreOctreeBaseNode* pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::root_node_

protected

The root node of the tree we belong to.

Definition at line 541 of file octree_base_node.h.

Referenced by addDataAtMaxDepth(), addDataAtMaxDepth(), addDataToLeaf(), addDataToLeaf(), addDataToLeaf_and_genLOD(), addPointCloud(), addPointCloud_and_genLOD(), init_root_node(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), OutofcoreOctreeBaseNode(), and randomSample().

## sample_percent_

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

const double pcl::outofcore::OutofcoreOctreeBaseNode< ContainerT, PointT >::sample_percent_

static

Definition at line 121 of file octree_base_node.h.

Referenced by randomSample().

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

- pcl/outofcore/octree_base_node.h
- pcl/outofcore/impl/octree_base_node.hpp