1 #ifndef __FBCHARACTERSOLVER_H__
2 #define __FBCHARACTERSOLVER_H__
45 #include <kaydaradef.h>
50 #define FBSDK_DLL K_DLLIMPORT
55 #if !defined(K_NO_MANIPULATOR)
62 #ifdef FBSDKUseNamespace
63 namespace FBSDKNamespace {
75 #define FBRegisterCharacterSolver( UniqueNameStr, ClassName, Label, Description, IconFilename ) \
76 HIObject RegisterCharacterSolver##ClassName##Create( HIObject ,const char* pName,void * ) \
78 ClassName *Class = new ClassName(pName); \
79 Class->UniqueName = UniqueNameStr; \
80 if (Class->FBCreate()) { \
81 return Class->GetHIObject(); \
88 FBLibraryModule( ClassName ) \
90 FBRegisterObject( ClassName##R1,"FbxStorable/CharacterSolver",UniqueNameStr,Description,RegisterCharacterSolver##ClassName##Create, true, IconFilename ); \
91 FBRegisterObject( ClassName##R2,"Character/Solvers",UniqueNameStr,Description,RegisterCharacterSolver##ClassName##Create,true, IconFilename ); \
99 #define FBCharacterSolverDeclare( ClassName, Parent ) \
100 FBClassDeclare( ClassName, Parent ); \
102 ClassName(const char* pName):Parent(pName) { FBClassInit; } \
108 #define FBCharacterSolverImplementation( ThisComponent ) \
109 FBClassImplementation( ThisComponent )
128 #ifndef DOXYGEN_SHOULD_SKIP_THIS
129 IObject_Declare(
override);
164 void ResetConnectorSetup();
294 FBSDK_DLL int FBGetCharacterExternalSolverCount();
300 FBSDK_DLL const char* FBGetCharacterExternalSolverName(
int pIndex);
306 FBSDK_DLL int FBGetCharacterExternalSolverIndex(
const char* pName);
317 #ifdef FBSDKUseNamespace
A character is the link between a motion source and a character model.
Used to work with character poses.
Stores options for operations on poses.
virtual double GetCharacterSolverVersion()
Version of the solver. Needs to be overloaded in derived class.
bool BackgroundEvaluateInfoNotify(FBEvaluateInfo *pBackgroundEvaluateInfo, kBackgroundEvaluationCallback pFunction, void *pCustomData=NULL)
Enable evaluation notification.
FBPropertyComponent Source
Read Write Property: Source character when doing a character retarget.
virtual FBBodyPartId GetExtraFKBodyPartAt(int pIndex)
Return The specified extra FK BodyPart (ex.
virtual const char * GetExtraFKNameAt(int pIndex)
Return the specified extra FK Name (ex.
void SetExtraBoneModelAt(FBModel *pModel, int pIndex)
Set the specified extra Bone model for a specified Extra Bone Index.
bool GetDoubleSolve()
Returns true when control rig has Double Solve property on.
void BackgroundEvaluateInfoEnd(FBEvaluateInfo *pBackgroundEvaluateInfo)
Release background evaluation info - very important.
FBModelMarker * GetExtraFKModelAt(int pIndex)
Return the specified extra FK model (ex.
virtual int GetExtraFKCount()
Return number of extra FK model (ex.
virtual int GetExtraBoneCount()
Return number of extra Bone model (ex.
void SetParentRotationOffset(FBRVector &pR, int pIndex)
Set the Parent Rotation Offset of the Given Extra Bone Index.
virtual const char * GetExtraBoneNameAt(int pIndex)
Return The specified extra Bone name (ex.
FBPropertyCharacter TargetCharacter
Read Write Property: The character being constrained.
void GetParentRotationOffset(FBRVector &pR, int pIndex)
Get the Parent Rotation Offset of the Given Extra Bone Index.
virtual void ResetExtraProperties()
Support for resetting properties that are defined and specific to custom solver Override this functio...
FBEvaluateInfo * BackgroundEvaluateInfoBegin(FBEvaluateInfo *pSourceEvaluateInfo, bool pEvaluateCandidates=false)
Start background evaluation.
FBModel * GetExtraBoneModelAt(int pIndex)
Return The specified extra Bone model (ex.
virtual FBBodyPartId GetExtraBoneBodyPartAt(int pIndex)
Return The specified extra Bone BodyPart (ex.
bool GetRigAlign()
Returns true when control rig has Rig Align property on.
void SetTransformOffset(FBVector3d &pT, FBRVector &pR, FBSVector &pS, int pIndex)
Set the transform of the Given Extra Bone Index.
bool GetBlendAuxiliaryWithEffector()
Returns true means consider blending auxiliary with effector when evaluate control rig.
int mEvaluationId
Last Evaluation Id.
void GetTransformOffset(FBVector3d &pT, FBRVector &pR, FBSVector &pS, int pIndex)
Get the transform of the Given Extra Bone Index.
void ExtractOffsets()
Extract Transforms Of Extra Bones for character stance pose information.
virtual void CharacterPasteState(FBCharacter *pFromCharacter, FBCharacterPose *pPose, FBCharacterPoseOptions &pCharacterPoseOptions)
Paste the state of a character on another one.
FBEvaluateInfo * BackgroundEvaluateInfoRecursiveBegin(FBEvaluateInfo *pSourceEvaluateInfo, bool pForceUpdateLocals=false)
Start recursive background evaluation.
void SetExtraFKModelAt(FBModelMarker *pModel, int pIndex)
Set the specified extra FK model for a specified Extra FK Index (ex.
FBCharacterSolver(const char *pName, HIObject pObject=NULL)
Constructor.
void SetBlendAuxiliaryWithEffector(bool pBlendAux)
Set true means consider blending auxiliary with effector when evaluate an control rig.
Base class for constraints.
AnimationNodeNotify evaluation information.
Three dimensional scaling vector.
Contains definitions for actors, characters, and marker sets In Development.
FBBodyPartId
Body part for character.
@ kFBCtrlSetPartNone
No part selected.
This class allows customization of the character manipulator behavior.
Contains definitions for object poses.
#define __FBClassDeclare(Name, Parent)
For internal use only.
#define FBSDK_DLL
Be sure that FBSDK_DLL is defined only once...
Contains definitions for devices, boxes and models.
FB_DEFINE_COMPONENT(K_DLLIMPORT, AnimationNode)
Animation node class.
Contains definitions for object poses.
class K_DLLIMPORT FBPropertyBaseComponent< FBComponent * > FBPropertyComponent
Property: FBPropertyBaseComponent(FBComponent*)
#define __FB_FORWARD(ClassName)
Forwarding of class and typedef declaration.
class K_DLLIMPORT FBVector3< double > FBVector3d
3D vector.