Public Member Functions | Public Attributes

FBCharacter Class Reference

This reference page is linked to from the following overview topics: MotionBuilder 2014, FBComponent - The Base Entity Class, FBCharacter - Characters, FBPose - Poses, Character animation, Motion Capture Devices.


Search for all occurrences

Detailed Description

A character is the link between a motion source and a character model.

These classes are under development and may change dramatically between versions. This class exposes part of the functionality associated with a Character. A character can possess a number of potential sources at the same time, such as an actor and another character, but with only one active at any given time. Before setting the InputType to the desired value, one must make sure to have previously set either the InputCharacter or the InputActor.

To obtain the list of characters present in a scene, you need to create an instance of class FBSystem, to obtain the current scene. The FBScene object holds the list of characters in the property Characters.

       FBSystem lSystem;
       FBScene* lScene = lSystem.Scene;
       for( int lIdx = 0; lIdx < lScene->Characters.GetCount(); ++lIdx )
       {
           FBTrace( "Character[%d]: '%s'\n", lIdx, (char*)lScene->Characters[lIdx] );
       }

The current character selected in the Character tool can be obtained via the FBApplication object.

       FBApplication lApplication;
       FBCharacter* lCharacter = lApplication.CurrentCharacter;
       if( lCharacter )
       {
           FBTrace( "Current character is: '%s'\n", (char*)lCharacter->Name );
       }
       else
       {
           FBTrace( "No character currently selected\n" );
       }

Definition at line 1108 of file fbcharacter.h.

#include <fbcharacter.h>

Inheritance diagram for FBCharacter:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 FBCharacter (const char *pName, HIObject pObject=NULL)
 Constructor.
 IObject_Declare (K_IMPLEMENTATION)
virtual void FBDelete ()
 Actual Character destructor.
FBCharacterClone ()
 Clone the character.
void AddCharacterExtension (FBCharacterExtension *pExt)
 AddCharacterExtension.
void RemoveCharacterExtension (FBCharacterExtension *pExt)
 Get the model associated with each body part of the character.
FBModelGetModel (FBBodyNodeId pBodyNodeId)
 Get the model associated with each body part of the character.
void GetSkinModelList (FBModelList &pSkinModelList)
 Get the skin model associated with character bones.
FBBodyNodeId GetIndexByModel (FBModel *pModel)
 Get the index associated with Given Model.
FBModelGetCtrlRigModel (FBBodyNodeId pBodyNodeId)
 Get the model associated with each body part in the Control Rig of the character.
FBBodyNodeId GetCtrlRigIndexByModel (FBModel *pModel)
 Get the index of the model associated with each body part in the Control Rig of the character.
FBModelGetEffectorModel (FBEffectorId pEffectorId, FBEffectorSetID pEffectorSetID=FBEffectorSetDefault)
 Get the model associated with each effector in the Control Rig of the character.
FBModelGetFloorContactModel (FBFloorContactID pMemberIndex)
 Get the model associated with the floor contact ID.
FBModelGetGoalModel (FBBodyNodeId pBodyNodeId)
 Get the goal model associated with each body part in the Character Marker Set of the character.
void GetTOffset (FBBodyNodeId pBodyNodeId, FBTVector *pTVector)
void GetROffset (FBBodyNodeId pBodyNodeId, FBRVector *pRVector)
void GetSOffset (FBBodyNodeId pBodyNodeId, FBSVector *pSVector)
void GetTransformOffset (FBBodyNodeId pBodyNodeId, FBMatrix *pOffsetMatrix)
void GetParentROffset (FBBodyNodeId pBodyNodeId, FBRVector *pRVector)
virtual bool PlotAnimation (FBCharacterPlotWhere pPlotWhere, FBPlotOptions *pPlotOptions)
 Plot the animation of the character.
bool ReadyForRetarget ()
 Test if character is ready for the Retarget operation (basically, is it in character input ?).
void Retarget (bool pOnBaseLayer)
 Retarget the animation from the input character to us.
void CopyAnimation ()
 Copy the animation from the input character to us.
virtual void ResetProperties (FBCharacterResetProperties pType)
 Reset the properties of the character.
void SelectModels (bool pSelect, bool pApplyToCharacter, bool pApplyToRig, bool pApplyToExtensions)
 Select the objects that make a character.
void GoToStancePose (bool pPushUndo=false, bool pIncludeCharacterExtensions=true)
 Set the character in stance pose.
bool SetCharacterizeOn (bool pSetAsBiped)
 Set the Characterize flag on.
const char * GetCharacterizeError ()
 Get error message for the previous SetCharacterizeOn operation.
void SetCharacterizeOff ()
 Set Characterize flag off.
bool GetCharacterize ()
 Get Characterize flag.
bool CreateControlRig (bool pSetFKIK)
 Create the Control-Rig.
void ConnectControlRig (FBControlSet *pControlSet, bool pUpdateLimit, bool pResetHierarchy)
 Connect a Control-Rig to the character.
void DisconnectControlRig ()
 Disconnect the Control-Rig from the character.
bool CreateAuxiliary (FBEffectorId pEffectorId, bool pPivot, double pAuxReachT=100, double pAuxReachR=100)
 Create auxiliary on effector.
FBControlSetGetCurrentControlSet (bool pForce=false)
 Obtain Input ControlSet.
bool CreateCharacterMarkerSet (bool pSetActive)
 Create the Character Marker Set.
FBCharacterMarkerSetGetCharacterMarkerSet (bool pForce=false)
 Obtain Input CharacterMarkerSet.
bool IsParentNodeOffset (FBBodyNodeId pNodeId)
 Check if there is an offset on Parent.
FBCharacterSolverGetExternalSolver ()
 Get a pointer to the external solver of a character, or NULL is no external solver is used on the character.
void SetExternalSolver (int pIndex)
 Set character external solver.
void SetExternalSolver (FBCharacterSolver *pSolver)
 Set character solver.
void GetActiveBodyPart (bool *pActivePart)
 Get the active body part array.
bool IsRotationPin (FBEffectorId pEffectorIndex)
 Return true if the object is Pinned in Rotation (Manipulation).
bool IsTranslationPin (FBEffectorId pEffectorIndex)
 Return true if the object is Pinned in Translation (Manipulation).
bool IsCtrlSetReady ()
 Return true Ctrl Set is Ready to be used.
bool IsPlottingActorToCtrlRig ()
 Return true if the Actor is currently being plot to the Control Rig.
FBControlSetStateGetControlSetEvaluationCache (FBEvaluateInfo *pEvaluateInfo)
 Return pointer to evaluation cache that is dedicated for control set and given pEvaluateInfo.
FBEffectorSetStateGetEffectorEvaluationCache (FBEvaluateInfo *pEvaluateInfo)
 Return pointer to evaluation cache that is dedicated for effector set and given pEvaluateInfo.

Public Attributes

FBPropertyCharacterInputType InputType
 Read Write Property: The input type for the character (ex: Actor).
FBPropertyCharacterKeyingMode KeyingMode
 Read Write Property: The current keying mode.
FBPropertyActor InputActor
 Read Write Property: The index of the actor used for the input.
FBPropertyCharacter InputCharacter
 Read Write Property: The index of the character used for the input.
FBPropertyBool ActiveInput
 Read Write Property: Is the character input active?
FBPropertyListCharacterExtension CharacterExtensions
 List: Character Extensions in the character.
FBString mCharacterizeError
 Used to store SetCharacterizeOn errors and warnings.
FBPropertyBool MirrorMode
 Read Write Property: is in mirror mode.
FBPropertyAnimatableDouble ShoulderCorrection
 Read Write Property: shoulder correction values.
FBPropertyBool LeftKneeKillPitch
 Read Write Property: is Pitch used for Left knee.
FBPropertyBool RightKneeKillPitch
 Read Write Property: is Pitch used for Right knee.
FBPropertyBool LeftElbowKillPitch
 Read Write Property: is Pitch used for Left elbow.
FBPropertyBool RightElbowKillPitch
 Read Write Property: is Pitch used for Right elbow.
FBPropertyCharacterHipsTranslationMode HipsTranslationMode
 Read Write Property: Hips Translation Mode.
FBPropertyBool WriteReference
 Read Write Property: are we writing back on reference.
FBPropertyBool SyncMode
 Read Write Property: is character in sync mode.
FBPropertyBool InverseLeftKnee
 Read Write Property: Is left knee inverted.
FBPropertyBool InverseRightKnee
 Read Write Property: Is right knee inverted.
FBPropertyBool InverseLeftElbow
 Read Write Property: Is left elbow inverted.
FBPropertyBool InverseRightElbow
 Read Write Property: Is right elbow inverted.
FBPropertyCharacterRollSolver RollSolver
 Read Write Property: Roll Solver selection.
FBPropertyCharacterContactBehaviour ContactBehaviour
 Read Write Property: Contact Behavior selection.
