A node in the volume octree. More...
#include <OgreVolumeOctreeNode.h>

Public Member Functions | |
| OctreeNode (const Vector3 &from=Vector3::ZERO, const Vector3 &to=Vector3::ZERO) | |
| Constructor. | |
| virtual | ~OctreeNode (void) |
| Destructor. | |
| virtual OctreeNode * | createInstance (const Vector3 &from, const Vector3 &to) |
| Factory method to create octree nodes. | |
| const Vector3 | getCenter (void) const |
| Gets the center of this cell. | |
| const Vector3 | getCenterBack (void) const |
| Gets the center of the corners 0, 1, 4, 5. | |
| const Vector3 | getCenterBackBottom (void) const |
| Gets the center of the corners 0, 1. | |
| const Vector3 | getCenterBackLeft (void) const |
| Gets the center of the corners 0, 4. | |
| const Vector3 | getCenterBackRight (void) const |
| Gets the center of the corners 1, 5. | |
| const Vector3 | getCenterBackTop (void) const |
| Gets the center of the corners 4, 5. | |
| const Vector3 | getCenterBottom (void) const |
| Gets the center of the corners 0, 1, 2, 3. | |
| const Vector3 | getCenterFront (void) const |
| Gets the center of the corners 2, 3, 6, 7. | |
| const Vector3 | getCenterFrontBottom (void) const |
| Gets the center of the corners 2, 3. | |
| const Vector3 | getCenterFrontLeft (void) const |
| Gets the center of the corners 3, 7. | |
| const Vector3 | getCenterFrontRight (void) const |
| Gets the center of the corners 2, 6. | |
| const Vector3 | getCenterFrontTop (void) const |
| Gets the center of the corners 6, 7. | |
| const Vector3 | getCenterLeft (void) const |
| Gets the center of the corners 0, 3, 4, 6. | |
| const Vector3 | getCenterLeftBottom (void) const |
| Gets the center of the corners 0, 3. | |
| const Vector3 | getCenterLeftTop (void) const |
| Gets the center of the corners 4, 7. | |
| const Vector3 | getCenterRight (void) const |
| Gets the center of the corners 1, 2, 5, 6. | |
| const Vector3 | getCenterRightBottom (void) const |
| Gets the center of the corners 1, 2. | |
| const Vector3 | getCenterRightTop (void) const |
| Gets the center of the corners 5, 6. | |
| const Vector3 | getCenterTop (void) const |
| Gets the center of the corners 4, 5, 6, 7. | |
| const Vector4 | getCenterValue (void) const |
| Gets the center value. | |
| const OctreeNode * | getChild (const size_t i) const |
| Gets an octree child. | |
| const Vector3 | getCorner1 (void) const |
| Gets the coordinate of corner 1. | |
| const Vector3 | getCorner2 (void) const |
| Gets the coordinate of corner 2. | |
| const Vector3 | getCorner3 (void) const |
| Gets the coordinate of corner 3. | |
| const Vector3 | getCorner4 (void) const |
| Gets the coordinate of corner 4. | |
| const Vector3 | getCorner5 (void) const |
| Gets the coordinate of corner 5. | |
| const Vector3 | getCorner7 (void) const |
| Gets the coordinate of corner 7. | |
| const Vector3 & | getFrom (void) const |
| Gets the back lower left corner of the cell. | |
| Entity * | getOctreeGrid (SceneManager *sceneManager) |
| Getter for the octree debug visualization of the octree starting with this node. | |
| const Vector3 & | getTo (void) const |
| Gets the front upper right corner of the cell. | |
| bool | isBorderBack (const OctreeNode &root) const |
| Gets whether this cell is at the back of the given root cell. | |
| bool | isBorderBottom (const OctreeNode &root) const |
| Gets whether this cell is at the bottom of the given root cell. | |
| bool | isBorderFront (const OctreeNode &root) const |
| Gets whether this cell is at the front of the given root cell. | |
| bool | isBorderLeft (const OctreeNode &root) const |
| Gets whether this cell is at the left of the given root cell. | |
| bool | isBorderRight (const OctreeNode &root) const |
| Gets whether this cell is at the right of the given root cell. | |
| bool | isBorderTop (const OctreeNode &root) const |
| Gets whether this cell is at the top of the given root cell. | |
| bool | isIsoSurfaceNear (void) const |
| Gets whether the isosurface is somewhat near to this node. | |
| bool | isSubdivided (void) const |
| Gets whether this cell has any children. | |
| void | operator delete (void *ptr) |
| void | operator delete (void *ptr, void *) |
| void | operator delete (void *ptr, const char *, int, const char *) |
| void | operator delete[] (void *ptr) |
| void | operator delete[] (void *ptr, const char *, int, const char *) |
| void * | operator new (size_t sz, const char *file, int line, const char *func) |
| operator new, with debug line info | |
| void * | operator new (size_t sz) |
| void * | operator new (size_t sz, void *ptr) |
| placement operator new | |
| void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
| array operator new, with debug line info | |
| void * | operator new[] (size_t sz) |
| void | setCenterValue (Vector4 value) |
| Raw setter for the center value. | |
| void | setFrom (Vector3 from) |
| Setter for the from-part of this cell. | |
| void | setTo (Vector3 to) |
| Setter for the to-part of this cell. | |
| void | split (const OctreeNodeSplitPolicy *splitPolicy, const Source *src, const Real geometricError) |
| Splits this cell if the split policy says so. | |
Static Public Member Functions | |
| static void | getChildrenDimensions (const Vector3 &from, const Vector3 &to, Vector3 ¢er, Vector3 &width, Vector3 &height, Vector3 &depth) |
| Gets the center and width / height / depth vector of the children of a node. | |
Static Public Attributes | |
| static const size_t | OCTREE_CHILDREN_COUNT |
| Even in an OCtree, the amount of children should not be hardcoded. | |
Protected Member Functions | |
| void | buildOctreeGridLines (ManualObject *manual) const |
| Method to actually add the lines of the octree cells to the debug visualization. | |
Protected Attributes | |
| Vector4 | mCenterValue |
| Density and gradient of the center. | |
| OctreeNode ** | mChildren |
| The children of this node. | |
| Vector3 | mFrom |
| The back lower left corner of the cell. | |
| Entity * | mOctreeGrid |
| Holds the debug visualization of the octree. Just set in the root. | |
| Vector3 | mTo |
| The front upper right corner of the cell. | |
Static Protected Attributes | |
| static uint32 | mGridPositionCount |
| To count some indices while creating the debug view and recursing through the instances. | |
| static size_t | mNodeI |
| To give the debug manual object an unique name. | |
| static const Real | NEAR_FACTOR |
| Factor to the diagonal of the cell to decide whether this cell is near the isosurface or not. | |
A node in the volume octree.
Definition at line 45 of file OgreVolumeOctreeNode.h.
| Ogre::Volume::OctreeNode::OctreeNode | ( | const Vector3 & | from = Vector3::ZERO, |
| const Vector3 & | to = Vector3::ZERO |
||
| ) |
Constructor.
| from | The back lower left corner of the cell. |
| to | The front upper right corner of the cell. |
| virtual Ogre::Volume::OctreeNode::~OctreeNode | ( | void | ) | [virtual] |
Destructor.
| void Ogre::Volume::OctreeNode::buildOctreeGridLines | ( | ManualObject * | manual | ) | const [protected] |
Method to actually add the lines of the octree cells to the debug visualization.
| manual | The manual object to add the lines to if this is a leaf in the octree. |
| virtual OctreeNode* Ogre::Volume::OctreeNode::createInstance | ( | const Vector3 & | from, |
| const Vector3 & | to | ||
| ) | [virtual] |
Factory method to create octree nodes.
| from | The back lower left corner of the cell. |
| to | The front upper right corner of the cell. |
| const Vector3 Ogre::Volume::OctreeNode::getCenter | ( | void | ) | const |
Gets the center of this cell.
Definition at line 200 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBack | ( | void | ) | const |
Gets the center of the corners 0, 1, 4, 5.
Definition at line 293 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBackBottom | ( | void | ) | const |
Gets the center of the corners 0, 1.
Definition at line 356 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBackLeft | ( | void | ) | const |
Gets the center of the corners 0, 4.
Definition at line 419 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBackRight | ( | void | ) | const |
Gets the center of the corners 1, 5.
Definition at line 437 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBackTop | ( | void | ) | const |
Gets the center of the corners 4, 5.
Definition at line 347 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterBottom | ( | void | ) | const |
Gets the center of the corners 0, 1, 2, 3.
Definition at line 338 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterFront | ( | void | ) | const |
Gets the center of the corners 2, 3, 6, 7.
Definition at line 302 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterFrontBottom | ( | void | ) | const |
Gets the center of the corners 2, 3.
Definition at line 374 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterFrontLeft | ( | void | ) | const |
Gets the center of the corners 3, 7.
Definition at line 428 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterFrontRight | ( | void | ) | const |
Gets the center of the corners 2, 6.
Definition at line 446 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterFrontTop | ( | void | ) | const |
Gets the center of the corners 6, 7.
Definition at line 365 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterLeft | ( | void | ) | const |
Gets the center of the corners 0, 3, 4, 6.
Definition at line 311 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterLeftBottom | ( | void | ) | const |
Gets the center of the corners 0, 3.
Definition at line 392 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterLeftTop | ( | void | ) | const |
Gets the center of the corners 4, 7.
Definition at line 383 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterRight | ( | void | ) | const |
Gets the center of the corners 1, 2, 5, 6.
Definition at line 320 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterRightBottom | ( | void | ) | const |
Gets the center of the corners 1, 2.
Definition at line 410 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterRightTop | ( | void | ) | const |
Gets the center of the corners 5, 6.
Definition at line 401 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCenterTop | ( | void | ) | const |
Gets the center of the corners 4, 5, 6, 7.
Definition at line 329 of file OgreVolumeOctreeNode.h.
| const Vector4 Ogre::Volume::OctreeNode::getCenterValue | ( | void | ) | const |
Gets the center value.
Definition at line 518 of file OgreVolumeOctreeNode.h.
| const OctreeNode* Ogre::Volume::OctreeNode::getChild | ( | const size_t | i | ) | const |
Gets an octree child.
Enumeration: 4 5 7 6 0 1 3 2
| i | The child index. |
Definition at line 191 of file OgreVolumeOctreeNode.h.
| static void Ogre::Volume::OctreeNode::getChildrenDimensions | ( | const Vector3 & | from, |
| const Vector3 & | to, | ||
| Vector3 & | center, | ||
| Vector3 & | width, | ||
| Vector3 & | height, | ||
| Vector3 & | depth | ||
| ) | [static] |
Gets the center and width / height / depth vector of the children of a node.
| from | The back lower left corner of the cell. |
| to | The front upper right corner of the cell. |
| center | Out parameter of the calculated center. |
| width | Out parameter of the width vector (width in x, rest zero). |
| height | Out parameter of the height vector (height in y, rest zero). |
| depth | Out parameter of the depth vector (depth in z, rest zero). |
Definition at line 98 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
| const Vector3 Ogre::Volume::OctreeNode::getCorner1 | ( | void | ) | const |
Gets the coordinate of corner 1.
Definition at line 455 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCorner2 | ( | void | ) | const |
Gets the coordinate of corner 2.
Definition at line 464 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCorner3 | ( | void | ) | const |
Gets the coordinate of corner 3.
Definition at line 473 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCorner4 | ( | void | ) | const |
Gets the coordinate of corner 4.
Definition at line 482 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCorner5 | ( | void | ) | const |
Gets the coordinate of corner 5.
Definition at line 491 of file OgreVolumeOctreeNode.h.
| const Vector3 Ogre::Volume::OctreeNode::getCorner7 | ( | void | ) | const |
Gets the coordinate of corner 7.
Definition at line 500 of file OgreVolumeOctreeNode.h.
| const Vector3& Ogre::Volume::OctreeNode::getFrom | ( | void | ) | const |
Gets the back lower left corner of the cell.
Definition at line 209 of file OgreVolumeOctreeNode.h.
| Entity* Ogre::Volume::OctreeNode::getOctreeGrid | ( | SceneManager * | sceneManager | ) |
Getter for the octree debug visualization of the octree starting with this node.
| sceneManager | The scenemanager creating the actual entity. |
| const Vector3& Ogre::Volume::OctreeNode::getTo | ( | void | ) | const |
Gets the front upper right corner of the cell.
Definition at line 218 of file OgreVolumeOctreeNode.h.
| bool Ogre::Volume::OctreeNode::isBorderBack | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the back of the given root cell.
| root | The octree root node to test against. |
Definition at line 273 of file OgreVolumeOctreeNode.h.
References mFrom, and Ogre::Vector3::z.
| bool Ogre::Volume::OctreeNode::isBorderBottom | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the bottom of the given root cell.
| root | The octree root node to test against. |
Definition at line 251 of file OgreVolumeOctreeNode.h.
References mFrom, and Ogre::Vector3::y.
| bool Ogre::Volume::OctreeNode::isBorderFront | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the front of the given root cell.
| root | The octree root node to test against. |
Definition at line 284 of file OgreVolumeOctreeNode.h.
References mTo, and Ogre::Vector3::z.
| bool Ogre::Volume::OctreeNode::isBorderLeft | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the left of the given root cell.
| root | The octree root node to test against. |
Definition at line 229 of file OgreVolumeOctreeNode.h.
References mFrom, and Ogre::Vector3::x.
| bool Ogre::Volume::OctreeNode::isBorderRight | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the right of the given root cell.
| root | The octree root node to test against. |
Definition at line 240 of file OgreVolumeOctreeNode.h.
References mTo, and Ogre::Vector3::x.
| bool Ogre::Volume::OctreeNode::isBorderTop | ( | const OctreeNode & | root | ) | const |
Gets whether this cell is at the top of the given root cell.
| root | The octree root node to test against. |
Definition at line 262 of file OgreVolumeOctreeNode.h.
References mTo, and Ogre::Vector3::y.
| bool Ogre::Volume::OctreeNode::isIsoSurfaceNear | ( | void | ) | const |
Gets whether the isosurface is somewhat near to this node.
Definition at line 527 of file OgreVolumeOctreeNode.h.
References Ogre::Math::Abs().
| bool Ogre::Volume::OctreeNode::isSubdivided | ( | void | ) | const |
Gets whether this cell has any children.
Definition at line 176 of file OgreVolumeOctreeNode.h.
| void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr | ) | [inherited] |
Definition at line 96 of file OgreMemoryAllocatedObject.h.
| void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, |
| void * | |||
| ) | [inherited] |
Definition at line 102 of file OgreMemoryAllocatedObject.h.
| void Ogre::AllocatedObject< Alloc >::operator delete | ( | void * | ptr, |
| const char * | , | ||
| int | , | ||
| const char * | |||
| ) | [inherited] |
Definition at line 108 of file OgreMemoryAllocatedObject.h.
| void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr | ) | [inherited] |
Definition at line 113 of file OgreMemoryAllocatedObject.h.
| void Ogre::AllocatedObject< Alloc >::operator delete[] | ( | void * | ptr, |
| const char * | , | ||
| int | , | ||
| const char * | |||
| ) | [inherited] |
Definition at line 119 of file OgreMemoryAllocatedObject.h.
| void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, |
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) | [inherited] |
operator new, with debug line info
Definition at line 68 of file OgreMemoryAllocatedObject.h.
| void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz | ) | [inherited] |
Definition at line 73 of file OgreMemoryAllocatedObject.h.
| void* Ogre::AllocatedObject< Alloc >::operator new | ( | size_t | sz, |
| void * | ptr | ||
| ) | [inherited] |
placement operator new
Definition at line 79 of file OgreMemoryAllocatedObject.h.
| void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz, |
| const char * | file, | ||
| int | line, | ||
| const char * | func | ||
| ) | [inherited] |
array operator new, with debug line info
Definition at line 86 of file OgreMemoryAllocatedObject.h.
| void* Ogre::AllocatedObject< Alloc >::operator new[] | ( | size_t | sz | ) | [inherited] |
Definition at line 91 of file OgreMemoryAllocatedObject.h.
| void Ogre::Volume::OctreeNode::setCenterValue | ( | Vector4 | value | ) |
Raw setter for the center value.
| value | The density value. |
Definition at line 509 of file OgreVolumeOctreeNode.h.
| void Ogre::Volume::OctreeNode::setFrom | ( | Vector3 | from | ) |
Setter for the from-part of this cell.
| from | The back lower left corner of the cell. |
Definition at line 158 of file OgreVolumeOctreeNode.h.
| void Ogre::Volume::OctreeNode::setTo | ( | Vector3 | to | ) |
Setter for the to-part of this cell.
| to | The front upper right corner of the cell. |
Definition at line 167 of file OgreVolumeOctreeNode.h.
| void Ogre::Volume::OctreeNode::split | ( | const OctreeNodeSplitPolicy * | splitPolicy, |
| const Source * | src, | ||
| const Real | geometricError | ||
| ) |
Splits this cell if the split policy says so.
| splitPolicy | Defines the policy deciding whether to split this node or not. |
| src | The volume source. |
| geometricError | The accepted geometric error. |
Vector4 Ogre::Volume::OctreeNode::mCenterValue [protected] |
Density and gradient of the center.
Definition at line 71 of file OgreVolumeOctreeNode.h.
OctreeNode** Ogre::Volume::OctreeNode::mChildren [protected] |
The children of this node.
Definition at line 65 of file OgreVolumeOctreeNode.h.
Vector3 Ogre::Volume::OctreeNode::mFrom [protected] |
The back lower left corner of the cell.
Definition at line 59 of file OgreVolumeOctreeNode.h.
Referenced by isBorderBack(), isBorderBottom(), and isBorderLeft().
uint32 Ogre::Volume::OctreeNode::mGridPositionCount [static, protected] |
To count some indices while creating the debug view and recursing through the instances.
Definition at line 53 of file OgreVolumeOctreeNode.h.
size_t Ogre::Volume::OctreeNode::mNodeI [static, protected] |
To give the debug manual object an unique name.
Definition at line 56 of file OgreVolumeOctreeNode.h.
Entity* Ogre::Volume::OctreeNode::mOctreeGrid [protected] |
Holds the debug visualization of the octree. Just set in the root.
Definition at line 68 of file OgreVolumeOctreeNode.h.
Vector3 Ogre::Volume::OctreeNode::mTo [protected] |
The front upper right corner of the cell.
Definition at line 62 of file OgreVolumeOctreeNode.h.
Referenced by isBorderFront(), isBorderRight(), and isBorderTop().
const Real Ogre::Volume::OctreeNode::NEAR_FACTOR [static, protected] |
Factor to the diagonal of the cell to decide whether this cell is near the isosurface or not.
Definition at line 50 of file OgreVolumeOctreeNode.h.
const size_t Ogre::Volume::OctreeNode::OCTREE_CHILDREN_COUNT [static] |
Even in an OCtree, the amount of children should not be hardcoded.
Definition at line 82 of file OgreVolumeOctreeNode.h.
Copyright © 2012 Torus Knot Software Ltd

This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:41:52