- Main Page
- Classes
- Files
- Directories
- Examples

- Class List
- Class Hierarchy
- Class Members

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

# FbxCluster 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 (FbxGeometry). 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 (FbxNode) 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 also:
  FbxDeformer, FbxSkin). 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 (FbxSkin). 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 54 of file fbxcluster.h.

`#include <fbxcluster.h>`

Inheritance diagram for FbxCluster:
[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 FbxObject & | Copy (const FbxObject &pObject)
| Copy an object content into this object.
## Public Attributes
FbxString | mBeforeVersion6LinkName
FbxString | mBeforeVersion6AssociateModelName
## Protected Member Functions
| FbxCluster (FbxManager &pManager, const char *pName)
virtual void | Construct (const FbxCluster *pFrom)
virtual bool | ConstructProperties (bool pForceSet)
virtual FbxStringList | GetTypeFlags () const
## Protected Attributes
ELinkMode | mLinkMode
FbxString | mUserDataID
FbxString | mUserData
FbxArray< int > | mControlPointIndices
FbxArray< double > | mControlPointWeights
FbxMatrix | mTransform
FbxMatrix | mTransformLink
FbxMatrix | mTransformAssociate
FbxMatrix | mTransformParent
bool | mIsTransformParentSet
FbxPropertyT< FbxReference > | SrcModel
FbxPropertyT< FbxReference > | SrcModelReference
## Friends
class | FbxScene
## General Functions
EType | 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, eTotalOne }
| Link modes. More...
void | SetLinkMode (ELinkMode pMode)
| Set the link mode.
ELinkMode | GetLinkMode () const
| Get the link mode.
void | SetLink (const FbxNode *pNode)
| Set the link node.
FbxNode * | GetLink ()
| Get the link node.
const FbxNode * | GetLink () const
| Get the link node (as const).
void | SetAssociateModel (FbxNode *pNode)
| Set the associate model.
FbxNode * | 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 FbxGeometry 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 FbxAMatrix &pMatrix)
| Set matrix associated with the node containing the link.
FbxAMatrix & | GetTransformMatrix (FbxAMatrix &pMatrix) const
| Get matrix associated with the node containing the link.
void | SetTransformLinkMatrix (const FbxAMatrix &pMatrix)
| Set matrix associated with the link node.
FbxAMatrix & | GetTransformLinkMatrix (FbxAMatrix &pMatrix) const
| Get matrix associated with the link node.
void | SetTransformAssociateModelMatrix (const FbxAMatrix &pMatrix)
| Set matrix associated with the associate model.
FbxAMatrix & | GetTransformAssociateModelMatrix (FbxAMatrix &pMatrix) const
| Get matrix associated with the associate model.
void | SetTransformParentMatrix (const FbxAMatrix &pMatrix)
| Set matrix associated with the parent node.
FbxAMatrix & | GetTransformParentMatrix (FbxAMatrix &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 (const char *pUserDataID, const char *pUserData)
| Set user data.
const char * | GetUserDataID () const
| Get the user data identifier.
const char * | GetUserData () const
| Get the user data.
const char * | GetUserData (const char *pUserDataID) const
| Get the user data by identifier.

## Member Enumeration Documentation

enum ELinkMode

Search for all occurrences

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 FbxGeometry.

Enumerator:

  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. Search for all occurrences
  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. Search for all occurrences
  eTotalOne | Mode eTotalOne 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. Search for all occurrences

Definition at line 87 of file fbxcluster.h.

        {
            eNormalize,
            eAdditive,
            eTotalOne
        };

## Constructor & Destructor Documentation

FbxCluster | ( | FbxManager & | pManager,
|  | const char * | pName
| ) |  | `[protected]`

## Member Function Documentation

EType GetSubDeformerType | ( |  | ) | const `[inline, virtual]`

Search for all occurrences

Get the type of the sub deformer.

Returns:
  SubDeformer type identifier: eCluster.

Reimplemented from FbxSubDeformer.

Definition at line 66 of file fbxcluster.h.

    {return eCluster; };

void Reset | ( |  | ) |

Search for all occurrences

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 | ) |

Search for all occurrences

Set the link mode.

Parameters:

  pMode | The link mode.

Remarks:
  All the links associated to an instance of class FbxGeometry must have the same link mode.

Examples:
  ExportScene01/main.cxx.

ELinkMode GetLinkMode | ( |  | ) | const

Search for all occurrences

Get the link mode.

Returns:
  The link mode.

Examples:
  ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.

void SetLink | ( | const FbxNode * | pNode | ) |

Search for all occurrences

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.

FbxNode* GetLink | ( |  | ) |

Search for all occurrences

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 FbxCluster::SetLink() has not been called before.

Examples:
  ExportScene01/main.cxx, ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.

const FbxNode* GetLink | ( |  | ) | const

Search for all occurrences

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 FbxCluster::SetLink() has not been called before.

void SetAssociateModel | ( | FbxNode * | pNode | ) |

Search for all occurrences

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.

FbxNode* GetAssociateModel | ( |  | ) | const

Search for all occurrences

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 FbxCluster::SetAssociateModel() has not been called before.

Examples:
  ImportScene/DisplayLink.cxx, and ViewScene/DrawScene.cxx.

void AddControlPointIndex | ( | int | pIndex,
|  | double | pWeight
| ) |  |

Search for all occurrences

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

Search for all occurrences

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

Search for all occurrences

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

Search for all occurrences

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 | ) |

Search for all occurrences

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 FbxAMatrix & | pMatrix | ) |

Search for all occurrences

Set matrix associated with the node containing the link.

Parameters:

  pMatrix | Transformation matrix.

Examples:
  ExportScene01/main.cxx.

FbxAMatrix& GetTransformMatrix | ( | FbxAMatrix & | pMatrix | ) | const

Search for all occurrences

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 FbxAMatrix & | pMatrix | ) |

Search for all occurrences

Set matrix associated with the link node.

Parameters:

  pMatrix | Transformation matrix.

Examples:
  ExportScene01/main.cxx.

FbxAMatrix& GetTransformLinkMatrix | ( | FbxAMatrix & | pMatrix | ) | const

Search for all occurrences

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 FbxAMatrix & | pMatrix | ) |

Search for all occurrences

Set matrix associated with the associate model.

Parameters:

  pMatrix | Transformation matrix.

FbxAMatrix& GetTransformAssociateModelMatrix | ( | FbxAMatrix & | pMatrix | ) | const

Search for all occurrences

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 FbxAMatrix & | pMatrix | ) |

Search for all occurrences

Set matrix associated with the parent node.

Parameters:

  pMatrix | Transformation matrix.

FbxAMatrix& GetTransformParentMatrix | ( | FbxAMatrix & | pMatrix | ) | const

Search for all occurrences

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]`

Search for all occurrences

Get the Transform Parent set flag value.

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

Definition at line 260 of file fbxcluster.h.

    { return mIsTransformParentSet; }

virtual FbxObject& Copy | ( | const FbxObject & | pObject | ) | `[virtual]`

Search for all occurrences

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 FbxObject.

void SetUserData | ( | const char * | pUserDataID,
|  | const char * | pUserData
| ) |  |

Search for all occurrences

Set user data.

Parameters:

  pUserDataID | Identifier of user data.
  pUserData | User data.

const char* GetUserDataID | ( |  | ) | const

Search for all occurrences

Get the user data identifier.

const char* GetUserData | ( |  | ) | const

Search for all occurrences

Get the user data.

const char* GetUserData | ( | const char * | pUserDataID | ) | const

Search for all occurrences

Get the user data by identifier.

virtual void Construct | ( | const FbxCluster * | pFrom | ) | `[protected, virtual]`

Search for all occurrences

virtual bool ConstructProperties | ( | bool | pForceSet | ) | `[protected, virtual]`

Search for all occurrences

Reimplemented from FbxObject.

virtual FbxStringList GetTypeFlags | ( |  | ) | const `[protected, virtual]`

Search for all occurrences

Reimplemented from FbxSubDeformer.

## Friends And Related Function Documentation

friend class FbxScene `[friend]`

Search for all occurrences

Reimplemented from FbxSubDeformer.

Definition at line 331 of file fbxcluster.h.

## Member Data Documentation

FbxString mBeforeVersion6LinkName

Search for all occurrences

Definition at line 302 of file fbxcluster.h.

FbxString mBeforeVersion6AssociateModelName

Search for all occurrences

Definition at line 303 of file fbxcluster.h.

ELinkMode mLinkMode `[protected]`

Search for all occurrences

Definition at line 316 of file fbxcluster.h.

FbxString mUserDataID `[protected]`

Search for all occurrences

Definition at line 317 of file fbxcluster.h.

FbxString mUserData `[protected]`

Search for all occurrences

Definition at line 318 of file fbxcluster.h.

FbxArray<int> mControlPointIndices `[protected]`

Search for all occurrences

Definition at line 319 of file fbxcluster.h.

FbxArray<double> mControlPointWeights `[protected]`

Search for all occurrences

Definition at line 320 of file fbxcluster.h.

FbxMatrix mTransform `[protected]`

Search for all occurrences

Definition at line 321 of file fbxcluster.h.

FbxMatrix mTransformLink `[protected]`

Search for all occurrences

Definition at line 322 of file fbxcluster.h.

FbxMatrix mTransformAssociate `[protected]`

Search for all occurrences

Definition at line 323 of file fbxcluster.h.

FbxMatrix mTransformParent `[protected]`

Search for all occurrences

Definition at line 324 of file fbxcluster.h.

bool mIsTransformParentSet `[protected]`

Search for all occurrences

Definition at line 325 of file fbxcluster.h.

FbxPropertyT<FbxReference> SrcModel `[protected]`

Search for all occurrences

Definition at line 328 of file fbxcluster.h.

FbxPropertyT<FbxReference> SrcModelReference `[protected]`

Search for all occurrences

Definition at line 329 of file fbxcluster.h.

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

- fbxsdk/scene/geometry/fbxcluster.h

FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster
FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster FbxCluster