Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends

KFbxCluster Class Reference

This reference page is linked to from the following overview topics: List of Python FBX classes.


Search for all occurrences

Detailed Description

Class for clusters (links).

A cluster, or link, is an entity acting on a geometry (KFbxGeometry). More precisely, the cluster acts on a subset of the geometry's control points. For each control point that the cluster acts on, the intensity of the cluster's action is modulated by a weight. The link mode (ELinkMode) specifies how the weights are taken into account.

The cluster's link node specifies the node (KFbxNode) that influences the control points of the cluster. If the node is animated, the control points will move accordingly.

A cluster is usually part of a skin (see KFbxDeformer, KFbxSkin). For example, imagine a mesh representing a humanoid, and imagine a skeleton made of bones. Each bone is represented by a node in FBX. To bind the geometry to the nodes, we create a skin (KFbxSkin). The skin has many clusters, each one corresponding to a bone. Each node influences some control points of the mesh. A node has a high influence on some of the points (high weight) and lower influence on some other points (low weight). Some points of the mesh are not affected at all by the bone, so they would not be part of the corresponding cluster.

Examples:

ExportScene01/main.cxx, ImportScene/DisplayLink.cxx, SwitchBinding/main.cxx, and ViewScene/DrawScene.cxx.

Definition at line 82 of file kfbxcluster.h.

#include <kfbxcluster.h>

Inheritance diagram for KFbxCluster:
Inheritance graph
[legend]

List of all members.

Public Member Functions

void  SetControlPointIWCount (int pCount)
  Set the array size for the three arrays: the array of control point indices, the array of weights and the array of blend weights.
virtual KFbxObject Copy (const KFbxObject &pObject)
  Copy an object content into this object.

Public Attributes

KString  mBeforeVersion6LinkName
KString  mBeforeVersion6AssociateModelName

Protected Member Functions

  KFbxCluster (KFbxSdkManager &pManager, char const *pName)
virtual void  Construct (const KFbxCluster *pFrom)
virtual bool  ConstructProperties (bool pForceSet)
virtual KStringList  GetTypeFlags () const

Protected Attributes

ELinkMode  mLinkMode
KString  mUserDataID
KString  mUserData
KArrayTemplate< int >  mControlPointIndices
KArrayTemplate< double >  mControlPointWeights
KFbxMatrix  mTransform
KFbxMatrix  mTransformLink
KFbxMatrix  mTransformAssociate
KFbxMatrix  mTransformParent
bool  mIsTransformParentSet
KFbxTypedProperty< fbxReference SrcModel
KFbxTypedProperty< fbxReference SrcModelReference

Friends

class  KFbxScene

General Functions

ESubDeformerType  GetSubDeformerType () const
  Get the type of the sub deformer.
void  Reset ()
  Restore the cluster to its initial state.

Link Mode, Link Node, Associate Model

enum   ELinkMode { eNORMALIZE, eADDITIVE, eTOTAL1 }
 

Link modes.

More...
void  SetLinkMode (ELinkMode pMode)
  Set the link mode.
ELinkMode  GetLinkMode () const
  Get the link mode.
void  SetLink (KFbxNode const *pNode)
  Set the link node.
KFbxNode GetLink ()
  Get the link node.
KFbxNode const *  GetLink () const
  Get the link node (as const).
void  SetAssociateModel (KFbxNode *pNode)
  Set the associate model.
KFbxNode GetAssociateModel () const
  Get the associate model.

Control Points

A link has an array of indices to control points and associated weights.The indices refer to the control points in the instance of class KFbxGeometry owning the link. The weights are the influence of the link node over the displacement of the indexed control points.
void  AddControlPointIndex (int pIndex, double pWeight)
  Add an element in both arrays of control point indices and weights.
int  GetControlPointIndicesCount () const
  Get the length of the arrays of control point indices and weights.
int *  GetControlPointIndices () const
  Get the array of control point indices.
double *  GetControlPointWeights () const
  Get the array of control point weights.

Transformation Matrices

A link has three transformation matrices:
  • Transform refers to the global initial transform of the geometry node that contains the link node.
  • TransformLink refers to global initial transform of the link node.
  • TransformAssociateModel refers to the global initial transform of the associate model.

For example, given a mesh binding with several bones(links), Transform is the global transform of the mesh at the binding moment, TransformLink is the global transform of the bone(link) at the binding moment, TransformAssociateModel is the global transform of the associate model at the binding moment.

void  SetTransformMatrix (const KFbxXMatrix &pMatrix)
  Set matrix associated with the node containing the link.
KFbxXMatrix GetTransformMatrix (KFbxXMatrix &pMatrix) const
  Get matrix associated with the node containing the link.
void  SetTransformLinkMatrix (const KFbxXMatrix &pMatrix)
  Set matrix associated with the link node.
KFbxXMatrix GetTransformLinkMatrix (KFbxXMatrix &pMatrix) const
  Get matrix associated with the link node.
void  SetTransformAssociateModelMatrix (const KFbxXMatrix &pMatrix)
  Set matrix associated with the associate model.
