H3D API  2.4.1
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
H3D::HAnimDisplacer Class Reference

Applications may need to alter the shape of individual segments. More...

#include <H3D/HAnimDisplacer.h>

Inheritance diagram for H3D::HAnimDisplacer:
Inheritance graph

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...
 
- Public Member Functions inherited from H3D::X3DGeometricPropertyNode
 X3DGeometricPropertyNode (Inst< SFNode > _metadata=0)
 Constructor.
 
- Public Member Functions inherited from H3D::X3DNode
 X3DNode (Inst< SFNode > _metadata=0)
 Constructor.
 
X3DMetadataObjectgetMetadataByName (const string &_name)
 Given a name, the first X3DMetadataObject in the metadata field that matches that name is returned. More...
 
- Public Member Functions inherited from H3D::Node
 Node ()
 Constructor.
 
virtual Nodeclone (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.
 
X3DPrototypeInstancegetProtoInstanceParent ()
 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 FieldgetField (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< MFInt32coordIndex
 The coordIndex field contains the indices into the coordinate array for the mesh of the vertices that are affected by the Displacer. More...
 
H3DUniquePtr< MFVec3fdisplacements
 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< SFStringname
 The name field contains a name that is used for identifying the object. More...
 
H3DUniquePtr< SFFloatweight
 The displacements shall be uniformly scaled by the value of the weight field. More...
 
- Public Attributes inherited from H3D::X3DGeometricPropertyNode
H3DUniquePtr< FieldpropertyChanged
 Field that indicated whether the properties have changed. More...
 
- Public Attributes inherited from H3D::X3DNode
H3DUniquePtr< SFNodemetadata
 Meta data about the node. More...
 

Static Public Attributes

static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 
- Static Public Attributes inherited from H3D::X3DNode
static H3DNodeDatabase database
 The H3DNodeDatabase for this node.
 

Additional Inherited Members

- Public Types inherited from H3D::Node
typedef std::map< Node *, Node * > DeepCopyMap
 A map type used during a deep copy clone() to map from original nodes to cloned nodes.
 
- Static Public Member Functions inherited from H3D::Node
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.
 
- Protected Member Functions inherited from H3D::Node
void cloneFieldValue (Field &_from, Field &_to, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for the clone() method. More...
 
- Static Protected Member Functions inherited from H3D::Node
static NodegetClonedInstance (Node *original, bool deepCopy, DeepCopyMap &deepCopyMap)
 A helper function for nodes that implement clone() More...
 

Detailed Description

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:

Internal routes:

Member Function Documentation

◆ displaceCoordinates()

template<class VectorType >
void H3D::HAnimDisplacer::displaceCoordinates ( VectorType &  points,
const Matrix4f &  displace_transform 
)
inline

Displaces the coordinates in points according to the HAnimDisplacer fields.

Parameters
pointsThe points to displace.
displace_transformTransformation matrix to apply to the displacements before adding them to points.

Referenced by H3D::HAnimHumanoid::updateCoordinates(), and H3D::HAnimSegment::updateCoordinates().

Member Data Documentation

◆ coordIndex

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

◆ displacements

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

◆ name

H3DUniquePtr< SFString > H3D::HAnimDisplacer::name

The name field contains a name that is used for identifying the object.

Access type: inputOutput
Default value: ""

◆ weight

H3DUniquePtr< SFFloat > H3D::HAnimDisplacer::weight

The displacements shall be uniformly scaled by the value of the weight field.

Access type: inputOutput


The documentation for this class was generated from the following files: