Open Inventor Reference
|
Element that stores the current model matrix - the cumulative transformation applied to subsequent shapes. More...
#include <Inventor/elements/SoModelMatrixElement.h>
Public Member Functions | |
virtual void | init (SoState *state) |
Initializes element. | |
virtual SbBool | matches (const SoElement *elt) const |
Override standard matches to invalidate on cull-test. | |
virtual void | push (SoState *state) |
Overrides push() method to copy values from next instance in the stack. | |
virtual void | print (FILE *fp) const |
Prints element (for debugging) | |
Static Public Member Functions | |
static void | makeIdentity (SoState *state, SoNode *node) |
Sets the model matrix to the identity matrix. | |
static void | set (SoState *state, SoNode *node, const SbMatrix &matrix) |
Sets the model matrix to the given matrix. | |
static void | mult (SoState *state, SoNode *node, const SbMatrix &matrix) |
Multiplies the given matrix into the model matrix. | |
static void | translateBy (SoState *state, SoNode *node, const SbVec3f &translation) |
Each of these multiplies a matrix that performs the specified transformation into the model matrix. | |
static void | rotateBy (SoState *state, SoNode *node, const SbRotation &rotation) |
static void | scaleBy (SoState *state, SoNode *node, const SbVec3f &scaleFactor) |
static SbMatrix | pushMatrix (SoState *state) |
These methods are used by the TransformSeparator node. | |
static void | popMatrix (SoState *state, const SbMatrix &m) |
static void | setCullMatrix (SoState *state, SoNode *node, const SbMatrix &matrix) |
Sets the transformation that defines the volume that view-volume culling should be tested against. | |
static const SbMatrix & | getCombinedCullMatrix (SoState *state) |
This method gets the model*cullMatrix combined matrix (which is cached by this element). | |
static const SbMatrix & | get (SoState *state) |
Returns current model matrix from the state. | |
static const SbMatrix & | get (SoState *state, SbBool &isIdent) |
Returns current model matrix from the state, sets given flag to TRUE if matrix is known to be identity. | |
static void | initClass () |
Initializes the SoModelMatrixElement class. | |
Protected Member Functions | |
virtual void | makeEltIdentity () |
Sets the matrix in an instance to identity. | |
virtual void | setElt (const SbMatrix &matrix) |
Sets the matrix in an instance to given matrix. | |
virtual void | multElt (const SbMatrix &matrix) |
Multiplies into the matrix in an instance. | |
virtual void | translateEltBy (const SbVec3f &translation) |
Each of these performs the appropriate operation on the matrix in an instance. | |
virtual void | rotateEltBy (const SbRotation &translation) |
virtual void | scaleEltBy (const SbVec3f &scaleFactor) |
virtual SbMatrix | pushMatrixElt () |
virtual methods for push/pop so GL element can Do The Right Thing: | |
virtual void | popMatrixElt (const SbMatrix &m) |
virtual | ~SoModelMatrixElement () |
Friends | |
class | SoLocalBBoxMatrixElement |
Because the matrix is cumulative, this class is derived from SoAccumulatedElement. The set() method replaces the current matrix, while all the others (mult(), translateBy(), etc.) multiply into it. Node id's of the nodes that affect the element are accumulated properly.
This element also stores the current view-volume culling transformation, which is normally the view*projection matrices (set by cameras), but which may be modified by sophisticated culling schemes.
Definition at line 80 of file SoModelMatrixElement.h.
virtual SoModelMatrixElement::~SoModelMatrixElement | ( | ) | [protected, virtual] |
virtual void SoModelMatrixElement::init | ( | SoState * | state | ) | [virtual] |
Reimplemented from SoElement.
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
static void SoModelMatrixElement::initClass | ( | ) | [static] |
Reimplemented from SoAccumulatedElement.
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
virtual void SoModelMatrixElement::makeEltIdentity | ( | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
Reimplemented from SoAccumulatedElement.
static void SoModelMatrixElement::mult | ( | SoState * | state, |
SoNode * | node, | ||
const SbMatrix & | matrix | ||
) | [static] |
virtual void SoModelMatrixElement::multElt | ( | const SbMatrix & | matrix | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
virtual void SoModelMatrixElement::popMatrixElt | ( | const SbMatrix & | m | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
virtual void SoModelMatrixElement::print | ( | FILE * | fp | ) | const [virtual] |
Reimplemented from SoAccumulatedElement.
virtual void SoModelMatrixElement::push | ( | SoState * | state | ) | [virtual] |
Reimplemented from SoElement.
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
WARNING! For proper caching behavior, the matrix returned by ::pushMatrix() must be used ONLY as a later argument to ::popMatrix(), and you must NOT modify the matrix between the push and the pop. If you need the matrix for any other reason, you MUST use the ::get() routine.
virtual SbMatrix SoModelMatrixElement::pushMatrixElt | ( | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
static void SoModelMatrixElement::rotateBy | ( | SoState * | state, |
SoNode * | node, | ||
const SbRotation & | rotation | ||
) | [static] |
virtual void SoModelMatrixElement::rotateEltBy | ( | const SbRotation & | translation | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
static void SoModelMatrixElement::scaleBy | ( | SoState * | state, |
SoNode * | node, | ||
const SbVec3f & | scaleFactor | ||
) | [static] |
virtual void SoModelMatrixElement::scaleEltBy | ( | const SbVec3f & | scaleFactor | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
static void SoModelMatrixElement::set | ( | SoState * | state, |
SoNode * | node, | ||
const SbMatrix & | matrix | ||
) | [static] |
static void SoModelMatrixElement::setCullMatrix | ( | SoState * | state, |
SoNode * | node, | ||
const SbMatrix & | matrix | ||
) | [static] |
virtual void SoModelMatrixElement::setElt | ( | const SbMatrix & | matrix | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
static void SoModelMatrixElement::translateBy | ( | SoState * | state, |
SoNode * | node, | ||
const SbVec3f & | translation | ||
) | [static] |
virtual void SoModelMatrixElement::translateEltBy | ( | const SbVec3f & | translation | ) | [protected, virtual] |
Reimplemented in SoBBoxModelMatrixElement, and SoGLModelMatrixElement.
friend class SoLocalBBoxMatrixElement [friend] |
Definition at line 179 of file SoModelMatrixElement.h.
unsigned int SoModelMatrixElement::haveCullMatrix |
Definition at line 175 of file SoModelMatrixElement.h.
unsigned int SoModelMatrixElement::haveModelCull |
Definition at line 176 of file SoModelMatrixElement.h.
unsigned int SoModelMatrixElement::isModelIdentity |
Definition at line 174 of file SoModelMatrixElement.h.