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