H3D API
2.4.1
|
The MatrixTransform node is a grouping node that defines a coordinate system for its children that is relative to the coordinate systems of its ancestors. More...
#include <H3D/MatrixTransform.h>
Classes | |
class | SFTransformedBound |
SFTransformedBound maintains the routes from the owner Node's bound and matrix field to the contained TransformedBoxBound instance's boxBound and matrix field. More... | |
Public Member Functions | |
MatrixTransform (Inst< AddChildren > _addChildren=0, Inst< RemoveChildren > _removeChildren=0, Inst< MFChild > _children=0, Inst< SFNode > _metadata=0, Inst< SFBound > _bound=0, Inst< SFVec3f > _bboxCenter=0, Inst< SFVec3f > _bboxSize=0, Inst< SFTransformedBound > _transformedBound=0, Inst< SFMatrix4f > _matrix=0, Inst< SFMatrix4f > _accumulatedForward=0, Inst< SFMatrix4f > _accumulatedInverse=0) | |
Constructor. | |
virtual void | render () |
Render the children. | |
virtual void | traverseSG (TraverseInfo &ti) |
Traverse the scenegraph. | |
void | multiplyGLMatrix () |
Multiply the currently active OpenGL matrix with the matrix of this node. | |
virtual bool | lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result) |
Detect intersection between a line segment and this Node. More... | |
virtual void | closestPoint (const Vec3f &p, NodeIntersectResult &result) |
Find closest point on Node to p. More... | |
virtual bool | movingSphereIntersect (H3DFloat radius, const Vec3f &from, const Vec3f &to, NodeIntersectResult &result) |
Detect collision between a moving sphere and the Node. More... | |
![]() | |
X3DGroupingNode (Inst< AddChildren > _addChildren=0, Inst< RemoveChildren > _removeChildren=0, Inst< MFChild > _children=0, Inst< SFNode > _metadata=0, Inst< SFBound > _bound=0, Inst< SFVec3f > _bboxCenter=0, Inst< SFVec3f > _bboxSize=0) | |
Constructor. | |
virtual | ~X3DGroupingNode () |
Destructor. | |
virtual void | initialize () |
Sets up the bound field using the bboxCenter and bboxSize fields. More... | |
![]() | |
X3DChildNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
![]() | |
X3DNode (Inst< SFNode > _metadata=0) | |
Constructor. | |
X3DMetadataObject * | getMetadataByName (const string &_name) |
Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More... | |
![]() | |
Node () | |
Constructor. | |
virtual Node * | clone (bool deepCopy=true, DeepCopyMap *deepCopyMap=NULL) |
Returns a new instance of this node type with the same state as this one. More... | |
virtual | ~Node () |
Destructor. | |
X3DPrototypeInstance * | getProtoInstanceParent () |
If this node is the root node in the proto body of a X3DPrototypeInstance then this will return that node. More... | |
void | setProtoInstanceParent (X3DPrototypeInstance *p) |
Set the X3DPrototypeInstance this node is the the root node if applicaple. | |
virtual string | defaultXMLContainerField () |
Returns the default xml containerField attribute value. More... | |
virtual Field * | getField (const string &_name) const |
return a pointer to the field specified by name within this instance | |
int | addDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
int | removeDestructCallback (void(*func)(Node *, void *), void *args) |
Add a callback function to be run on destruction of node. More... | |
![]() | |
H3DBoundedObject (Inst< SFBound > _bound=0) | |
Constructor. | |
![]() | |
H3DDisplayListObject (Inst< DisplayList > _displayList=0) | |
Constructor. | |
Public Attributes | |
H3DUniquePtr< SFMatrix4f > | matrix |
The transformation matrix. More... | |
H3DUniquePtr< SFMatrix4f > | accumulatedForward |
The accumulated forward transform matrix, i.e. More... | |
H3DUniquePtr< SFMatrix4f > | accumulatedInverse |
The accumulated inverse transform matrix, i.e. More... | |
H3DUniquePtr< SFTransformedBound > | transformedBound |
This is the same as the bound field, but with the transformation applied to the bound. More... | |
![]() | |
bool | use_union_bound |
if true a route will be set up between the bound field of the nodes in children and the bound field of the grouping node. More... | |
H3DUniquePtr< AddChildren > | addChildren |
The addChildren event appends nodes to the children field of a grouping node. More... | |
H3DUniquePtr< RemoveChildren > | removeChildren |
The removeChildren event removes nodes from the children field of the grouping node . More... | |
H3DUniquePtr< MFChild > | children |
The nodes that are grouped together by this node. More... | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
![]() | |
H3DUniquePtr< SFVec3f > | bboxCenter |
Specifies a the center of an axis-aligned bounding box enclosing the node. More... | |
H3DUniquePtr< SFVec3f > | bboxSize |
Specifies a the size of an axis-aligned bounding box enclosing the node. More... | |
![]() | |
H3DUniquePtr< SFBound > | bound |
The field containing the bound object. More... | |
![]() | |
H3DUniquePtr< DisplayList > | displayList |
The DisplayList instance handling the OpenGL caching of this object. | |
Static Public Attributes | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
![]() | |
static H3DNodeDatabase | database |
The H3DNodeDatabase for this node. | |
Additional Inherited Members | |
![]() | |
typedef std::map< Node *, Node * > | DeepCopyMap |
A map type used during a deep copy clone() to map from original nodes to cloned nodes. | |
![]() | |
static unsigned int | nrNodesAlive () |
Returns the nr of nodes currently alive, i.e. nodes created but not destructed. | |
static int | nrNodesCreated () |
Returns the number of nodes created in total since the start of the program. | |
![]() | |
void | cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for the clone() method. More... | |
![]() | |
static Node * | getClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap) |
A helper function for nodes that implement clone() More... | |
![]() | |
bool | children_multi_pass_transparency |
Will be set in traverseSG to indicate if any of the children enables multi-pass transparency. More... | |
vector< H3DRenderStateObject * > | render_states |
A vector of all the H3DRenderStatesObject within this X3DGroupingNode. | |
vector< ClipPlane * > | clip_planes |
A vector of only ClipPlane children of this X3DGroupingNode. | |
The MatrixTransform node is a grouping node that defines a coordinate system for its children that is relative to the coordinate systems of its ancestors.
The matrix field is a 4x4 matrix defining the transform matrix from the children's coordinate system to its ancestors coordinate system.
The bboxCenter and bboxSize fields specify a bounding box that encloses the children of the Transform node. This is a hint that may be used for optimization purposes. The results are undefined if the specified bounding box is smaller than the actual bounding box of the children at any time. A default bboxSize value, (-1, -1, -1), implies that the bounding box is not specified and, if needed, shall be calculated by the browser. The bounding box shall be large enough at all times to enclose the union of the group's children's bounding boxes; it shall not include any transformations performed by the group itself (i.e., the bounding box is defined in the local coordinate system of the children). The results are undefined if the specified bounding box is smaller than the true bounding box of the group.
Examples:
|
virtual |
Find closest point on Node to p.
Transforms point p and calls closestPoint for all children.
p | The point to find the closest point to. |
result | A struct containing various results of closest points such as which geometries the closest points where detected on. |
Reimplemented from H3D::X3DGroupingNode.
Reimplemented in H3D::LOD.
References H3D::X3DGroupingNode::closestPoint(), matrix, H3D::Node::NodeIntersectResult::popTransform(), and H3D::Node::NodeIntersectResult::pushTransform().
|
virtual |
Detect intersection between a line segment and this Node.
Transforms the line into correct coordinate system and also transforms the result if there is a result. Calls lineIntersect for its children.
from | The start of the line segment. |
to | The end of the line segment. |
result | Contains info about the closest intersection for every object that intersects the line. |
Reimplemented from H3D::X3DGroupingNode.
Reimplemented in H3D::LOD.
References H3D::X3DGroupingNode::lineIntersect(), matrix, H3D::Node::NodeIntersectResult::popTransform(), and H3D::Node::NodeIntersectResult::pushTransform().
|
virtual |
Detect collision between a moving sphere and the Node.
Transforms points and radius (if non-uniform scaling the biggest of the scale parameters is chosen)
radius | The radius of the sphere |
from | The start position of the sphere |
to | The end position of the sphere. |
result | A struct containing various results of intersections such as which geometries intersected the moving sphere. |
Reimplemented from H3D::X3DGroupingNode.
Reimplemented in H3D::LOD.
References matrix, H3D::X3DGroupingNode::movingSphereIntersect(), H3D::Node::NodeIntersectResult::popTransform(), and H3D::Node::NodeIntersectResult::pushTransform().
H3DUniquePtr< SFMatrix4f > H3D::MatrixTransform::accumulatedForward |
The accumulated forward transform matrix, i.e.
the transformation matrix from the local space at the current traversal position to global space. Note that this field will not stay constant for a constant scene graph if the DEF/USE feature is used for instances of this node.
Access type: outputOnly
Default value: Unit matrix
Referenced by H3D::HAnimJoint::traverseSG(), and traverseSG().
H3DUniquePtr< SFMatrix4f > H3D::MatrixTransform::accumulatedInverse |
The accumulated inverse transform matrix, i.e.
the transformation matrix from global space to the local space at the current traversal position. Note that this field will not stay constant for a constant scene graph if the DEF/USE feature is used for instances of this node.
Access type: outputOnly
Default value: Unit matrix
Referenced by H3D::HAnimJoint::traverseSG(), and traverseSG().
H3DUniquePtr< SFMatrix4f > H3D::MatrixTransform::matrix |
The transformation matrix.
Access type: inputOutput
Default value: Unit matrix
Referenced by H3D::Billboard::Billboard(), closestPoint(), H3D::DynamicTransform::DynamicTransform(), H3D::FitToBoxTransform::FitToBoxTransform(), lineIntersect(), MatrixTransform(), movingSphereIntersect(), multiplyGLMatrix(), H3D::MatrixTransform::SFTransformedBound::onAdd(), H3D::MatrixTransform::SFTransformedBound::onRemove(), render(), H3D::HAnimJoint::renderSkeleton(), H3D::Transform::Transform(), H3D::HAnimJoint::traverseSG(), traverseSG(), and H3D::X3DShapeNode::traverseSG().
H3DUniquePtr< SFTransformedBound > H3D::MatrixTransform::transformedBound |
This is the same as the bound field, but with the transformation applied to the bound.
Access type: outputOnly
Referenced by H3D::H3DWindowNode::calculateFarAndNearPlane(), H3D::H3DDisplayListObject::DisplayList::isOutsideViewFrustum(), MatrixTransform(), H3D::X3DGroupingNode::MFChild::onAdd(), and H3D::X3DGroupingNode::MFChild::onRemove().