FBPropertyAnimatableDouble ScaleCompensation
FBPropertyAnimatableDouble HipsHeightCompensation
FBPropertyAnimatableDouble AnkleHeightCompensation
FBPropertyAnimatableDouble AnkleProximityCompensation
FBPropertyBool LockX
 Read Write Property: Lock character skeleton in place on X axis.
FBPropertyBool LockY
 Read Write Property: Lock character skeleton in place on Y axis.
FBPropertyBool LockZ
 Read Write Property: Lock character skeleton in place on Z axis.

Constructor & Destructor Documentation

FBCharacter ( const char *  pName,
HIObject  pObject = NULL 
)

Constructor.

Parameters:
pNameName of new character.
pObjectFor internal use only. This parameter does not need to be specified by the developer.

Member Function Documentation

IObject_Declare ( K_IMPLEMENTATION  )
virtual void FBDelete ( ) [virtual]

Actual Character destructor.

This method is used to delete the actual character object represented by an instance of FBCharacter.

Reimplemented from FBComponent.

FBCharacter* Clone ( ) [virtual]

Clone the character.

Reimplemented from FBConstraint.

void AddCharacterExtension ( FBCharacterExtension pExt)

AddCharacterExtension.

Parameters:
pExtextension to be added to the character.
void RemoveCharacterExtension ( FBCharacterExtension pExt)

Get the model associated with each body part of the character.

Parameters:
pExtextension to be removed to the character.
FBModel* GetModel ( FBBodyNodeId  pBodyNodeId)

Get the model associated with each body part of the character.

Returns:
The model linked to the specified body part.
void GetSkinModelList ( FBModelList pSkinModelList)

Get the skin model associated with character bones.

Could be deformable model connected to bone via cluster, or non deformable model parented directly under the bones.

Parameters:
pSkinModelListList to be filled up. (will not be cleared)
FBBodyNodeId GetIndexByModel ( FBModel pModel)

Get the index associated with Given Model.

Returns:
The model linked to the specified body part.
FBModel* GetCtrlRigModel ( FBBodyNodeId  pBodyNodeId)

Get the model associated with each body part in the Control Rig of the character.

Returns:
The model in the Control Rig corresponding to the specified body part.
FBBodyNodeId GetCtrlRigIndexByModel ( FBModel pModel)

Get the index of the model associated with each body part in the Control Rig of the character.

Returns:
The Index if the model in the Control Rig corresponding to the specified body part.
FBModel* GetEffectorModel ( FBEffectorId  pEffectorId,
FBEffectorSetID  pEffectorSetID = FBEffectorSetDefault 
)

Get the model associated with each effector in the Control Rig of the character.

Parameters:
pEffectorIdThe effector ID.
pEffectorSetIDId of the ControlSet to obtain, if not specified the current one is taken.
Returns:
The model in the Control Rig corresponding to the specified Effector.
FBModel* GetFloorContactModel ( FBFloorContactID  pMemberIndex)

Get the model associated with the floor contact ID.

Parameters:
pMemberIndexId of the floor contact
Returns:
The model associated with the floor contact ID
FBModel* GetGoalModel ( FBBodyNodeId  pBodyNodeId)

Get the goal model associated with each body part in the Character Marker Set of the character.

Returns:
The model in the Character Marker Set corresponding to the specified body part.
void GetTOffset ( FBBodyNodeId  pBodyNodeId,
FBTVector pTVector 
)
void GetROffset ( FBBodyNodeId  pBodyNodeId,
FBRVector pRVector 
)
void GetSOffset ( FBBodyNodeId  pBodyNodeId,
FBSVector pSVector 
)
void GetTransformOffset ( FBBodyNodeId  pBodyNodeId,
FBMatrix pOffsetMatrix 
)
void GetParentROffset ( FBBodyNodeId  pBodyNodeId,
FBRVector pRVector 
)
virtual bool PlotAnimation ( FBCharacterPlotWhere  pPlotWhere,
FBPlotOptions pPlotOptions 
) [virtual]

Plot the animation of the character.

Parameters:
pPlotWhereWhere to plot a character, control rig or Skeleton
pPlotOptionsOption parameters for plotting
Returns:
True if the operation completed successfully.
bool ReadyForRetarget ( )

Test if character is ready for the Retarget operation (basically, is it in character input ?).

Returns:
True if the character is ready.
void Retarget ( bool  pOnBaseLayer)

Retarget the animation from the input character to us.

Parameters:
pOnBaseLayerif true, keys corrections will be made on base layer; else they will be made on another layer.
void CopyAnimation ( )

Copy the animation from the input character to us.

virtual void ResetProperties ( FBCharacterResetProperties  pType) [virtual]

Reset the properties of the character.

Parameters:
pTypeSpeficy which properties will be reset.
void SelectModels ( bool  pSelect,
bool  pApplyToCharacter,
bool  pApplyToRig,
bool  pApplyToExtensions 
)

Select the objects that make a character.

Parameters:
pSelectTrue to select, false to deselect.
pApplyToCharacterTSould the character contraint be selected ?
pApplyToRigshould The rig (and its children) be selected ?
pApplyToExtensionsShould the character extensions (and their children) be selected ?
void GoToStancePose ( bool  pPushUndo = false,
bool  pIncludeCharacterExtensions = true 
)

Set the character in stance pose.

Parameters:
pPushUndoShould we push an undo transaction on the undo stack? Don't push undo in non UI thread.
pIncludeCharacterExtensionsShould the character extensions go to stance pose too?
bool SetCharacterizeOn ( bool  pSetAsBiped)

Set the Characterize flag on.

Parameters:
pSetAsBipedtrue to use biped characterization or false to use quadruped.
Returns:
current state of the flag after the operation (true if it did succeed).
const char* GetCharacterizeError ( )

Get error message for the previous SetCharacterizeOn operation.

Returns:
The string containing all errors and warnings.
void SetCharacterizeOff ( )

Set Characterize flag off.

bool GetCharacterize ( )

Get Characterize flag.

Returns:
Current state of the Characterize flag.
bool CreateControlRig ( bool  pSetFKIK)

Create the Control-Rig.

Parameters:
pSetFKIKtrue to use FK/IK or false to use IK only.
Returns:
current state of the flag after the operation (true if it did succeed).
void ConnectControlRig ( FBControlSet pControlSet,
bool  pUpdateLimit,
bool  pResetHierarchy 
)

Connect a Control-Rig to the character.

Parameters:
pControlSetThe control set to connect. NULL will disconnect the Control-Rig from the character.
pUpdateLimitWhether to update the models' limit for a character. E.g. the Pre rotation and post rotation.
pResetHierarchyWhether to reset hierarchy for a character.
void DisconnectControlRig ( )

Disconnect the Control-Rig from the character.

bool CreateAuxiliary ( FBEffectorId  pEffectorId,
bool  pPivot,
double  pAuxReachT = 100,
double  pAuxReachR = 100 
)

Create auxiliary on effector.

Parameters:
pEffectorIdThe effector ID.
pPivotCreate effector or pivot (pivot offset should be set on IKPivot property, at creation default values are set).
pAuxReachTDefault auxiliary effector reach for translation (IK Blend T since MotionBuilder 2013).
pAuxReachRDefault auxiliary effector reach for rotation (IK Blend R since MotionBuilder 2013).
Returns:
True if auxiliary was created (can fail if FBLastEffectorSetIndex limit reached).
FBControlSet* GetCurrentControlSet ( bool  pForce = false)

Obtain Input ControlSet.

Parameters:
pForceIf True, will return the current ControlSet even if the character is not in ControlSet Input.
Returns:
Return current Active ControlSet, NULL if none.
bool CreateCharacterMarkerSet ( bool  pSetActive)

Create the Character Marker Set.

Parameters:
pSetActiveTrue when new input should be set and active.
Returns:
True when marker got created and connected to character.
FBCharacterMarkerSet* GetCharacterMarkerSet ( bool  pForce = false)

Obtain Input CharacterMarkerSet.

Parameters:
pForceIf True, will return the current CharacterMarkerSet even if the character is not in CharacterMarkerSet Input.
Returns:
Return current Active CharacterMarkerSet, NULL if none.
bool IsParentNodeOffset ( FBBodyNodeId  pNodeId)

Check if there is an offset on Parent.

Parameters:
pNodeIdNode Id to Check.
Returns:
True if there is an offset on Parent.
FBCharacterSolver* GetExternalSolver ( )

Get a pointer to the external solver of a character, or NULL is no external solver is used on the character.

Returns:
The pointer of the current External Solver, NULL if it's the internal solver.
void SetExternalSolver ( int  pIndex)

Set character external solver.

Parameters:
pIndexIndex of external solver.
void SetExternalSolver ( FBCharacterSolver pSolver)

Set character solver.

Parameters:
pSolverCharacter solver that will be used by the character.
void GetActiveBodyPart ( bool *  pActivePart)

Get the active body part array.

