kfbxcharacter.h

Go to the documentation of this file.
00001 
00004 #ifndef FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00005 #define FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright (C) 2001 - 2009 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kaydara.h>
00044 
00045 #include <fbxfilesdk/kfbxmath/kfbxvector4.h>
00046 
00047 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00048 #include <fbxfilesdk/components/kbaselib/klib/kerror.h>
00049 
00050 #include <fbxfilesdk/components/kcharacterdef/kfiltersetenum.h>
00051 
00052 #include <fbxfilesdk/kfbxplugins/kfbxconstraint.h>
00053 #include <fbxfilesdk/kfbxplugins/kfbxnodelimits.h>
00054 #include <fbxfilesdk/kfbxplugins/kfbxgroupname.h>
00055 
00056 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00057 
00058 class KFbxNode;
00059 class KFbxControlSet;
00060 class KFbxSdkManager;
00061 
00062 
00063 
00071 typedef enum 
00072 { 
00073         eCharacterInputActor = 0, 
00074         eCharacterInputCharacter = 1, 
00075         eCharacterInputMarkerSet = 2, 
00076         eCharacterOutputMarkerSet = 3, 
00077         eCharacterInputStance = 4 
00078 } ECharacterInputType;
00079 
00080 
00081 typedef enum  
00082 {       
00083         eCharacterHips = 0,             // Required
00084     eCharacterLeftHip,              // Required
00085     eCharacterLeftKnee,             // Required
00086         eCharacterLeftAnkle,            // Required
00087         eCharacterLeftFoot,
00088         eCharacterRightHip,             // Required
00089         eCharacterRightKnee,            // Required
00090         eCharacterRightAnkle,           // Required
00091         eCharacterRightFoot,
00092         eCharacterWaist,                                // Spine0, Required
00093         eCharacterChest,                        // Spine1
00094         eCharacterLeftCollar,
00095         eCharacterLeftShoulder,         // Required
00096         eCharacterLeftElbow,            // Required
00097         eCharacterLeftWrist,            // Required
00098         eCharacterRightCollar,
00099         eCharacterRightShoulder,        // Required
00100         eCharacterRightElbow,           // Required
00101         eCharacterRightWrist,           // Required
00102         eCharacterNeck,
00103         eCharacterHead,                 // Required
00104         eCharacterLeftHipRoll,
00105         eCharacterLeftKneeRoll,
00106         eCharacterRightHipRoll,
00107         eCharacterRightKneeRoll,
00108         eCharacterLeftShoulderRoll,
00109         eCharacterLeftElbowRoll,
00110         eCharacterRightShoulderRoll,
00111         eCharacterRightElbowRoll,
00112         eCharacterSpine2,
00113         eCharacterSpine3,
00114         eCharacterSpine4,
00115         eCharacterSpine5,
00116         eCharacterSpine6,
00117         eCharacterSpine7,
00118         eCharacterSpine8,
00119         eCharacterSpine9,
00120         eCharacterLeftThumbA,
00121         eCharacterLeftThumbB,
00122         eCharacterLeftThumbC,
00123         eCharacterLeftIndexA,
00124         eCharacterLeftIndexB,
00125         eCharacterLeftIndexC,
00126         eCharacterLeftMiddleA,
00127         eCharacterLeftMiddleB,
00128         eCharacterLeftMiddleC,
00129         eCharacterLeftRingA,
00130         eCharacterLeftRingB,
00131         eCharacterLeftRingC,
00132         eCharacterLeftPinkyA,
00133         eCharacterLeftPinkyB,
00134         eCharacterLeftPinkyC,
00135         eCharacterRightThumbA,
00136         eCharacterRightThumbB,
00137         eCharacterRightThumbC,
00138         eCharacterRightIndexA,
00139         eCharacterRightIndexB,
00140         eCharacterRightIndexC,
00141         eCharacterRightMiddleA,
00142         eCharacterRightMiddleB,
00143         eCharacterRightMiddleC,
00144         eCharacterRightRingA,
00145         eCharacterRightRingB,
00146         eCharacterRightRingC,
00147         eCharacterRightPinkyA,
00148         eCharacterRightPinkyB,
00149         eCharacterRightPinkyC,
00150         eCharacterReference,
00151         eCharacterLeftFloor,
00152         eCharacterRightFloor,
00153         eCharacterHipsTranslation,
00154         eCharacterProps0,
00155         eCharacterProps1,
00156         eCharacterProps2,
00157         eCharacterProps3,
00158         eCharacterProps4,
00159 
00160         // Added in 4.0x as patch.
00161 
00162         eCharacterGameModeParentLeftHipRoll,
00163         eCharacterGameModeParentLeftKnee,
00164         eCharacterGameModeParentLeftKneeRoll,
00165         eCharacterGameModeParentRightHipRoll,
00166         eCharacterGameModeParentRightKnee,
00167         eCharacterGameModeParentRightKneeRoll,
00168         eCharacterGameModeParentLeftShoulderRoll,       
00169         eCharacterGameModeParentLeftElbow,      
00170         eCharacterGameModeParentLeftElbowRoll,  
00171         eCharacterGameModeParentRightShoulderRoll,
00172         eCharacterGameModeParentRightElbow,             
00173         eCharacterGameModeParentRightElbowRoll, 
00174 
00175 
00176         // Elements added for Dominus.
00177         // From this point, the enum doesn't have to be synchronized with the HumanIK library.
00178 
00179         eCharacterLeftHandFloor,
00180         eCharacterRightHandFloor,
00181 
00182         eCharacterLeftHand,
00183         eCharacterRightHand,
00184         
00185         eCharacterNeck1,
00186         eCharacterNeck2,
00187         eCharacterNeck3,
00188         eCharacterNeck4,
00189         eCharacterNeck5,
00190         eCharacterNeck6,
00191         eCharacterNeck7,
00192         eCharacterNeck8,
00193         eCharacterNeck9,
00194 
00195         eCharacterLeftInHandThumb,
00196         eCharacterLeftThumbD,
00197         
00198         eCharacterLeftInHandIndex,
00199         eCharacterLeftIndexD,
00200         
00201         eCharacterLeftInHandMiddle,
00202         eCharacterLeftMiddleD,
00203         
00204         eCharacterLeftInHandRing,
00205         eCharacterLeftRingD,
00206         
00207         eCharacterLeftInHandPinky,
00208         eCharacterLeftPinkyD,
00209 
00210         eCharacterLeftInHandExtraFinger,
00211         eCharacterLeftExtraFingerA,
00212         eCharacterLeftExtraFingerB,
00213         eCharacterLeftExtraFingerC,
00214         eCharacterLeftExtraFingerD,
00215 
00216         eCharacterRightInHandThumb,
00217         eCharacterRightThumbD,
00218         
00219         eCharacterRightInHandIndex,
00220         eCharacterRightIndexD,
00221         
00222         eCharacterRightInHandMiddle,
00223         eCharacterRightMiddleD,
00224         
00225         eCharacterRightInHandRing,
00226         eCharacterRightRingD,
00227         
00228         eCharacterRightInHandPinky,
00229         eCharacterRightPinkyD,
00230 
00231         eCharacterRightInHandExtraFinger,
00232         eCharacterRightExtraFingerA,
00233         eCharacterRightExtraFingerB,
00234         eCharacterRightExtraFingerC,
00235         eCharacterRightExtraFingerD,
00236 
00237         eCharacterLeftInFootThumb,
00238         eCharacterLeftFootThumbA,
00239         eCharacterLeftFootThumbB,
00240         eCharacterLeftFootThumbC,
00241         eCharacterLeftFootThumbD,
00242         eCharacterLeftInFootIndex,
00243         eCharacterLeftFootIndexA,
00244         eCharacterLeftFootIndexB,
00245         eCharacterLeftFootIndexC,
00246         eCharacterLeftFootIndexD,
00247         eCharacterLeftInFootMiddle,
00248         eCharacterLeftFootMiddleA,
00249         eCharacterLeftFootMiddleB,
00250         eCharacterLeftFootMiddleC,
00251         eCharacterLeftFootMiddleD,
00252         eCharacterLeftInFootRing,
00253         eCharacterLeftFootRingA,
00254         eCharacterLeftFootRingB,
00255         eCharacterLeftFootRingC,
00256         eCharacterLeftFootRingD,
00257         eCharacterLeftInFootPinky,
00258         eCharacterLeftFootPinkyA,
00259         eCharacterLeftFootPinkyB,
00260         eCharacterLeftFootPinkyC,
00261         eCharacterLeftFootPinkyD,
00262         eCharacterLeftInFootExtraFinger,
00263         eCharacterLeftFootExtraFingerA,
00264         eCharacterLeftFootExtraFingerB,
00265         eCharacterLeftFootExtraFingerC,
00266         eCharacterLeftFootExtraFingerD,
00267 
00268         eCharacterRightInFootThumb,
00269         eCharacterRightFootThumbA,
00270         eCharacterRightFootThumbB,
00271         eCharacterRightFootThumbC,
00272         eCharacterRightFootThumbD,
00273         eCharacterRightInFootIndex,
00274         eCharacterRightFootIndexA,
00275         eCharacterRightFootIndexB,
00276         eCharacterRightFootIndexC,
00277         eCharacterRightFootIndexD,
00278         eCharacterRightInFootMiddle,
00279         eCharacterRightFootMiddleA,
00280         eCharacterRightFootMiddleB,
00281         eCharacterRightFootMiddleC,
00282         eCharacterRightFootMiddleD,
00283         eCharacterRightInFootRing,
00284         eCharacterRightFootRingA,
00285         eCharacterRightFootRingB,
00286         eCharacterRightFootRingC,
00287         eCharacterRightFootRingD,
00288         eCharacterRightInFootPinky,
00289         eCharacterRightFootPinkyA,
00290         eCharacterRightFootPinkyB,
00291         eCharacterRightFootPinkyC,
00292         eCharacterRightFootPinkyD,
00293         eCharacterRightInFootExtraFinger,
00294         eCharacterRightFootExtraFingerA,
00295         eCharacterRightFootExtraFingerB,
00296         eCharacterRightFootExtraFingerC,
00297         eCharacterRightFootExtraFingerD,
00298 
00299         eCharacterLastNodeId
00300 } ECharacterNodeId;
00301 
00302 
00303 typedef enum 
00304 {
00305         eCharacterGroup_Base,
00306         eCharacterGroup_Auxiliary,
00307         eCharacterGroup_Spine,
00308         eCharacterGroup_Roll,
00309         eCharacterGroup_Special,
00310         eCharacterGroup_LeftHand,
00311         eCharacterGroup_RightHand,
00312         eCharacterGroup_Props,
00313         eCharacterGroup_GameModeParent,
00314 
00315         // Added for 4.5 
00316 
00317         eCharacterGroup_Neck,
00318         eCharacterGroup_LeftFoot,
00319         eCharacterGroup_RightFoot,
00320 
00321         // Tempo Bug #266854 >>>>>
00322         eCharacterGroup_FloorContact,
00323         // Tempo Bug #266854 <<<<<
00324 
00325         eLastCharacterGroupId
00326 } ECharacterGroupId;
00327 
00328 
00329 typedef enum 
00330 {
00331         eCharacterLink,
00332         eControlSetLink,
00333         eControlSetEffector,
00334         eControlSetEffectorAux
00335 } ECharacterLinkType;
00336 
00342 class KFBX_DLL KFbxCharacterLink
00343 {
00344 public:
00345 
00346         KFbxCharacterLink();
00347         KFbxCharacterLink(const KFbxCharacterLink& pCharacterLink);
00348         KFbxCharacterLink& operator=(const KFbxCharacterLink& pCharacterLink);
00349         void Reset();
00350 
00352         KFbxNode* mNode;
00353 
00356         KString mTemplateName;
00357 
00359         KFbxVector4 mOffsetT;
00361         KFbxVector4 mOffsetR;
00363         KFbxVector4 mOffsetS;
00365         KFbxVector4 mParentROffset;
00366 
00368         bool            mHasRotSpace;
00370         KFbxLimits  mRLimits;
00372         KFbxVector4 mPreRotation;
00374         KFbxVector4 mPostRotation;
00376         int                     mRotOrder;
00378         double          mAxisLen;
00379 
00380 
00382 //
00383 //  WARNING!
00384 //
00385 //      Anything beyond these lines may not be documented accurately and is 
00386 //      subject to change without notice.
00387 //
00389 
00390 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00391 
00392         KFbxProperty mPropertyLink;
00393         KFbxProperty mPropertyOffsetT;
00394         KFbxProperty mPropertyOffsetR;
00395         KFbxProperty mPropertyOffsetS;
00396         KFbxProperty mPropertyParentOffsetR;
00397         KFbxProperty mPropertyTemplateName;
00398 
00399 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00400 
00401 };
00402 
00415 class KFBX_DLL KFbxCharacter : public KFbxConstraint
00416 {
00417         KFBXOBJECT_DECLARE(KFbxCharacter,KFbxConstraint);
00418 
00419 public:
00420 
00427         void Reset();
00428 
00433         void SetInput(ECharacterInputType pInputType, KFbxObject* pInputObject = NULL);
00434 
00436         ECharacterInputType GetInputType() const;
00437 
00443         KFbxObject* GetInputObject() const;
00444 
00452         bool SetCharacterLink(ECharacterNodeId pCharacterNodeId, const KFbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
00453 
00459         bool GetCharacterLink(ECharacterNodeId pCharacterNodeId, KFbxCharacterLink* pCharacterLink = NULL) const;
00460 
00464         KFbxControlSet& GetControlSet() const;
00465 
00470         static int GetCharacterGroupCount(ECharacterGroupId pCharacterGroupId);
00471 
00477         static ECharacterNodeId GetCharacterGroupElementByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00478 
00479     
00485         static char* GetCharacterGroupNameByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00486 
00492         static int GetCharacterGroupVersionByIndex(ECharacterGroupId pCharacterGroupId, int pIndex);
00493 
00501         static bool FindCharacterGroupIndexByName(char* pName, bool pForceGroupId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00502 
00510         static bool GetCharacterGroupIndexByElement(ECharacterNodeId pCharacterNodeId, ECharacterGroupId& pCharacterGroupId, int& pIndex);
00511 
00518         static bool GetCharacterGroupVersionByElement(ECharacterNodeId pCharacterNodeId, int& pVersion);
00519 
00527         static bool GetCharacterNodeNameFromNodeId(ECharacterNodeId pCharacterNodeId, char*& pName);
00528 
00534         static bool GetCharacterNodeIdFromNodeName(char* pName, ECharacterNodeId& pCharacterNodeId);
00535 
00536         typedef enum 
00537         {
00538                 eINTERNAL_ERROR,
00539                 eERROR_COUNT
00540         } EError; 
00541         
00542         // KFbxConstraint Properties                            
00543         KFbxTypedProperty<fbxBool1>                             Active;
00544         KFbxTypedProperty<fbxBool1>                             Lock;
00545         KFbxTypedProperty<fbxDouble1>                           Weight;
00546 
00547         // KFbxCharacter Properties
00548         KFbxTypedProperty<fbxInteger1>                          PullIterationCount;
00549         KFbxTypedProperty<kCharacterPosture>                    Posture;
00550         KFbxTypedProperty<fbxBool1>                             ForceActorSpace;
00551         KFbxTypedProperty<fbxDouble1>                           ScaleCompensation;
00552         KFbxTypedProperty<kCharacterOffAutoUser>                ScaleCompensationMode;
00553         KFbxTypedProperty<fbxDouble1>                           HipsHeightCompensation;
00554         KFbxTypedProperty<kCharacterOffAutoUser>                HipsHeightCompensationMode;
00555         KFbxTypedProperty<fbxDouble1>                           AnkleHeightCompensation;
00556         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleHeightCompensationMode;
00557         KFbxTypedProperty<fbxDouble1>                           AnkleProximityCompensation;
00558         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleProximityCompensationMode;
00559         KFbxTypedProperty<fbxDouble1>                           MassCenterCompensation;
00560         KFbxTypedProperty<fbxBool1>                             ApplyLimits;
00561         KFbxTypedProperty<fbxDouble1>                           ChestReduction;
00562         KFbxTypedProperty<fbxDouble1>                           CollarReduction;
00563         KFbxTypedProperty<fbxDouble1>                           NeckReduction;
00564         KFbxTypedProperty<fbxDouble1>                           HeadReduction;
00565         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkle;
00566         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkle;
00567         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftKnee;
00568         KFbxTypedProperty<fbxDouble1>                           ReachActorRightKnee;
00569         KFbxTypedProperty<fbxDouble1>                           ReachActorChest;
00570         KFbxTypedProperty<fbxDouble1>                           ReachActorHead;
00571         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWrist;
00572         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWrist;
00573         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftElbow;
00574         KFbxTypedProperty<fbxDouble1>                           ReachActorRightElbow;
00575         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBase;
00576         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBase;
00577         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBase;
00578         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBase;
00579         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftFingerBaseRotation;
00580         KFbxTypedProperty<fbxDouble1>                           ReachActorRightFingerBaseRotation;
00581         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftToesBaseRotation;
00582         KFbxTypedProperty<fbxDouble1>                           ReachActorRightToesBaseRotation;
00583         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftAnkleRotation;
00584         KFbxTypedProperty<fbxDouble1>                           ReachActorRightAnkleRotation;
00585         KFbxTypedProperty<fbxDouble1>                           ReachActorHeadRotation;
00586         KFbxTypedProperty<fbxDouble1>                           ReachActorLeftWristRotation;
00587         KFbxTypedProperty<fbxDouble1>                           ReachActorRightWristRotation;
00588         KFbxTypedProperty<fbxDouble1>                           ReachActorChestRotation;
00589         KFbxTypedProperty<fbxDouble1>                           ReachActorLowerChestRotation;
00590         KFbxTypedProperty<fbxDouble3>                           HipsTOffset;
00591         KFbxTypedProperty<fbxDouble3>                           ChestTOffset;
00592         KFbxTypedProperty<kCharacterRollExtractionMode>         RollExtractionMode;
00593         KFbxTypedProperty<fbxDouble1>                           LeftUpLegRoll;
00594         KFbxTypedProperty<fbxBool1>                             LeftUpLegRollMode;
00595         KFbxTypedProperty<fbxDouble1>                           LeftLegRoll;
00596         KFbxTypedProperty<fbxBool1>                             LeftLegRollMode;
00597         KFbxTypedProperty<fbxDouble1>                           RightUpLegRoll;
00598         KFbxTypedProperty<fbxBool1>                             RightUpLegRollMode;
00599         KFbxTypedProperty<fbxDouble1>                           RightLegRoll;
00600         KFbxTypedProperty<fbxBool1>                             RightLegRollMode;
00601         KFbxTypedProperty<fbxDouble1>                           LeftArmRoll;
00602         KFbxTypedProperty<fbxBool1>                             LeftArmRollMode;
00603         KFbxTypedProperty<fbxDouble1>                           LeftForeArmRoll;
00604         KFbxTypedProperty<fbxBool1>                             LeftForeArmRollMode;
00605         KFbxTypedProperty<fbxDouble1>                           RightArmRoll;
00606         KFbxTypedProperty<fbxBool1>                             RightArmRollMode;
00607         KFbxTypedProperty<fbxDouble1>                           RightForeArmRoll;
00608         KFbxTypedProperty<fbxBool1>                             RightForeArmRollMode;
00609         KFbxTypedProperty<kCharacterContactBehaviour>           ContactBehaviour;
00610         KFbxTypedProperty<fbxBool1>                             FootFloorContact;
00611         KFbxTypedProperty<fbxBool1>                             FootAutomaticToes;
00612         KFbxTypedProperty<kCharacterFloorPivot>                 FootFloorPivot;
00613         KFbxTypedProperty<fbxDouble1>                           FootBottomToAnkle;
00614         KFbxTypedProperty<fbxDouble1>                           FootBackToAnkle;
00615         KFbxTypedProperty<fbxDouble1>                           FootMiddleToAnkle;
00616         KFbxTypedProperty<fbxDouble1>                           FootFrontToMiddle;
00617         KFbxTypedProperty<fbxDouble1>                           FootInToAnkle;
00618         KFbxTypedProperty<fbxDouble1>                           FootOutToAnkle;
00619         KFbxTypedProperty<fbxDouble1>                           FootContactSize;
00620         KFbxTypedProperty<fbxBool1>                             FootFingerContact;
00621         KFbxTypedProperty<kCharacterFootContactType>            FootContactType;
00622         KFbxTypedProperty<kCharacterFingerContactMode>          FootFingerContactMode;
00623         KFbxTypedProperty<fbxDouble1>                           FootContactStiffness;
00624         KFbxTypedProperty<fbxDouble1>                           FootFingerContactRollStiffness;
00625         KFbxTypedProperty<fbxBool1>                             HandFloorContact;
00626         KFbxTypedProperty<fbxBool1>                             HandAutomaticFingers;
00627         KFbxTypedProperty<kCharacterFloorPivot>                 HandFloorPivot;
00628         KFbxTypedProperty<fbxDouble1>                           HandBottomToWrist;
00629         KFbxTypedProperty<fbxDouble1>                           HandBackToWrist;
00630         KFbxTypedProperty<fbxDouble1>                           HandMiddleToWrist;
00631         KFbxTypedProperty<fbxDouble1>                           HandFrontToMiddle;
00632         KFbxTypedProperty<fbxDouble1>                           HandInToWrist;
00633         KFbxTypedProperty<fbxDouble1>                           HandOutToWrist;
00634         KFbxTypedProperty<fbxDouble1>                           HandContactSize;
00635         KFbxTypedProperty<fbxBool1>                             HandFingerContact;
00636         KFbxTypedProperty<kCharacterHandContactType>            HandContactType;
00637         KFbxTypedProperty<kCharacterFingerContactMode>          HandFingerContactMode;
00638         KFbxTypedProperty<fbxDouble1>                           HandContactStiffness;
00639         KFbxTypedProperty<fbxDouble1>                           HandFingerContactRollStiffness;
00640         KFbxTypedProperty<fbxDouble1>                           LeftHandThumbTip;
00641         KFbxTypedProperty<fbxDouble1>                           LeftHandIndexTip;
00642         KFbxTypedProperty<fbxDouble1>                           LeftHandMiddleTip;
00643         KFbxTypedProperty<fbxDouble1>                           LeftHandRingTip;
00644         KFbxTypedProperty<fbxDouble1>                           LeftHandPinkyTip;
00645         KFbxTypedProperty<fbxDouble1>                           LeftHandExtraFingerTip;
00646         KFbxTypedProperty<fbxDouble1>                           RightHandThumbTip;
00647         KFbxTypedProperty<fbxDouble1>                           RightHandIndexTip;
00648         KFbxTypedProperty<fbxDouble1>                           RightHandMiddleTip;
00649         KFbxTypedProperty<fbxDouble1>                           RightHandRingTip;
00650         KFbxTypedProperty<fbxDouble1>                           RightHandPinkyTip;
00651         KFbxTypedProperty<fbxDouble1>                           RightHandExtraFingerTip;
00652         KFbxTypedProperty<fbxDouble1>                           LeftFootThumbTip;
00653         KFbxTypedProperty<fbxDouble1>                           LeftFootIndexTip;
00654         KFbxTypedProperty<fbxDouble1>                           LeftFootMiddleTip;
00655         KFbxTypedProperty<fbxDouble1>                           LeftFootRingTip;
00656         KFbxTypedProperty<fbxDouble1>                           LeftFootPinkyTip;
00657         KFbxTypedProperty<fbxDouble1>                           LeftFootExtraFingerTip;
00658         KFbxTypedProperty<fbxDouble1>                           RightFootThumbTip;
00659         KFbxTypedProperty<fbxDouble1>                           RightFootIndexTip;
00660         KFbxTypedProperty<fbxDouble1>                           RightFootMiddleTip;
00661         KFbxTypedProperty<fbxDouble1>                           RightFootRingTip;
00662         KFbxTypedProperty<fbxDouble1>                           RightFootPinkyTip;
00663         KFbxTypedProperty<fbxDouble1>                           RightFootExtraFingerTip;
00664         KFbxTypedProperty<fbxBool1>                             FingerSolving;
00665         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftToeBase;
00666         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFoot;
00667         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftKnee;
00668         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightToeBase;
00669         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFoot;
00670         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightKnee;
00671         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftFingerBase;
00672         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftHand;
00673         KFbxTypedProperty<fbxDouble1>                           CtrlPullLeftElbow;
00674         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightFingerBase;
00675         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightHand;
00676         KFbxTypedProperty<fbxDouble1>                           CtrlPullRightElbow;
00677         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullLeftHand;
00678         KFbxTypedProperty<fbxDouble1>                           CtrlChestPullRightHand;
00679         KFbxTypedProperty<fbxDouble1>                           CtrlPullHead;
00680         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsPosition;
00681         KFbxTypedProperty<fbxDouble1>                           CtrlEnforceGravity;
00682         KFbxTypedProperty<fbxDouble1>                           CtrlResistHipsOrientation;
00683         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestPosition;
00684         KFbxTypedProperty<fbxDouble1>                           CtrlResistChestOrientation;
00685         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftCollar;
00686         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightCollar;
00687         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftKnee;
00688         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftKnee;
00689         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftKnee;
00690         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightKnee;
00691         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightKnee;
00692         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightKnee;
00693         KFbxTypedProperty<fbxDouble1>                           CtrlResistLeftElbow;
00694         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionLeftElbow;
00695         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorLeftElbow;
00696         KFbxTypedProperty<fbxDouble1>                           CtrlResistRightElbow;
00697         KFbxTypedProperty<fbxDouble1>                           CtrlResistMaximumExtensionRightElbow;
00698         KFbxTypedProperty<fbxDouble1>                           CtrlResistCompressionFactorRightElbow;
00699         KFbxTypedProperty<fbxDouble1>                           CtrlSpineStiffness;
00700         KFbxTypedProperty<fbxDouble1>                           CtrlNeckStiffness;
00701         KFbxTypedProperty<fbxBool1>                             MirrorMode;
00702         KFbxTypedProperty<fbxDouble1>                           ShoulderCorrection;
00703         KFbxTypedProperty<fbxBool1>                             LeftKneeKillPitch;
00704         KFbxTypedProperty<fbxBool1>                             RightKneeKillPitch;
00705         KFbxTypedProperty<fbxBool1>                             LeftElbowKillPitch;
00706         KFbxTypedProperty<fbxBool1>                             RightElbowKillPitch;
00707         KFbxTypedProperty<kCharacterHipsTranslationMode>        HipsTranslationMode;
00708         KFbxTypedProperty<fbxBool1>                             WriteReference;
00709         KFbxTypedProperty<fbxBool1>                             SyncMode;
00710         KFbxTypedProperty<fbxDouble1>                           Damping;
00711         KFbxTypedProperty<fbxDouble1>                           OrientationDamping;
00712         KFbxTypedProperty<kCharacterOffAutoUser>                OrientationDampingMode;
00713         KFbxTypedProperty<fbxDouble1>                           DisplacementDamping;
00714         KFbxTypedProperty<kCharacterOffAutoUser>                DisplacementDampingMode;
00715         KFbxTypedProperty<fbxDouble1>                           DisplacementMemory;
00716         KFbxTypedProperty<kCharacterAutoUser>                   DisplacementMemoryMode;
00717         KFbxTypedProperty<fbxDouble1>                           HipsDisplacementDamping;
00718         KFbxTypedProperty<kCharacterAutoUser>                   HipsDisplacementDampingMode;
00719         KFbxTypedProperty<fbxDouble1>                           AnkleDisplacementDamping;
00720         KFbxTypedProperty<kCharacterAutoUser>                   AnkleDisplacementDampingMode;
00721         KFbxTypedProperty<fbxDouble1>                           WristDisplacementDamping;
00722         KFbxTypedProperty<kCharacterAutoUser>                   WristDisplacementDampingMode;
00723         KFbxTypedProperty<fbxDouble1>                           Stabilization;
00724         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationTime;
00725         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationTimeMode;
00726         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationPerimeter;
00727         KFbxTypedProperty<kCharacterAutoUser>                   AnkleStabilizationPerimeterMode;
00728         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationAngularPerimeter;
00729         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationAngularPerimeterMode;
00730         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationFloorProximity;
00731         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationFloorProximityMode;
00732         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationDamping;
00733         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationDampingMode;
00734         KFbxTypedProperty<fbxDouble1>                           AnkleStabilizationRecoveryTime;
00735         KFbxTypedProperty<kCharacterOffAutoUser>                AnkleStabilizationRecoveryTimeMode;
00736 
00737     KFbxTypedProperty<fbxReference*>                    SourceObject;
00738     KFbxTypedProperty<fbxReference*>                    DestinationObject;
00739     KFbxTypedProperty<fbxReference*>                    Actor;
00740     KFbxTypedProperty<fbxReference*>                    Character;
00741     KFbxTypedProperty<fbxReference*>                    ControlSet;
00742 
00743     KFbxTypedProperty<fbxBool1>                         Characterize;
00744     KFbxTypedProperty<fbxBool1>                         LockXForm;
00745     KFbxTypedProperty<fbxBool1>                         LockPick;
00746     
00748 //
00749 //  WARNING!
00750 //
00751 //      Anything beyond these lines may not be documented accurately and is 
00752 //      subject to change without notice.
00753 //
00755 
00756 #ifndef DOXYGEN_SHOULD_SKIP_THIS        
00757 
00758         // Clone
00759         virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
00760 
00761 protected:
00762         KFbxCharacter& operator=(KFbxCharacter const& pCharacter); 
00763 public:
00764         KFbxCharacter(KFbxSdkManager& pManager, char const* pName);
00765 
00766         virtual void Construct(const KFbxCharacter* pFrom);
00767         virtual void Destruct(bool pRecursive, bool pDependents);
00768 
00769         virtual EConstraintType GetConstraintType();
00770         virtual KString                 GetTypeName() const;
00771 
00772         virtual KStringList     GetTypeFlags() const;
00773 
00774         // KFbxTakeNodeContainer virtual functions
00775         virtual void AddChannels(KFbxTakeNode *pTakeNode);
00776 
00777         virtual bool    ConnecNotify (KFbxConnectEvent const &pEvent);
00778 
00779         // Used when bridging to HumanIK Middleware
00780         const void GetKFbxCharacterPropertyFromHIKProperty(     char* &pKFbxCharacterPropertyName, 
00781                                                                 char* &pKFbxCharacterPropertyModeName,  
00782                                                                 kCharacterPropertyUnit &pUnit,
00783                                                                 int &pPropertyIndex,
00784                                                                 const char* pHIKPropertyName) const;
00785         
00786         const void GetHIKPropertyFromKFbxCharacterProperty(     char* &pHIKPropertyName,                                                                                                                
00787                                                                 kCharacterPropertyUnit &pUnit,
00788                                                                 const char* pKFbxCharacterPropertyName) const ;
00789 
00790         const void GetPropertyInfo(     char* &pKFbxCharacterPropertyName, 
00791                                                                 char* &pKFbxCharacterPropertyModeName,  
00792                                                                 kCharacterPropertyUnit &pUnit,
00793                                                                 int &pPropertyIndex,
00794                                                                 char* &pHIKPropertyName,
00795                                                                 int pIndex) const;
00796         int GetPropertyInfoCount();
00797 
00798         KError                  mError;
00799 
00800         KString                 mName;  
00801         KFbxCharacterLink       mCharacterLink[eCharacterLastNodeId];
00802         KFbxControlSet*         mControlSet;
00803         
00804         friend class KFbxScene;
00805         friend class KFbxNode;
00806 
00807 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00808 
00809 protected:
00810         
00811 };
00812 
00813 typedef KFbxCharacter* HKFbxCharacter;
00814 
00815 inline EFbxType FbxTypeOf( kCharacterOffAutoUser const &pItem )             { return eENUM; }
00816 inline EFbxType FbxTypeOf( kCharacterAutoUser const &pItem )                { return eENUM; }
00817 inline EFbxType FbxTypeOf( kCharacterPosture const &pItem )                 { return eENUM; }
00818 inline EFbxType FbxTypeOf( kCharacterFloorPivot const &pItem )              { return eENUM; }
00819 inline EFbxType FbxTypeOf( kCharacterRollExtractionMode const &pItem )      { return eENUM; }
00820 inline EFbxType FbxTypeOf( kCharacterHipsTranslationMode const &pItem )     { return eENUM; }
00821 inline EFbxType FbxTypeOf( kCharacterFootContactType const &pItem )         { return eENUM; }
00822 inline EFbxType FbxTypeOf( kCharacterHandContactType const &pItem )         { return eENUM; }
00823 inline EFbxType FbxTypeOf( kCharacterFingerContactMode const &pItem )       { return eENUM; }
00824 inline EFbxType FbxTypeOf( kCharacterContactBehaviour const &pItem )        { return eENUM; }
00825 
00826 #include <fbxfilesdk/fbxfilesdk_nsend.h>
00827 
00828 #endif // FBXFILESDK_KFBXCHARACTER_KFBXCHARACTER_H
00829