KFbxXMatrix GetTransformAssociateModelMatrix (KFbxXMatrix &pMatrix) const
  Get matrix associated with the associate model.
void  SetTransformParentMatrix (const KFbxXMatrix &pMatrix)
  Set matrix associated with the parent node.
KFbxXMatrix GetTransformParentMatrix (KFbxXMatrix &pMatrix) const
  Get matrix associated with the parent node.
bool  IsTransformParentSet () const
  Get the Transform Parent set flag value.

User Data

Service functions to store and retrieve extra data about the link.Only used by the Maya plugin, should move somewhere out of here...
void  SetUserData (KString pUserDataID, KString pUserData)
  Set user data.
KString  GetUserDataID () const
  Get the user data identifier.
KString  GetUserData () const
  Get the user data.
KString  GetUserData (KString pUserDataID) const
  Get the user data by identifier.

Member Enumeration Documentation

enum ELinkMode

Link modes.

The link mode sets how the link influences the position of a control point and the relationship between the weights assigned to a control point. The weights assigned to a control point are distributed among the set of links associated with an instance of class KFbxGeometry.

  • eNORMALIZE In mode eNORMALIZE, the sum of the weights assigned to a control point is normalized to 1.0. Setting the associate model in this mode is not relevant. The influence of the link is a function of the displacement of the link node relative to the node containing the control points.
  • eADDITIVE In mode eADDITIVE, the sum of the weights assigned to a control point is kept as is. It is the only mode where setting the associate model is relevant. The influence of the link is a function of the displacement of the link node relative to the node containing the control points or, if set, the associate model. The weight gives the proportional displacement of a control point. For example, if the weight of a link over a control point is set to 2.0, a displacement of the link node of 1 unit in the X direction relative to the node containing the control points or, if set, the associate model, triggers a displacement of the control point of 2 units in the same direction.
  • eTOTAL1 Mode eTOTAL1 is identical to mode eNORMALIZE except that the sum of the weights assigned to a control point is not normalized and must equal 1.0.
Enumerator:
eNORMALIZE 
eADDITIVE 
eTOTAL1 

Definition at line 131 of file kfbxcluster.h.


Constructor & Destructor Documentation

KFbxCluster ( KFbxSdkManager pManager,
char const *  pName 
) [protected]

Member Function Documentation

ESubDeformerType GetSubDeformerType ( ) const [inline, virtual]

Get the type of the sub deformer.

Returns:
SubDeformer type identifier: eCLUSTER.

Reimplemented from KFbxSubDeformer.

Definition at line 94 of file kfbxcluster.h.

{return eCLUSTER; };
void Reset ( )

Restore the cluster to its initial state.

Calling this function will clear the following:

  • Pointer to linked node.
  • Pointer to associate model.
  • Control point indices and weights.
  • Transformation matrices.
void SetLinkMode ( ELinkMode  pMode )

Set the link mode.

Parameters:
pMode The link mode.
Remarks:
All the links associated to an instance of class KFbxGeometry must have the same link mode.
Examples:
ExportScene01/main.cxx.
ELinkMode GetLinkMode ( ) const

Get the link mode.

Returns:
The link mode.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void SetLink ( KFbxNode const *  pNode )

Set the link node.

The link node is the node which influences the displacement of the control points. Typically, the link node is the bone a skin is attached to.

Parameters:
pNode The link node.
Examples:
ExportScene01/main.cxx.
KFbxNode* GetLink ( )

Get the link node.

The link node is the node which influences the displacement of the control points. Typically, the link node is the bone a skin is attached to.

Returns:
The link node or NULL if KFbxCluster::SetLink() has not been called before.
Examples:
ExportScene01/main.cxx, ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
KFbxNode const* GetLink ( ) const

Get the link node (as const).

The link node is the node which influences the displacement of the control points. Typically, the link node is the bone a skin is attached to.

Returns:
The link node or NULL if KFbxCluster::SetLink() has not been called before.
void SetAssociateModel ( KFbxNode pNode )

Set the associate model.

The associate model is optional. It is only relevant if the link mode is of type eADDITIVE. If set, the associate model is the node used as a reference to measure the relative displacement of the link node. Otherwise, the displacement of the link node is measured relative to the node containing the control points. Typically, the associate model node is the parent of the bone a skin is attached to.

Parameters:
pNode The associate model node.
KFbxNode* GetAssociateModel ( ) const

Get the associate model.

The associate model is optional. It is only relevant if the link mode is of type eADDITIVE. If set, the associate model is the node used as a reference to measure the relative displacement of the link node. Otherwise, the displacement of the link node is measured relative the the node containing the control points. Typically, the associate model node is the parent of the bone a skin is attached to.

Returns:
The associate model node or NULL if KFbxCluster::SetAssociateModel() has not been called before.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void AddControlPointIndex ( int  pIndex,
double  pWeight 
)

Add an element in both arrays of control point indices and weights.

Parameters:
pIndex The index of the control point.
pWeight The link weight for this control point.
Examples:
ExportScene01/main.cxx.
int GetControlPointIndicesCount ( ) const

