fbxcharacter.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2012 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
00014 #define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/core/base/fbxstring.h>
00019 #include <fbxsdk/core/base/fbxerror.h>
00020 #include <fbxsdk/core/math/fbxvector4.h>
00021 #include <fbxsdk/core/math/fbxtransforms.h>
00022 #include <fbxsdk/scene/fbxgroupname.h>
00023 #include <fbxsdk/scene/constraint/fbxconstraint.h>
00024 
00025 #include <fbxsdk/fbxsdk_nsbegin.h>
00026 
00027 class FbxNode;
00028 class FbxControlSet;
00029 class FbxManager;
00030 
00036 class FBXSDK_DLL FbxCharacterLink
00037 {
00038 public:
00040     enum EType
00041     {
00042         eCharacterLink,
00043         eControlSetLink,
00044         eControlSetEffector,
00045         eControlSetEffectorAux
00046     };
00047 
00049     FbxCharacterLink();
00050 
00052     FbxCharacterLink(const FbxCharacterLink& pCharacterLink);
00053 
00057     FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink);
00058 
00060     void Reset();
00061 
00062     FbxNode*    mNode;          
00063     FbxString   mTemplateName;  
00064     FbxVector4  mOffsetT;       
00065     FbxVector4  mOffsetR;       
00066     FbxVector4  mOffsetS;       
00067     FbxVector4  mParentROffset; 
00068     bool        mHasRotSpace;   
00069     FbxLimits   mRLimits;       
00070     FbxVector4  mPreRotation;   
00071     FbxVector4  mPostRotation;  
00072     int         mRotOrder;      
00073     double      mAxisLen;       
00074 
00076 //
00077 //  WARNING!
00078 //
00079 //      Anything beyond these lines may not be documented accurately and is 
00080 //      subject to change without notice.
00081 //
00083 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00084     FbxProperty mPropertyLink;
00085     FbxProperty mPropertyOffsetT;
00086     FbxProperty mPropertyOffsetR;
00087     FbxProperty mPropertyOffsetS;
00088     FbxProperty mPropertyParentOffsetR;
00089     FbxProperty mPropertyTemplateName;
00090 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00091 };
00092 
00102 class FBXSDK_DLL FbxCharacter : public FbxConstraint
00103 {
00104     FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint);
00105 
00106 public:
00114     enum EInputType
00115     { 
00116         eInputActor, 
00117         eInputCharacter,
00118         eInputMarkerSet,
00119         eOutputMarkerSet,
00120         eInputStancePose
00121     };
00122 
00124     enum EGroupId
00125     {
00126         eGroupBase,
00127         eGroupAuxiliary,
00128         eGroupSpine,
00129         eGroupRoll,
00130         eGroupSpecial,
00131         eGroupLeftHand,
00132         eGroupRightHand,
00133         eGroupProps,
00134         eGroupGameModeParent,
00135         eGroupNeck,
00136         eGroupLeftFoot,
00137         eGroupRightFoot,
00138         eGroupFloorContact,
00139         eGroupIdCount
00140     };
00141 
00144     enum ENodeId
00145     {       
00146         eHips,
00147         eLeftHip,
00148         eLeftKnee,
00149         eLeftAnkle,
00150         eLeftFoot,
00151         eRightHip,
00152         eRightKnee,
00153         eRightAnkle,
00154         eRightFoot,
00155         eWaist,
00156         eChest,
00157         eLeftCollar,
00158         eLeftShoulder,
00159         eLeftElbow,
00160         eLeftWrist,
00161         eRightCollar,
00162         eRightShoulder,
00163         eRightElbow,
00164         eRightWrist,
00165         eNeck,
00166         eHead,
00167         eLeftHipRoll,
00168         eLeftKneeRoll,
00169         eRightHipRoll,
00170         eRightKneeRoll,
00171         eLeftShoulderRoll,
00172         eLeftElbowRoll,
00173         eRightShoulderRoll,
00174         eRightElbowRoll,
00175         eSpine2,
00176         eSpine3,
00177         eSpine4,
00178         eSpine5,
00179         eSpine6,
00180         eSpine7,
00181         eSpine8,
00182         eSpine9,
00183         eLeftThumbA,
00184         eLeftThumbB,
00185         eLeftThumbC,
00186         eLeftIndexA,
00187         eLeftIndexB,
00188         eLeftIndexC,
00189         eLeftMiddleA,
00190         eLeftMiddleB,
00191         eLeftMiddleC,
00192         eLeftRingA,
00193         eLeftRingB,
00194         eLeftRingC,
00195         eLeftPinkyA,
00196         eLeftPinkyB,
00197         eLeftPinkyC,
00198         eRightThumbA,
00199         eRightThumbB,
00200         eRightThumbC,
00201         eRightIndexA,
00202         eRightIndexB,
00203         eRightIndexC,
00204         eRightMiddleA,
00205         eRightMiddleB,
00206         eRightMiddleC,
00207         eRightRingA,
00208         eRightRingB,
00209         eRightRingC,
00210         eRightPinkyA,
00211         eRightPinkyB,
00212         eRightPinkyC,
00213         eReference,
00214         eLeftFloor,
00215         eRightFloor,
00216         eHipsTranslation,
00217         eProps0,
00218         eProps1,
00219         eProps2,
00220         eProps3,
00221         eProps4,
00222         eGameModeParentLeftHipRoll,
00223         eGameModeParentLeftKnee,
00224         eGameModeParentLeftKneeRoll,
00225         eGameModeParentRightHipRoll,
00226         eGameModeParentRightKnee,
00227         eGameModeParentRightKneeRoll,
00228         eGameModeParentLeftShoulderRoll,       
00229         eGameModeParentLeftElbow,      
00230         eGameModeParentLeftElbowRoll,  
00231         eGameModeParentRightShoulderRoll,
00232         eGameModeParentRightElbow,             
00233         eGameModeParentRightElbowRoll, 
00234         eLeftUpLegRoll,
00235         eLeftLegRoll,
00236         eRightUpLegRoll,
00237         eRightLegRoll,
00238         eLeftArmRoll,
00239         eLeftForeArmRoll,
00240         eRightArmRoll,
00241         eRightForeArmRoll,
00242         eLeftHandFloor,
00243         eRightHandFloor,
00244         eLeftHand,
00245         eRightHand,
00246         eNeck1,
00247         eNeck2,
00248         eNeck3,
00249         eNeck4,
00250         eNeck5,
00251         eNeck6,
00252         eNeck7,
00253         eNeck8,
00254         eNeck9,
00255         eLeftInHandThumb,
00256         eLeftThumbD,
00257         eLeftInHandIndex,
00258         eLeftIndexD,
00259         eLeftInHandMiddle,
00260         eLeftMiddleD,
00261         eLeftInHandRing,
00262         eLeftRingD,
00263         eLeftInHandPinky,
00264         eLeftPinkyD,
00265         eLeftInHandExtraFinger,
00266         eLeftExtraFingerA,
00267         eLeftExtraFingerB,
00268         eLeftExtraFingerC,
00269         eLeftExtraFingerD,
00270         eRightInHandThumb,
00271         eRightThumbD,
00272         eRightInHandIndex,
00273         eRightIndexD,
00274         eRightInHandMiddle,
00275         eRightMiddleD,
00276         eRightInHandRing,
00277         eRightRingD,
00278         eRightInHandPinky,
00279         eRightPinkyD,
00280         eRightInHandExtraFinger,
00281         eRightExtraFingerA,
00282         eRightExtraFingerB,
00283         eRightExtraFingerC,
00284         eRightExtraFingerD,
00285         eLeftInFootThumb,
00286         eLeftFootThumbA,
00287         eLeftFootThumbB,
00288         eLeftFootThumbC,
00289         eLeftFootThumbD,
00290         eLeftInFootIndex,
00291         eLeftFootIndexA,
00292         eLeftFootIndexB,
00293         eLeftFootIndexC,
00294         eLeftFootIndexD,
00295         eLeftInFootMiddle,
00296         eLeftFootMiddleA,
00297         eLeftFootMiddleB,
00298         eLeftFootMiddleC,
00299         eLeftFootMiddleD,
00300         eLeftInFootRing,
00301         eLeftFootRingA,
00302         eLeftFootRingB,
00303         eLeftFootRingC,
00304         eLeftFootRingD,
00305         eLeftInFootPinky,
00306         eLeftFootPinkyA,
00307         eLeftFootPinkyB,
00308         eLeftFootPinkyC,
00309         eLeftFootPinkyD,
00310         eLeftInFootExtraFinger,
00311         eLeftFootExtraFingerA,
00312         eLeftFootExtraFingerB,
00313         eLeftFootExtraFingerC,
00314         eLeftFootExtraFingerD,
00315         eRightInFootThumb,
00316         eRightFootThumbA,
00317         eRightFootThumbB,
00318         eRightFootThumbC,
00319         eRightFootThumbD,
00320         eRightInFootIndex,
00321         eRightFootIndexA,
00322         eRightFootIndexB,
00323         eRightFootIndexC,
00324         eRightFootIndexD,
00325         eRightInFootMiddle,
00326         eRightFootMiddleA,
00327         eRightFootMiddleB,
00328         eRightFootMiddleC,
00329         eRightFootMiddleD,
00330         eRightInFootRing,
00331         eRightFootRingA,
00332         eRightFootRingB,
00333         eRightFootRingC,
00334         eRightFootRingD,
00335         eRightInFootPinky,
00336         eRightFootPinkyA,
00337         eRightFootPinkyB,
00338         eRightFootPinkyC,
00339         eRightFootPinkyD,
00340         eRightInFootExtraFinger,
00341         eRightFootExtraFingerA,
00342         eRightFootExtraFingerB,
00343         eRightFootExtraFingerC,
00344         eRightFootExtraFingerD,
00345         eLeftCollarExtra,
00346         eRightCollarExtra,
00347         eNodeIdCount
00348     };
00349 
00350     enum EOffAutoUser
00351     {
00352         eParamModeOff,
00353         eParamModeAuto,
00354         eParamModeUser
00355     };
00356 
00357     enum EAutoUser
00358     {
00359         eParamModeAuto2,
00360         eParamModeUser2
00361     };
00362 
00363     enum EPostureMode
00364     {
00365         ePostureBiped,
00366         ePostureQuadriped,
00367         ePostureCount
00368     };
00369 
00370     enum EFloorPivot
00371     {
00372         eFloorPivotAuto,
00373         eFloorPivotAnkle,
00374         eFloorPivotToes,
00375         eFloorPivotCount
00376     };
00377 
00378     enum ERollExtractionMode
00379     {
00380         eRelativeRollExtraction,
00381         eAbsoluteRollExtraction,
00382         eRollExtractionTypeCount
00383     };
00384 
00385     enum EHipsTranslationMode
00386     {
00387         eHipsTranslationWorldRigid,
00388         eHipsTranslationBodyRigid,
00389         eHipsTranslationTypeCount
00390     };
00391 
00392     enum EFootContactType
00393     {
00394         eFootTypeNormal,
00395         eFootTypeAnkle,
00396         eFootTypeToeBase,
00397         eFootTypeHoof,
00398         eFootContactModeCount
00399     };
00400 
00401     enum EHandContactType
00402     {
00403         eHandTypeNormal,
00404         eHandTypeWrist,
00405         eHandTypeFingerBase,
00406         eHandTypeHoof,
00407         eHandContactModeCount
00408     };
00409 
00410     enum EFingerContactMode
00411     {
00412         eFingerContactModeSticky,
00413         eFingerContactModeSpread,
00414         eFingerContactModeStickySpread,
00415         eFingerContactModeCount
00416     };
00417 
00418     enum EContactBehaviour
00419     {
00420         eContactNeverSync,
00421         eContactSyncOnKey,
00422         eContactAlwaysSync,
00423         eContactBehaviorCount
00424     };
00425 
00426     enum EPropertyUnit
00427     {
00428         ePropertyNoUnit,
00429         ePropertyPercent,
00430         ePropertySecond,
00431         ePropertyCentimeter,
00432         ePropertyDegree,
00433         ePropertyEnum,
00434         ePropertyReal
00435     };
00436 
00437     enum EErrorCode
00438     {
00439         eInternalError,
00440         eErrorCount
00441     }; 
00442 
00449     void Reset();
00450 
00455     void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL);
00456 
00458     EInputType GetInputType() const;
00459 
00465     FbxObject* GetInputObject() const;
00466 
00474     bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
00475 
00481     bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const;
00482 
00486     FbxControlSet& GetControlSet() const;
00487 
00492     static int GetCharacterGroupCount(EGroupId pCharacterGroupId);
00493 
00499     static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex);
00500 
00501 
00507     static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex);
00508 
00514     static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex);
00515 
00523     static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex);
00524 
00532     static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex);
00533 
00540     static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion);
00541 
00549     static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName);
00550 
00556     static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId);
00557         
00558     // FbxCharacter Properties
00559     FbxPropertyT<FbxInt>                PullIterationCount;
00560     FbxPropertyT<EPostureMode>          Posture;
00561     FbxPropertyT<FbxBool>               ForceActorSpace;
00562     FbxPropertyT<FbxDouble>             ScaleCompensation;
00563     FbxPropertyT<EOffAutoUser>          ScaleCompensationMode;
00564     FbxPropertyT<FbxDouble>             HipsHeightCompensation;
00565     FbxPropertyT<EOffAutoUser>          HipsHeightCompensationMode;
00566     FbxPropertyT<FbxDouble>             AnkleHeightCompensation;
00567     FbxPropertyT<EOffAutoUser>          AnkleHeightCompensationMode;
00568     FbxPropertyT<FbxDouble>             AnkleProximityCompensation;
00569     FbxPropertyT<EOffAutoUser>          AnkleProximityCompensationMode;
00570     FbxPropertyT<FbxDouble>             MassCenterCompensation;
00571     FbxPropertyT<FbxBool>               ApplyLimits;
00572     FbxPropertyT<FbxDouble>             ChestReduction;
00573     FbxPropertyT<FbxDouble>             CollarReduction;
00574     FbxPropertyT<FbxDouble>             NeckReduction;
00575     FbxPropertyT<FbxDouble>             HeadReduction;
00576     FbxPropertyT<FbxDouble>             ReachActorLeftAnkle;
00577     FbxPropertyT<FbxDouble>             ReachActorRightAnkle;
00578     FbxPropertyT<FbxDouble>             ReachActorLeftKnee;
00579     FbxPropertyT<FbxDouble>             ReachActorRightKnee;
00580     FbxPropertyT<FbxDouble>             ReachActorChest;
00581     FbxPropertyT<FbxDouble>             ReachActorHead;
00582     FbxPropertyT<FbxDouble>             ReachActorLeftWrist;
00583     FbxPropertyT<FbxDouble>             ReachActorRightWrist;
00584     FbxPropertyT<FbxDouble>             ReachActorLeftElbow;
00585     FbxPropertyT<FbxDouble>             ReachActorRightElbow;
00586     FbxPropertyT<FbxDouble>             ReachActorLeftFingerBase;
00587     FbxPropertyT<FbxDouble>             ReachActorRightFingerBase;
00588     FbxPropertyT<FbxDouble>             ReachActorLeftToesBase;
00589     FbxPropertyT<FbxDouble>             ReachActorRightToesBase;
00590     FbxPropertyT<FbxDouble>             ReachActorLeftFingerBaseRotation;
00591     FbxPropertyT<FbxDouble>             ReachActorRightFingerBaseRotation;
00592     FbxPropertyT<FbxDouble>             ReachActorLeftToesBaseRotation;
00593     FbxPropertyT<FbxDouble>             ReachActorRightToesBaseRotation;
00594     FbxPropertyT<FbxDouble>             ReachActorLeftAnkleRotation;
00595     FbxPropertyT<FbxDouble>             ReachActorRightAnkleRotation;
00596     FbxPropertyT<FbxDouble>             ReachActorHeadRotation;
00597     FbxPropertyT<FbxDouble>             ReachActorLeftWristRotation;
00598     FbxPropertyT<FbxDouble>             ReachActorRightWristRotation;
00599     FbxPropertyT<FbxDouble>             ReachActorChestRotation;
00600     FbxPropertyT<FbxDouble>             ReachActorLowerChestRotation;
00601     FbxPropertyT<FbxDouble3>            HipsTOffset;
00602     FbxPropertyT<FbxDouble3>            ChestTOffset;
00603     FbxPropertyT<ERollExtractionMode>   RollExtractionMode;
00604     FbxPropertyT<FbxDouble>             LeftUpLegRoll;
00605     FbxPropertyT<FbxBool>               LeftUpLegRollMode;
00606     FbxPropertyT<FbxDouble>             LeftLegRoll;
00607     FbxPropertyT<FbxBool>               LeftLegRollMode;
00608     FbxPropertyT<FbxDouble>             RightUpLegRoll;
00609     FbxPropertyT<FbxBool>               RightUpLegRollMode;
00610     FbxPropertyT<FbxDouble>             RightLegRoll;
00611     FbxPropertyT<FbxBool>               RightLegRollMode;
00612     FbxPropertyT<FbxDouble>             LeftArmRoll;
00613     FbxPropertyT<FbxBool>               LeftArmRollMode;
00614     FbxPropertyT<FbxDouble>             LeftForeArmRoll;
00615     FbxPropertyT<FbxBool>               LeftForeArmRollMode;
00616     FbxPropertyT<FbxDouble>             RightArmRoll;
00617     FbxPropertyT<FbxBool>               RightArmRollMode;
00618     FbxPropertyT<FbxDouble>             RightForeArmRoll;
00619     FbxPropertyT<FbxBool>               RightForeArmRollMode;
00620     FbxPropertyT<FbxDouble>             LeftUpLegRollEx;
00621     FbxPropertyT<FbxBool>               LeftUpLegRollExMode;
00622     FbxPropertyT<FbxDouble>             LeftLegRollEx;
00623     FbxPropertyT<FbxBool>               LeftLegRollExMode;
00624     FbxPropertyT<FbxDouble>             RightUpLegRollEx;
00625     FbxPropertyT<FbxBool>               RightUpLegRollExMode;
00626     FbxPropertyT<FbxDouble>             RightLegRollEx;
00627     FbxPropertyT<FbxBool>               RightLegRollExMode;
00628     FbxPropertyT<FbxDouble>             LeftArmRollEx;
00629     FbxPropertyT<FbxBool>               LeftArmRollExMode;
00630     FbxPropertyT<FbxDouble>             LeftForeArmRollEx;
00631     FbxPropertyT<FbxBool>               LeftForeArmRollExMode;
00632     FbxPropertyT<FbxDouble>             RightArmRollEx;
00633     FbxPropertyT<FbxBool>               RightArmRollExMode;
00634     FbxPropertyT<FbxDouble>             RightForeArmExRoll;
00635     FbxPropertyT<FbxBool>               RightForeArmRollExMode;
00636     FbxPropertyT<EContactBehaviour>     ContactBehaviour;
00637     FbxPropertyT<FbxBool>               FootFloorContact;
00638     FbxPropertyT<FbxBool>               FootAutomaticToes;
00639     FbxPropertyT<EFloorPivot>           FootFloorPivot;
00640     FbxPropertyT<FbxDouble>             FootBottomToAnkle;
00641     FbxPropertyT<FbxDouble>             FootBackToAnkle;
00642     FbxPropertyT<FbxDouble>             FootMiddleToAnkle;
00643     FbxPropertyT<FbxDouble>             FootFrontToMiddle;
00644     FbxPropertyT<FbxDouble>             FootInToAnkle;
00645     FbxPropertyT<FbxDouble>             FootOutToAnkle;
00646     FbxPropertyT<FbxDouble>             FootContactSize;
00647     FbxPropertyT<FbxBool>               FootFingerContact;
00648     FbxPropertyT<EFootContactType>      FootContactType;
00649     FbxPropertyT<EFingerContactMode>    FootFingerContactMode;
00650     FbxPropertyT<FbxDouble>             FootContactStiffness;
00651     FbxPropertyT<FbxDouble>             FootFingerContactRollStiffness;
00652     FbxPropertyT<FbxBool>               HandFloorContact;
00653     FbxPropertyT<FbxBool>               HandAutomaticFingers;
00654     FbxPropertyT<EFloorPivot>           HandFloorPivot;
00655     FbxPropertyT<FbxDouble>             HandBottomToWrist;
00656     FbxPropertyT<FbxDouble>             HandBackToWrist;
00657     FbxPropertyT<FbxDouble>             HandMiddleToWrist;
00658     FbxPropertyT<FbxDouble>             HandFrontToMiddle;
00659     FbxPropertyT<FbxDouble>             HandInToWrist;
00660     FbxPropertyT<FbxDouble>             HandOutToWrist;
00661     FbxPropertyT<FbxDouble>             HandContactSize;
00662     FbxPropertyT<FbxBool>               HandFingerContact;
00663     FbxPropertyT<EHandContactType>      HandContactType;
00664     FbxPropertyT<EFingerContactMode>    HandFingerContactMode;
00665     FbxPropertyT<FbxDouble>             HandContactStiffness;
00666     FbxPropertyT<FbxDouble>             HandFingerContactRollStiffness;
00667     FbxPropertyT<FbxDouble>             LeftHandThumbTip;
00668     FbxPropertyT<FbxDouble>             LeftHandIndexTip;
00669     FbxPropertyT<FbxDouble>             LeftHandMiddleTip;
00670     FbxPropertyT<FbxDouble>             LeftHandRingTip;
00671     FbxPropertyT<FbxDouble>             LeftHandPinkyTip;
00672     FbxPropertyT<FbxDouble>             LeftHandExtraFingerTip;
00673     FbxPropertyT<FbxDouble>             RightHandThumbTip;
00674     FbxPropertyT<FbxDouble>             RightHandIndexTip;
00675     FbxPropertyT<FbxDouble>             RightHandMiddleTip;
00676     FbxPropertyT<FbxDouble>             RightHandRingTip;
00677     FbxPropertyT<FbxDouble>             RightHandPinkyTip;
00678     FbxPropertyT<FbxDouble>             RightHandExtraFingerTip;
00679     FbxPropertyT<FbxDouble>             LeftFootThumbTip;
00680     FbxPropertyT<FbxDouble>             LeftFootIndexTip;
00681     FbxPropertyT<FbxDouble>             LeftFootMiddleTip;
00682     FbxPropertyT<FbxDouble>             LeftFootRingTip;
00683     FbxPropertyT<FbxDouble>             LeftFootPinkyTip;
00684     FbxPropertyT<FbxDouble>             LeftFootExtraFingerTip;
00685     FbxPropertyT<FbxDouble>             RightFootThumbTip;
00686     FbxPropertyT<FbxDouble>             RightFootIndexTip;
00687     FbxPropertyT<FbxDouble>             RightFootMiddleTip;
00688     FbxPropertyT<FbxDouble>             RightFootRingTip;
00689     FbxPropertyT<FbxDouble>             RightFootPinkyTip;
00690     FbxPropertyT<FbxDouble>             RightFootExtraFingerTip;
00691     FbxPropertyT<FbxBool>               FingerSolving;
00692     FbxPropertyT<FbxDouble>             CtrlPullLeftToeBase;
00693     FbxPropertyT<FbxDouble>             CtrlPullLeftFoot;
00694     FbxPropertyT<FbxDouble>             CtrlPullLeftKnee;
00695     FbxPropertyT<FbxDouble>             CtrlPullRightToeBase;
00696     FbxPropertyT<FbxDouble>             CtrlPullRightFoot;
00697     FbxPropertyT<FbxDouble>             CtrlPullRightKnee;
00698     FbxPropertyT<FbxDouble>             CtrlPullLeftFingerBase;
00699     FbxPropertyT<FbxDouble>             CtrlPullLeftHand;
00700     FbxPropertyT<FbxDouble>             CtrlPullLeftElbow;
00701     FbxPropertyT<FbxDouble>             CtrlPullRightFingerBase;
00702     FbxPropertyT<FbxDouble>             CtrlPullRightHand;
00703     FbxPropertyT<FbxDouble>             CtrlPullRightElbow;
00704     FbxPropertyT<FbxDouble>             CtrlChestPullLeftHand;
00705     FbxPropertyT<FbxDouble>             CtrlChestPullRightHand;
00706     FbxPropertyT<FbxDouble>             CtrlPullHead;
00707     FbxPropertyT<FbxDouble>             CtrlResistHipsPosition;
00708     FbxPropertyT<FbxDouble>             CtrlEnforceGravity;
00709     FbxPropertyT<FbxDouble>             CtrlResistHipsOrientation;
00710     FbxPropertyT<FbxDouble>             CtrlResistChestPosition;
00711     FbxPropertyT<FbxDouble>             CtrlResistChestOrientation;
00712     FbxPropertyT<FbxDouble>             CtrlResistLeftCollar;
00713     FbxPropertyT<FbxDouble>             CtrlResistRightCollar;
00714     FbxPropertyT<FbxDouble>             CtrlResistLeftKnee;
00715     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionLeftKnee;
00716     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorLeftKnee;
00717     FbxPropertyT<FbxDouble>             CtrlResistRightKnee;
00718     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionRightKnee;
00719     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorRightKnee;
00720     FbxPropertyT<FbxDouble>             CtrlResistLeftElbow;
00721     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionLeftElbow;
00722     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorLeftElbow;
00723     FbxPropertyT<FbxDouble>             CtrlResistRightElbow;
00724     FbxPropertyT<FbxDouble>             CtrlResistMaximumExtensionRightElbow;
00725     FbxPropertyT<FbxDouble>             CtrlResistCompressionFactorRightElbow;
00726     FbxPropertyT<FbxDouble>             CtrlSpineStiffness;
00727     FbxPropertyT<FbxDouble>             CtrlNeckStiffness;
00728     FbxPropertyT<FbxBool>               MirrorMode;
00729     FbxPropertyT<FbxDouble>             ShoulderCorrection;
00730     FbxPropertyT<FbxBool>               LeftKneeKillPitch;
00731     FbxPropertyT<FbxBool>               RightKneeKillPitch;
00732     FbxPropertyT<FbxBool>               LeftElbowKillPitch;
00733     FbxPropertyT<FbxBool>               RightElbowKillPitch;
00734     FbxPropertyT<EHipsTranslationMode>  HipsTranslationMode;
00735     FbxPropertyT<FbxBool>               WriteReference;
00736     FbxPropertyT<FbxBool>               SyncMode;
00737     FbxPropertyT<FbxDouble>             Damping;
00738     FbxPropertyT<FbxDouble>             OrientationDamping;
00739     FbxPropertyT<EOffAutoUser>          OrientationDampingMode;
00740     FbxPropertyT<FbxDouble>             DisplacementDamping;
00741     FbxPropertyT<EOffAutoUser>          DisplacementDampingMode;
00742     FbxPropertyT<FbxDouble>             DisplacementMemory;
00743     FbxPropertyT<EAutoUser>             DisplacementMemoryMode;
00744     FbxPropertyT<FbxDouble>             HipsDisplacementDamping;
00745     FbxPropertyT<EAutoUser>             HipsDisplacementDampingMode;
00746     FbxPropertyT<FbxDouble>             AnkleDisplacementDamping;
00747     FbxPropertyT<EAutoUser>             AnkleDisplacementDampingMode;
00748     FbxPropertyT<FbxDouble>             WristDisplacementDamping;
00749     FbxPropertyT<EAutoUser>             WristDisplacementDampingMode;
00750     FbxPropertyT<FbxDouble>             Stabilization;
00751     FbxPropertyT<FbxDouble>             AnkleStabilizationTime;
00752     FbxPropertyT<EAutoUser>             AnkleStabilizationTimeMode;
00753     FbxPropertyT<FbxDouble>             AnkleStabilizationPerimeter;
00754     FbxPropertyT<EAutoUser>             AnkleStabilizationPerimeterMode;
00755     FbxPropertyT<FbxDouble>             AnkleStabilizationAngularPerimeter;
00756     FbxPropertyT<EOffAutoUser>          AnkleStabilizationAngularPerimeterMode;
00757     FbxPropertyT<FbxDouble>             AnkleStabilizationFloorProximity;
00758     FbxPropertyT<EOffAutoUser>          AnkleStabilizationFloorProximityMode;
00759     FbxPropertyT<FbxDouble>             AnkleStabilizationDamping;
00760     FbxPropertyT<EOffAutoUser>          AnkleStabilizationDampingMode;
00761     FbxPropertyT<FbxDouble>             AnkleStabilizationRecoveryTime;
00762     FbxPropertyT<EOffAutoUser>          AnkleStabilizationRecoveryTimeMode;
00763     FbxPropertyT<FbxReference>          SourceObject;
00764     FbxPropertyT<FbxReference>          DestinationObject;
00765     FbxPropertyT<FbxReference>          Actor;
00766     FbxPropertyT<FbxReference>          Character;
00767     FbxPropertyT<FbxReference>          ControlSet;
00768     FbxPropertyT<FbxDouble>             HikVersion;
00769     FbxPropertyT<FbxBool>               Characterize;
00770     FbxPropertyT<FbxBool>               LockXForm;
00771     FbxPropertyT<FbxBool>               LockPick;
00772 
00773     // HIK 4.6 new properties
00774     FbxPropertyT<FbxDouble>             RealisticShoulder;
00775     FbxPropertyT<FbxDouble>             CollarStiffnessX;
00776     FbxPropertyT<FbxDouble>             CollarStiffnessY; 
00777     FbxPropertyT<FbxDouble>             CollarStiffnessZ; 
00778     FbxPropertyT<FbxDouble>             ExtraCollarRatio;
00779 
00780     FbxPropertyT<FbxDouble>             LeftLegMaxExtensionAngle;
00781     FbxPropertyT<FbxDouble>             RightLegMaxExtensionAngle; 
00782     FbxPropertyT<FbxDouble>             LeftArmMaxExtensionAngle;
00783     FbxPropertyT<FbxDouble>             RightArmMaxExtensionAngle; 
00784                                         
00785     FbxPropertyT<FbxDouble>             StretchStartArmsAndLegs;
00786     FbxPropertyT<FbxDouble>             StretchStopArmsAndLegs;
00787     FbxPropertyT<FbxDouble>             SnSScaleArmsAndLegs;
00788     FbxPropertyT<FbxDouble>             SnSReachLeftWrist;
00789     FbxPropertyT<FbxDouble>             SnSReachRightWrist; 
00790     FbxPropertyT<FbxDouble>             SnSReachLeftAnkle;
00791     FbxPropertyT<FbxDouble>             SnSReachRightAnkle; 
00792     FbxPropertyT<FbxDouble>             SnSScaleSpine;
00793     FbxPropertyT<FbxDouble>             SnSScaleSpineChildren;
00794     FbxPropertyT<FbxDouble>             SnSSpineFreedom;
00795     FbxPropertyT<FbxDouble>             SnSReachChestEnd;
00796     FbxPropertyT<FbxDouble>             SnSScaleNeck;
00797     FbxPropertyT<FbxDouble>             SnSNeckFreedom;
00798     FbxPropertyT<FbxDouble>             SnSReachHead;
00799     
00801 //
00802 //  WARNING!
00803 //
00804 //      Anything beyond these lines may not be documented accurately and is 
00805 //      subject to change without notice.
00806 //
00808 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00809     void        SetVersion(int pVersion){ mCharacterVersion = pVersion; }
00810     int         Version(){ return mCharacterVersion; }
00811     void        SetValuesFromLegacyLoad();
00812     void        SetValuesForLegacySave(int pVersion);
00813     void        RestoreValuesFromLegacySave();
00814     bool        IsLegacy();
00815 
00816     int         GetPropertyInfoCount();
00817     const void  GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const;
00818     const void  GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const;
00819     
00820     FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId);
00821 
00822 protected:
00823     FbxCharacter(FbxManager& pManager, char const* pName);
00824 
00825     virtual FbxObject&      Copy(const FbxObject& pObject);
00826     virtual void            Construct(const FbxCharacter* pFrom);
00827     virtual void            Destruct(bool pRecursive, bool pDependents);
00828     virtual EType           GetConstraintType() const;
00829     virtual FbxStringList   GetTypeFlags() const;
00830     virtual bool            ConnecNotify (FbxConnectEvent const &pEvent);
00831 
00832 private:
00833     bool                    InverseProperty(FbxProperty& pProp);
00834 
00835     FbxError                mError;
00836     int                     mCharacterVersion;
00837     FbxCharacterLink        mCharacterLink[eNodeIdCount];
00838     FbxControlSet*          mControlSet;
00839 
00840     friend class FbxScene;
00841     friend class FbxNode;
00842 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00843 };
00844 
00845 inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; }
00846 inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; }
00847 inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; }
00848 inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; }
00849 inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; }
00850 inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; }
00851 inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; }
00852 inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; }
00853 inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; }
00854 inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; }
00855 
00856 #include <fbxsdk/fbxsdk_nsend.h>
00857 
00858 #endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */