H3D API
2.4.1
|
Applications may need to alter the shape of individual segments. More...
#include <H3D/HAnimDisplacer.h>
Public Member Functions | |
HAnimDisplacer (Inst< SFNode > _metadata=0, Inst< MFInt32 > _coordIndex=0, Inst< MFVec3f > _displacements=0, Inst< SFString > _name=0, Inst< SFFloat > _weight=0) | |
Constructor. | |
template<class VectorType > | |
void | displaceCoordinates (VectorType &points, const Matrix4f &displace_transform) |
Displaces the coordinates in points according to the HAnimDisplacer fields. More... | |
![]() | |
X3DGeometricPropertyNode (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 void | render () |
the render() function is used for the depth-first rendering traversal of the scene-graph. More... | |
virtual void | traverseSG (TraverseInfo &ti) |
traverseSG is called once per scenegraph loop on the scene in order to traverse the scenegraph. More... | |
virtual bool | lineIntersect (const Vec3f &from, const Vec3f &to, LineIntersectResult &result) |
Detect intersection between a line segment and the 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... | |
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... | |
Public Attributes | |
H3DUniquePtr< MFInt32 > | coordIndex |
The coordIndex field contains the indices into the coordinate array for the mesh of the vertices that are affected by the Displacer. More... | |
H3DUniquePtr< MFVec3f > | displacements |
The displacements field, if present, provides a set of 3D values that are added to the neutral or resting position of each of the vertices referenced in the coordIndex field of the associated mesh. More... | |
H3DUniquePtr< SFString > | name |
The name field contains a name that is used for identifying the object. More... | |
H3DUniquePtr< SFFloat > | weight |
The displacements shall be uniformly scaled by the value of the weight field. More... | |
![]() | |
H3DUniquePtr< Field > | propertyChanged |
Field that indicated whether the properties have changed. More... | |
![]() | |
H3DUniquePtr< SFNode > | metadata |
Meta data about the node. More... | |
Static Public Attributes | |
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... | |
Applications may need to alter the shape of individual segments.
At the most basic level, this is done by writing to the point field of the node derived from X3DCoordinateNode that is found in the coord field of the HAnimSegment node.
In some cases, the application may need to be able to identify specific groups of vertices within an HAnimSegment.
EXAMPLE?The application may need to know which vertices within the skull HAnimSegment comprise the left eyebrow.
It may also require "hints" as to the direction in which each vertex should move. That information is stored in a node called an HAnimDisplacer. The HAnimDisplacers for a particular HAnimSegment are stored in the displacers field of that HAnimSegment.
Examples:
|
inline |
Displaces the coordinates in points according to the HAnimDisplacer fields.
points | The points to displace. |
displace_transform | Transformation matrix to apply to the displacements before adding them to points. |
Referenced by H3D::HAnimHumanoid::updateCoordinates(), and H3D::HAnimSegment::updateCoordinates().
H3DUniquePtr< MFInt32 > H3D::HAnimDisplacer::coordIndex |
The coordIndex field contains the indices into the coordinate array for the mesh of the vertices that are affected by the Displacer.
Access type: inputOutput
H3DUniquePtr< MFVec3f > H3D::HAnimDisplacer::displacements |
The displacements field, if present, provides a set of 3D values that are added to the neutral or resting position of each of the vertices referenced in the coordIndex field of the associated mesh.
These values correspond one-to-one with the values in the coordIndex array of the mesh. The values shall be maximum displacements, and the application shall scale them using the value of the weight field before adding them to the neutral vertex positions.
Access type: inputOutput
H3DUniquePtr< SFString > H3D::HAnimDisplacer::name |
The name field contains a name that is used for identifying the object.
Access type: inputOutput
Default value: ""
H3DUniquePtr< SFFloat > H3D::HAnimDisplacer::weight |
The displacements shall be uniformly scaled by the value of the weight field.
Access type: inputOutput