Get the length of the arrays of control point indices and weights.

Returns:
Length of the arrays of control point indices and weights. Returns 0 if no control point indices have been added or the arrays have been reset.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
int* GetControlPointIndices ( ) const

Get the array of control point indices.

Returns:
Pointer to the array of control point indices. NULL if no control point indices have been added or the array has been reset.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
double* GetControlPointWeights ( ) const

Get the array of control point weights.

Returns:
Pointer to the array of control point weights. NULL if no control point indices have been added or the array has been reset.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void SetControlPointIWCount ( int  pCount )

Set the array size for the three arrays: the array of control point indices, the array of weights and the array of blend weights.

Parameters:
pCount The new count.
void SetTransformMatrix ( const KFbxXMatrix pMatrix )

Set matrix associated with the node containing the link.

Parameters:
pMatrix Transformation matrix.
Examples:
ExportScene01/main.cxx.
KFbxXMatrix& GetTransformMatrix ( KFbxXMatrix pMatrix ) const

Get matrix associated with the node containing the link.

Parameters:
pMatrix Transformation matrix to be filled with appropriate data.
Returns:
Input parameter matrix filled with appropriate data.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void SetTransformLinkMatrix ( const KFbxXMatrix pMatrix )

Set matrix associated with the link node.

Parameters:
pMatrix Transformation matrix.
Examples:
ExportScene01/main.cxx.
KFbxXMatrix& GetTransformLinkMatrix ( KFbxXMatrix pMatrix ) const

Get matrix associated with the link node.

Parameters:
pMatrix Transformation matrix to be filled with appropriate data..
Returns:
Input parameter matrix filled with appropriate data.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void SetTransformAssociateModelMatrix ( const KFbxXMatrix pMatrix )

Set matrix associated with the associate model.

Parameters:
pMatrix Transformation matrix.
KFbxXMatrix& GetTransformAssociateModelMatrix ( KFbxXMatrix pMatrix ) const

Get matrix associated with the associate model.

Parameters:
pMatrix Transformation matrix to be filled with appropriate data..
Returns:
Input parameter matrix filled with appropriate data.
Examples:
ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.
void SetTransformParentMatrix ( const KFbxXMatrix pMatrix )

Set matrix associated with the parent node.

Parameters:
pMatrix Transformation matrix.
KFbxXMatrix& GetTransformParentMatrix ( KFbxXMatrix pMatrix ) const

Get matrix associated with the parent node.

Parameters:
pMatrix Transformation matrix to be filled with appropriate data..
Returns:
Input parameter matrix filled with appropriate data.
bool IsTransformParentSet ( ) const [inline]

Get the Transform Parent set flag value.

Returns:
true if transform matrix associated with parent node is set.

Definition at line 294 of file kfbxcluster.h.

{ return mIsTransformParentSet; }
virtual KFbxObject& Copy ( const KFbxObject pObject ) [virtual]

Copy an object content into this object.

Parameters:
pObject The source object to copy data from.
Returns:
Returns the destination object being modified by the source.
Remarks:
This function replace the assignment operator (operator=). It will copy all property values and the name. Connections are NOT copied.

Reimplemented from KFbxObject.

virtual void Construct ( const KFbxCluster pFrom ) [protected, virtual]
virtual bool ConstructProperties ( bool  pForceSet ) [protected, virtual]
virtual KStringList GetTypeFlags ( ) const [protected, virtual]
void SetUserData ( KString  pUserDataID,
KString  pUserData 
)

Set user data.

Parameters:
pUserDataID Identifier of user data.
pUserData User data.
KString GetUserDataID ( ) const

Get the user data identifier.

KString GetUserData ( ) const

Get the user data.

KString GetUserData ( KString  pUserDataID ) const

Get the user data by identifier.


Friends And Related Function Documentation

friend class KFbxScene [friend]

Reimplemented from KFbxSubDeformer.

Definition at line 367 of file kfbxcluster.h.


Member Data Documentation

ELinkMode mLinkMode [protected]

Definition at line 346 of file kfbxcluster.h.

KString mUserDataID [protected]

Definition at line 347 of file kfbxcluster.h.

KString mUserData [protected]

Definition at line 348 of file kfbxcluster.h.

Definition at line 349 of file kfbxcluster.h.

KArrayTemplate<double> mControlPointWeights [protected]

Definition at line 350 of file kfbxcluster.h.

KFbxMatrix mTransform [protected]

Definition at line 351 of file kfbxcluster.h.

Definition at line 352 of file kfbxcluster.h.

Definition at line 353 of file kfbxcluster.h.

Definition at line 354 of file kfbxcluster.h.

bool mIsTransformParentSet [protected]

Definition at line 355 of file kfbxcluster.h.

Definition at line 359 of file kfbxcluster.h.

Definition at line 360 of file kfbxcluster.h.

Definition at line 364 of file kfbxcluster.h.

Definition at line 365 of file kfbxcluster.h.


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

KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster
KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster KFbxCluster