OGRE
1.9.0
|
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, const char *, int, const char *) |
void | operator delete (void *ptr, void *) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *ptr, const char *, int, const char *) |
void * | operator new (size_t sz) |
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 *ptr) |
placement operator new | |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, const char *file, int line, const char *func) |
array operator new, with debug line info | |
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. |
|
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 |
Factory method to create octree nodes.
from | The back lower left corner of the cell. |
to | The front upper right corner of the cell. |
Gets the center of this cell.
Definition at line 200 of file OgreVolumeOctreeNode.h.
Gets the center of the corners 0, 1, 4, 5.
Definition at line 293 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 1.
Definition at line 356 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 4.
Definition at line 419 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 5.
Definition at line 437 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 5.
Definition at line 347 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 1, 2, 3.
Definition at line 338 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 3, 6, 7.
Definition at line 302 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 3.
Definition at line 374 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 3, 7.
Definition at line 428 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 6.
Definition at line 446 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 6, 7.
Definition at line 365 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 3, 4, 6.
Definition at line 311 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 3.
Definition at line 392 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 7.
Definition at line 383 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 2, 5, 6.
Definition at line 320 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 2.
Definition at line 410 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 5, 6.
Definition at line 401 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 5, 6, 7.
Definition at line 329 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
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 |
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.
Gets the coordinate of corner 1.
Definition at line 455 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 2.
Definition at line 464 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 3.
Definition at line 473 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 4.
Definition at line 482 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 5.
Definition at line 491 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 7.
Definition at line 500 of file OgreVolumeOctreeNode.h.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the back lower left corner of the cell.
Definition at line 209 of file OgreVolumeOctreeNode.h.
Referenced by Ogre::Volume::DualGridGenerator::addDualCell().
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. |
Gets the front upper right corner of the cell.
Definition at line 218 of file OgreVolumeOctreeNode.h.
Referenced by Ogre::Volume::DualGridGenerator::addDualCell().
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.
Gets whether the isosurface is somewhat near to this node.
Definition at line 527 of file OgreVolumeOctreeNode.h.
References Ogre::Vector4::w.
Gets whether this cell has any children.
Definition at line 176 of file OgreVolumeOctreeNode.h.
Definition at line 96 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 108 of file OgreMemoryAllocatedObject.h.
Definition at line 102 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 113 of file OgreMemoryAllocatedObject.h.
|
inherited |
Definition at line 119 of file OgreMemoryAllocatedObject.h.
Definition at line 73 of file OgreMemoryAllocatedObject.h.
|
inherited |
operator new, with debug line info
Definition at line 68 of file OgreMemoryAllocatedObject.h.
placement operator new
Definition at line 79 of file OgreMemoryAllocatedObject.h.
Definition at line 91 of file OgreMemoryAllocatedObject.h.
|
inherited |
array operator new, with debug line info
Definition at line 86 of file OgreMemoryAllocatedObject.h.
Raw setter for the center value.
value | The density value. |
Definition at line 509 of file OgreVolumeOctreeNode.h.
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.
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. |
|
protected |
Density and gradient of the center.
Definition at line 71 of file OgreVolumeOctreeNode.h.
|
protected |
The children of this node.
Definition at line 65 of file OgreVolumeOctreeNode.h.
|
protected |
The back lower left corner of the cell.
Definition at line 59 of file OgreVolumeOctreeNode.h.
Referenced by isBorderBack(), isBorderBottom(), and isBorderLeft().
|
staticprotected |
To count some indices while creating the debug view and recursing through the instances.
Definition at line 53 of file OgreVolumeOctreeNode.h.
|
staticprotected |
To give the debug manual object an unique name.
Definition at line 56 of file OgreVolumeOctreeNode.h.
|
protected |
Holds the debug visualization of the octree. Just set in the root.
Definition at line 68 of file OgreVolumeOctreeNode.h.
|
protected |
The front upper right corner of the cell.
Definition at line 62 of file OgreVolumeOctreeNode.h.
Referenced by isBorderFront(), isBorderRight(), and isBorderTop().
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.
Even in an OCtree, the amount of children should not be hardcoded.
Definition at line 82 of file OgreVolumeOctreeNode.h.