Parameters:
pActivePartA pointer to an array of bool. On return, the index with a "true" value are active part.
bool IsRotationPin ( FBEffectorId  pEffectorIndex)

Return true if the object is Pinned in Rotation (Manipulation).

Parameters:
pEffectorIndexGiven Index to obtain Model
Returns:
True if the effector is pinned in Rotation
bool IsTranslationPin ( FBEffectorId  pEffectorIndex)

Return true if the object is Pinned in Translation (Manipulation).

Parameters:
pEffectorIndexGiven Index to obtain Model
Returns:
True if the effector is pinned in Translation
bool IsCtrlSetReady ( )

Return true Ctrl Set is Ready to be used.

Returns:
return true if character is active, characterized and is in input control rig
bool IsPlottingActorToCtrlRig ( )

Return true if the Actor is currently being plot to the Control Rig.

Returns:
return true if the Actor is currently being plot to the Control Rig.
FBControlSetState* GetControlSetEvaluationCache ( FBEvaluateInfo pEvaluateInfo)

Return pointer to evaluation cache that is dedicated for control set and given pEvaluateInfo.

Returns:
valid pointer to evaluation cache.
FBEffectorSetState* GetEffectorEvaluationCache ( FBEvaluateInfo pEvaluateInfo)

Return pointer to evaluation cache that is dedicated for effector set and given pEvaluateInfo.

Returns:
valid pointer to evaluation cache.

Member Data Documentation

FBPropertyCharacterInputType InputType

Read Write Property: The input type for the character (ex: Actor).

Definition at line 1130 of file fbcharacter.h.

FBPropertyCharacterKeyingMode KeyingMode

Read Write Property: The current keying mode.

Definition at line 1131 of file fbcharacter.h.

FBPropertyActor InputActor

Read Write Property: The index of the actor used for the input.

Definition at line 1132 of file fbcharacter.h.

FBPropertyCharacter InputCharacter

Read Write Property: The index of the character used for the input.

Definition at line 1133 of file fbcharacter.h.

Read Write Property: Is the character input active?

Definition at line 1134 of file fbcharacter.h.

List: Character Extensions in the character.

Definition at line 1136 of file fbcharacter.h.

Used to store SetCharacterizeOn errors and warnings.

Definition at line 1379 of file fbcharacter.h.

Read Write Property: is in mirror mode.

Definition at line 1383 of file fbcharacter.h.

Read Write Property: shoulder correction values.

Definition at line 1384 of file fbcharacter.h.

Read Write Property: is Pitch used for Left knee.

Definition at line 1385 of file fbcharacter.h.

Read Write Property: is Pitch used for Right knee.

Definition at line 1386 of file fbcharacter.h.

Read Write Property: is Pitch used for Left elbow.

Definition at line 1387 of file fbcharacter.h.

Read Write Property: is Pitch used for Right elbow.

Definition at line 1388 of file fbcharacter.h.

FBPropertyCharacterHipsTranslationMode HipsTranslationMode

Read Write Property: Hips Translation Mode.

Definition at line 1389 of file fbcharacter.h.

Read Write Property: are we writing back on reference.

Definition at line 1390 of file fbcharacter.h.

Read Write Property: is character in sync mode.

Definition at line 1391 of file fbcharacter.h.

Read Write Property: Is left knee inverted.

Definition at line 1392 of file fbcharacter.h.

Read Write Property: Is right knee inverted.

Definition at line 1393 of file fbcharacter.h.

Read Write Property: Is left elbow inverted.

Definition at line 1394 of file fbcharacter.h.

Read Write Property: Is right elbow inverted.

Definition at line 1395 of file fbcharacter.h.

FBPropertyCharacterRollSolver RollSolver

Read Write Property: Roll Solver selection.

Definition at line 1396 of file fbcharacter.h.

FBPropertyCharacterContactBehaviour ContactBehaviour

Read Write Property: Contact Behavior selection.

Definition at line 1397 of file fbcharacter.h.

Definition at line 1399 of file fbcharacter.h.

Definition at line 1400 of file fbcharacter.h.

Definition at line 1401 of file fbcharacter.h.

Definition at line 1402 of file fbcharacter.h.

Read Write Property: Lock character skeleton in place on X axis.

Definition at line 1404 of file fbcharacter.h.

Read Write Property: Lock character skeleton in place on Y axis.

Definition at line 1405 of file fbcharacter.h.

Read Write Property: Lock character skeleton in place on Z axis.

Definition at line 1406 of file fbcharacter.h.


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

FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter
FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter FBCharacter