OGRE 2.1
Object-Oriented Graphics Rendering Engine
|
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. | |
A node in the volume octree.
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 |
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.
Gets the center of the corners 0, 1, 4, 5.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 1.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 4.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 5.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 5.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 1, 2, 3.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 3, 6, 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 3.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 3, 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 2, 6.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 6, 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 3, 4, 6.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 0, 3.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 2, 5, 6.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 1, 2.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 5, 6.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center of the corners 4, 5, 6, 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the center value.
|
inline |
Gets an octree child.
Enumeration: 4 5 7 6 0 1 3 2
i | The child index. |
|
inlinestatic |
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). |
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 1.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 2.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 3.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 4.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 5.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the coordinate of corner 7.
References Ogre::Vector3::x, Ogre::Vector3::y, and Ogre::Vector3::z.
Gets the back lower left corner of the cell.
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.
|
inline |
Gets whether this cell is at the back of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::z.
|
inline |
Gets whether this cell is at the bottom of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::y.
|
inline |
Gets whether this cell is at the front of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::z.
|
inline |
Gets whether this cell is at the left of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::x.
|
inline |
Gets whether this cell is at the right of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::x.
|
inline |
Gets whether this cell is at the top of the given root cell.
root | The octree root node to test against. |
References Ogre::Vector3::y.
Gets whether the isosurface is somewhat near to this node.
References Ogre::Vector4::w.
Gets whether this cell has any children.
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
operator new, with debug line info
placement operator new
|
inlineinherited |
|
inlineinherited |
array operator new, with debug line info
Raw setter for the center value.
value | The density value. |
Setter for the from-part of this cell.
from | The back lower left corner of the cell. |
Setter for the to-part of this cell.
to | The front upper right corner of the cell. |
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. |
Even in an OCtree, the amount of children should not be hardcoded.