123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971 |
- /****************************************************************************************
-
- Copyright (C) 2015 Autodesk, Inc.
- All rights reserved.
-
- Use of this software is subject to the terms of the Autodesk license agreement
- provided at the time of installation or download, or which otherwise accompanies
- this software in either electronic or hard copy form.
-
- ****************************************************************************************/
- //! \file fbxcharacter.h
- #ifndef _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
- #define _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_
- #include <fbxsdk/fbxsdk_def.h>
- #include <fbxsdk/core/math/fbxtransforms.h>
- #include <fbxsdk/scene/constraint/fbxconstraint.h>
- #include <fbxsdk/fbxsdk_nsbegin.h>
- class FbxControlSet;
- /** \class FbxCharacterLink
- *
- * \brief This class represents a link between a given FBX node and the associated node in the character hierarchy. It also contains
- * the transform matrix (offset) for the linked character's node.
- */
- class FBXSDK_DLL FbxCharacterLink
- {
- public:
- /** \enum EType Character link type */
- enum EType
- {
- eCharacterLink,
- eControlSetLink,
- eControlSetEffector,
- eControlSetEffectorAux
- };
- /** Default Constructor. */
- FbxCharacterLink();
- /** Copy Constructor. */
- FbxCharacterLink(const FbxCharacterLink& pCharacterLink);
- /** Assignment operation
- * \param pCharacterLink Another FbxCharacterLink object assigned to this one.
- */
- FbxCharacterLink& operator=(const FbxCharacterLink& pCharacterLink);
- /** Reset to default values. */
- void Reset();
- FbxNode* mNode; //! The character's node in hierarchy linked to this character link.
- FbxString mTemplateName; //! A template name is a naming convention that is used to automatically map the nodes of other skeletons that use the same naming convention.
- FbxVector4 mOffsetT; //! Get offset position of this character link.
- FbxVector4 mOffsetR; //! Get offset rotation of this character link.
- FbxVector4 mOffsetS; //! Get offset scale of this character link.
- FbxVector4 mParentROffset; //! Get the parent offset rotation of this character link
- bool mHasRotSpace; //! \c true if this character link has a defined rotation space
- FbxLimits mRLimits; //! Get the rotation limits of this character link
- FbxVector4 mPreRotation; //! Get the PreRotation of this character link
- FbxVector4 mPostRotation; //! Get the PostRotation of this character link
- int mRotOrder; //! Get the rotation order of this character link
- double mAxisLen; //! Get the axis length of this character link
- /*****************************************************************************************************************************
- ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
- *****************************************************************************************************************************/
- #ifndef DOXYGEN_SHOULD_SKIP_THIS
- FbxProperty mPropertyLink;
- FbxProperty mPropertyOffsetT;
- FbxProperty mPropertyOffsetR;
- FbxProperty mPropertyOffsetS;
- FbxProperty mPropertyParentOffsetR;
- FbxProperty mPropertyTemplateName;
- #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
- };
- /** A Character is a person or animal with pre-defined skeleton system. The skeleton system is composed of multiple named node (skeleton).
- * This class contains all methods to setup an exported character or query information on an imported character.
- * This class also contains some methods for manipulating the FbxCharacterLink, FbxControlSet
- *
- * The most important part of a FbxCharacter is the FbxCharacterLink. There is one FbxCharacterLink for each characterized node.
- * For more information see FbxCharacterLink class documentation.
- *
- * \see FbxCharacterLink, FbxControlSet
- */
- class FBXSDK_DLL FbxCharacter : public FbxConstraint
- {
- FBXSDK_OBJECT_DECLARE(FbxCharacter, FbxConstraint);
- public:
- /** \enum EInputType Character input type.
- * - \e eInputActor Not supported.
- * - \e eInputCharacter The character's input is another character.
- * - \e eInputMarkerSet The character's input is a control rig.
- * - \e eOutputMarkerSet Not supported.
- * - \e eInputStancePose The character's input is the stance pose.
- */
- enum EInputType
- {
- eInputActor,
- eInputCharacter,
- eInputMarkerSet,
- eOutputMarkerSet,
- eInputStancePose
- };
- /** \enum EGroupId Define ID for character groups that contains multiple character nodes. */
- enum EGroupId
- {
- eGroupBase,
- eGroupAuxiliary,
- eGroupSpine,
- eGroupRoll,
- eGroupSpecial,
- eGroupLeftHand,
- eGroupRightHand,
- eGroupProps,
- eGroupGameModeParent,
- eGroupNeck,
- eGroupLeftFoot,
- eGroupRightFoot,
- eGroupFloorContact,
- eGroupIdCount
- };
- /** \enum ENodeId Define ID for each character node.
- */
- enum ENodeId
- {
- eHips,
- eLeftHip,
- eLeftKnee,
- eLeftAnkle,
- eLeftFoot,
- eRightHip,
- eRightKnee,
- eRightAnkle,
- eRightFoot,
- eWaist,
- eChest,
- eLeftCollar,
- eLeftShoulder,
- eLeftElbow,
- eLeftWrist,
- eRightCollar,
- eRightShoulder,
- eRightElbow,
- eRightWrist,
- eNeck,
- eHead,
- eLeftHipRoll,
- eLeftKneeRoll,
- eRightHipRoll,
- eRightKneeRoll,
- eLeftShoulderRoll,
- eLeftElbowRoll,
- eRightShoulderRoll,
- eRightElbowRoll,
- eSpine2,
- eSpine3,
- eSpine4,
- eSpine5,
- eSpine6,
- eSpine7,
- eSpine8,
- eSpine9,
- eLeftThumbA,
- eLeftThumbB,
- eLeftThumbC,
- eLeftIndexA,
- eLeftIndexB,
- eLeftIndexC,
- eLeftMiddleA,
- eLeftMiddleB,
- eLeftMiddleC,
- eLeftRingA,
- eLeftRingB,
- eLeftRingC,
- eLeftPinkyA,
- eLeftPinkyB,
- eLeftPinkyC,
- eRightThumbA,
- eRightThumbB,
- eRightThumbC,
- eRightIndexA,
- eRightIndexB,
- eRightIndexC,
- eRightMiddleA,
- eRightMiddleB,
- eRightMiddleC,
- eRightRingA,
- eRightRingB,
- eRightRingC,
- eRightPinkyA,
- eRightPinkyB,
- eRightPinkyC,
- eReference,
- eLeftFloor,
- eRightFloor,
- eHipsTranslation,
- eProps0,
- eProps1,
- eProps2,
- eProps3,
- eProps4,
- eGameModeParentLeftHipRoll,
- eGameModeParentLeftKnee,
- eGameModeParentLeftKneeRoll,
- eGameModeParentRightHipRoll,
- eGameModeParentRightKnee,
- eGameModeParentRightKneeRoll,
- eGameModeParentLeftShoulderRoll,
- eGameModeParentLeftElbow,
- eGameModeParentLeftElbowRoll,
- eGameModeParentRightShoulderRoll,
- eGameModeParentRightElbow,
- eGameModeParentRightElbowRoll,
- eLeftUpLegRoll,
- eLeftLegRoll,
- eRightUpLegRoll,
- eRightLegRoll,
- eLeftArmRoll,
- eLeftForeArmRoll,
- eRightArmRoll,
- eRightForeArmRoll,
- eLeftHandFloor,
- eRightHandFloor,
- eLeftHand,
- eRightHand,
- eNeck1,
- eNeck2,
- eNeck3,
- eNeck4,
- eNeck5,
- eNeck6,
- eNeck7,
- eNeck8,
- eNeck9,
- eLeftInHandThumb,
- eLeftThumbD,
- eLeftInHandIndex,
- eLeftIndexD,
- eLeftInHandMiddle,
- eLeftMiddleD,
- eLeftInHandRing,
- eLeftRingD,
- eLeftInHandPinky,
- eLeftPinkyD,
- eLeftInHandExtraFinger,
- eLeftExtraFingerA,
- eLeftExtraFingerB,
- eLeftExtraFingerC,
- eLeftExtraFingerD,
- eRightInHandThumb,
- eRightThumbD,
- eRightInHandIndex,
- eRightIndexD,
- eRightInHandMiddle,
- eRightMiddleD,
- eRightInHandRing,
- eRightRingD,
- eRightInHandPinky,
- eRightPinkyD,
- eRightInHandExtraFinger,
- eRightExtraFingerA,
- eRightExtraFingerB,
- eRightExtraFingerC,
- eRightExtraFingerD,
- eLeftInFootThumb,
- eLeftFootThumbA,
- eLeftFootThumbB,
- eLeftFootThumbC,
- eLeftFootThumbD,
- eLeftInFootIndex,
- eLeftFootIndexA,
- eLeftFootIndexB,
- eLeftFootIndexC,
- eLeftFootIndexD,
- eLeftInFootMiddle,
- eLeftFootMiddleA,
- eLeftFootMiddleB,
- eLeftFootMiddleC,
- eLeftFootMiddleD,
- eLeftInFootRing,
- eLeftFootRingA,
- eLeftFootRingB,
- eLeftFootRingC,
- eLeftFootRingD,
- eLeftInFootPinky,
- eLeftFootPinkyA,
- eLeftFootPinkyB,
- eLeftFootPinkyC,
- eLeftFootPinkyD,
- eLeftInFootExtraFinger,
- eLeftFootExtraFingerA,
- eLeftFootExtraFingerB,
- eLeftFootExtraFingerC,
- eLeftFootExtraFingerD,
- eRightInFootThumb,
- eRightFootThumbA,
- eRightFootThumbB,
- eRightFootThumbC,
- eRightFootThumbD,
- eRightInFootIndex,
- eRightFootIndexA,
- eRightFootIndexB,
- eRightFootIndexC,
- eRightFootIndexD,
- eRightInFootMiddle,
- eRightFootMiddleA,
- eRightFootMiddleB,
- eRightFootMiddleC,
- eRightFootMiddleD,
- eRightInFootRing,
- eRightFootRingA,
- eRightFootRingB,
- eRightFootRingC,
- eRightFootRingD,
- eRightInFootPinky,
- eRightFootPinkyA,
- eRightFootPinkyB,
- eRightFootPinkyC,
- eRightFootPinkyD,
- eRightInFootExtraFinger,
- eRightFootExtraFingerA,
- eRightFootExtraFingerB,
- eRightFootExtraFingerC,
- eRightFootExtraFingerD,
- eLeftCollarExtra,
- eRightCollarExtra,
- eLeafLeftHipRoll1,
- eLeafLeftKneeRoll1,
- eLeafRightHipRoll1,
- eLeafRightKneeRoll1,
- eLeafLeftShoulderRoll1,
- eLeafLeftElbowRoll1,
- eLeafRightShoulderRoll1,
- eLeafRightElbowRoll1,
- eLeafLeftHipRoll2,
- eLeafLeftKneeRoll2,
- eLeafRightHipRoll2,
- eLeafRightKneeRoll2,
- eLeafLeftShoulderRoll2,
- eLeafLeftElbowRoll2,
- eLeafRightShoulderRoll2,
- eLeafRightElbowRoll2,
- eLeafLeftHipRoll3,
- eLeafLeftKneeRoll3,
- eLeafRightHipRoll3,
- eLeafRightKneeRoll3,
- eLeafLeftShoulderRoll3,
- eLeafLeftElbowRoll3,
- eLeafRightShoulderRoll3,
- eLeafRightElbowRoll3,
- eLeafLeftHipRoll4,
- eLeafLeftKneeRoll4,
- eLeafRightHipRoll4,
- eLeafRightKneeRoll4,
- eLeafLeftShoulderRoll4,
- eLeafLeftElbowRoll4,
- eLeafRightShoulderRoll4,
- eLeafRightElbowRoll4,
- eLeafLeftHipRoll5,
- eLeafLeftKneeRoll5,
- eLeafRightHipRoll5,
- eLeafRightKneeRoll5,
- eLeafLeftShoulderRoll5,
- eLeafLeftElbowRoll5,
- eLeafRightShoulderRoll5,
- eLeafRightElbowRoll5,
- eNodeIdCount,
- eNodeIdInvalid=-1
- };
- enum EOffAutoUser
- {
- eParamModeOff,
- eParamModeAuto,
- eParamModeUser
- };
- enum EAutoUser
- {
- eParamModeAuto2,
- eParamModeUser2
- };
- enum EPostureMode
- {
- ePostureBiped,
- ePostureQuadriped,
- ePostureCount
- };
- enum EFloorPivot
- {
- eFloorPivotAuto,
- eFloorPivotAnkle,
- eFloorPivotToes,
- eFloorPivotCount
- };
- enum ERollExtractionMode
- {
- eRelativeRollExtraction,
- eAbsoluteRollExtraction,
- eRollExtractionTypeCount
- };
- enum EHipsTranslationMode
- {
- eHipsTranslationWorldRigid,
- eHipsTranslationBodyRigid,
- eHipsTranslationTypeCount
- };
- enum EFootContactType
- {
- eFootTypeNormal,
- eFootTypeAnkle,
- eFootTypeToeBase,
- eFootTypeHoof,
- eFootContactModeCount
- };
- enum EHandContactType
- {
- eHandTypeNormal,
- eHandTypeWrist,
- eHandTypeFingerBase,
- eHandTypeHoof,
- eHandContactModeCount
- };
- enum EFingerContactMode
- {
- eFingerContactModeSticky,
- eFingerContactModeSpread,
- eFingerContactModeStickySpread,
- eFingerContactModeCount
- };
- enum EContactBehaviour
- {
- eContactNeverSync,
- eContactSyncOnKey,
- eContactAlwaysSync,
- eContactBehaviorCount
- };
- enum EPropertyUnit
- {
- ePropertyNoUnit,
- ePropertyPercent,
- ePropertySecond,
- ePropertyCentimeter,
- ePropertyDegree,
- ePropertyEnum,
- ePropertyReal
- };
- enum EErrorCode
- {
- eInternalError,
- eErrorCount
- };
- /** Reset to default values.
- * - Input type will be set to eInputStancePose.
- * - Input object will be set to NULL.
- * - Each Character link will be reset.
- * - The control set will be reset.
- */
- void Reset();
- /** Set input type and index.
- * \param pInputType Input type.
- * \param pInputObject Pointer to input character if input type equals eInputCharacter, otherwise \c NULL.
- */
- void SetInput(EInputType pInputType, FbxObject* pInputObject = NULL);
- //! Get input type.
- EInputType GetInputType() const;
- /** Get input actor or character.
- * \return Pointer or \c Null, depending on the input type.
- * - If the input type is set to eInputCharacter. The returned pointer can be casted to a pointer of type FbxCharacter.
- * - \c Null pointer if the input object has not been set, or if the input type is not set to eInputCharacter.
- */
- FbxObject* GetInputObject() const;
- /** Associate a character link to a given character node ID. If a character link already exists for this character node ID,
- * the character link will be removed.
- * \param pCharacterNodeId Character node ID.
- * \param pCharacterLink Character link.
- * \param pUpdateObjectList Set to \c true to update the object list (default value).
- * \return \c true if successful, \c false otherwise.
- */
- bool SetCharacterLink(ENodeId pCharacterNodeId, const FbxCharacterLink& pCharacterLink, bool pUpdateObjectList = true);
- /** Get a character link associated with a given character node ID.
- * \param pCharacterNodeId ID of character node requested.
- * \param pCharacterLink Optional pointer to receive the character link if function succeeds.
- * \return \c true if successful, \c false otherwise.
- */
- bool GetCharacterLink(ENodeId pCharacterNodeId, FbxCharacterLink* pCharacterLink = NULL) const;
- /** Get control set associated with the character.
- * \return Return the control set associated with the character.
- */
- FbxControlSet& GetControlSet() const;
- /** Get number of elements in a given character group.
- * \param pCharacterGroupId Character group ID.
- * \return The number of elements in the pCharacterGroupId character group.
- */
- static int GetCharacterGroupCount(EGroupId pCharacterGroupId);
- /** Get character node ID of an element in a given character group.
- * \param pCharacterGroupId Character group ID.
- * \param pIndex Character index ID.
- * \return Character node ID.
- */
- static ENodeId GetCharacterGroupElementByIndex(EGroupId pCharacterGroupId, int pIndex);
- /** Get character node name of an element in a given character group.
- * \param pCharacterGroupId Character group ID.
- * \param pIndex Character index ID.
- * \return Character node name.
- */
- static char* GetCharacterGroupNameByIndex(EGroupId pCharacterGroupId, int pIndex);
- /** Get character node version of an element in a given character group.
- * \param pCharacterGroupId Character group ID.
- * \param pIndex Character index ID.
- * \return Character node version.
- */
- static int GetCharacterGroupVersionByIndex(EGroupId pCharacterGroupId, int pIndex);
- /** Find the character group index associated with a given character node name.
- * \param pName Character node name.
- * \param pForceGroupId Set to \c true to force the character group ID.
- * \param pCharacterGroupId Receives character group ID.
- * \param pIndex Receives character index ID.
- * \return \c true if successful, otherwise \c false.
- */
- static bool FindCharacterGroupIndexByName(const char* pName, bool pForceGroupId, EGroupId& pCharacterGroupId, int& pIndex);
- /** Get character node group and index of a given character node ID.
- * \param pCharacterNodeId Character node ID.
- * \param pCharacterGroupId if the Character node ID is found, the method returns the group ID through this parameter
- * \param pIndex if the Character node ID is found, the method returns the index through this parameter
- * \remarks Only works for a character node ID that is part of a group.
- * \return \c true if successful, \c false otherwise.
- */
- static bool GetCharacterGroupIndexByElement(ENodeId pCharacterNodeId, EGroupId& pCharacterGroupId, int& pIndex);
- /** Get character node version of a given character node ID.
- * \param pCharacterNodeId Character node ID to get version.
- * \param pVersion if the node ID is found, the method returns the version through this parameter
- * \remarks Only works for a character node ID is part of a group.
- * \return \c true if successful, \c false otherwise.
- */
- static bool GetCharacterGroupVersionByElement(ENodeId pCharacterNodeId, int& pVersion);
- /** Get character node name associated with a given character node ID.
- * \param pCharacterNodeId Character node ID to get name.
- * \param pName if the node ID is found, the method returns the node name through this parameter
- * Since the Pointer points to internal data, it is not necessary to allocate a string buffer
- * before calling this function.
- * \return \c true if a name exists for the given node ID.
- */
- static bool GetCharacterNodeNameFromNodeId(ENodeId pCharacterNodeId, char*& pName);
- /** Get the character node ID associated with a given character node name.
- * \param pName Character node name to get node ID.
- * \param pCharacterNodeId if the node name is found, this method returns the node ID through this parameter
- * \return \c true if a node ID exists for the given node name.
- */
- static bool GetCharacterNodeIdFromNodeName(const char* pName, ENodeId& pCharacterNodeId);
-
- // FbxCharacter Properties
- FbxPropertyT<FbxInt> PullIterationCount;
- FbxPropertyT<EPostureMode> Posture;
- FbxPropertyT<FbxBool> ForceActorSpace;
- FbxPropertyT<FbxDouble> ScaleCompensation;
- FbxPropertyT<EOffAutoUser> ScaleCompensationMode;
- FbxPropertyT<FbxDouble> HipsHeightCompensation;
- FbxPropertyT<EOffAutoUser> HipsHeightCompensationMode;
- FbxPropertyT<FbxDouble> AnkleHeightCompensation;
- FbxPropertyT<EOffAutoUser> AnkleHeightCompensationMode;
- FbxPropertyT<FbxDouble> AnkleProximityCompensation;
- FbxPropertyT<EOffAutoUser> AnkleProximityCompensationMode;
- FbxPropertyT<FbxDouble> MassCenterCompensation;
- FbxPropertyT<FbxBool> ApplyLimits;
- FbxPropertyT<FbxDouble> ChestReduction;
- FbxPropertyT<FbxDouble> CollarReduction;
- FbxPropertyT<FbxDouble> NeckReduction;
- FbxPropertyT<FbxDouble> HeadReduction;
- FbxPropertyT<FbxDouble> ReachActorLeftAnkle;
- FbxPropertyT<FbxDouble> ReachActorRightAnkle;
- FbxPropertyT<FbxDouble> ReachActorLeftKnee;
- FbxPropertyT<FbxDouble> ReachActorRightKnee;
- FbxPropertyT<FbxDouble> ReachActorChest;
- FbxPropertyT<FbxDouble> ReachActorHead;
- FbxPropertyT<FbxDouble> ReachActorLeftWrist;
- FbxPropertyT<FbxDouble> ReachActorRightWrist;
- FbxPropertyT<FbxDouble> ReachActorLeftElbow;
- FbxPropertyT<FbxDouble> ReachActorRightElbow;
- FbxPropertyT<FbxDouble> ReachActorLeftFingerBase;
- FbxPropertyT<FbxDouble> ReachActorRightFingerBase;
- FbxPropertyT<FbxDouble> ReachActorLeftToesBase;
- FbxPropertyT<FbxDouble> ReachActorRightToesBase;
- FbxPropertyT<FbxDouble> ReachActorLeftFingerBaseRotation;
- FbxPropertyT<FbxDouble> ReachActorRightFingerBaseRotation;
- FbxPropertyT<FbxDouble> ReachActorLeftToesBaseRotation;
- FbxPropertyT<FbxDouble> ReachActorRightToesBaseRotation;
- FbxPropertyT<FbxDouble> ReachActorLeftAnkleRotation;
- FbxPropertyT<FbxDouble> ReachActorRightAnkleRotation;
- FbxPropertyT<FbxDouble> ReachActorHeadRotation;
- FbxPropertyT<FbxDouble> ReachActorLeftWristRotation;
- FbxPropertyT<FbxDouble> ReachActorRightWristRotation;
- FbxPropertyT<FbxDouble> ReachActorChestRotation;
- FbxPropertyT<FbxDouble> ReachActorLowerChestRotation;
- FbxPropertyT<FbxDouble3> HipsTOffset;
- FbxPropertyT<FbxDouble3> ChestTOffset;
- FbxPropertyT<ERollExtractionMode> RollExtractionMode;
- FbxPropertyT<FbxDouble> LeftUpLegRoll;
- FbxPropertyT<FbxBool> LeftUpLegRollMode;
- FbxPropertyT<FbxDouble> LeftLegRoll;
- FbxPropertyT<FbxBool> LeftLegRollMode;
- FbxPropertyT<FbxDouble> RightUpLegRoll;
- FbxPropertyT<FbxBool> RightUpLegRollMode;
- FbxPropertyT<FbxDouble> RightLegRoll;
- FbxPropertyT<FbxBool> RightLegRollMode;
- FbxPropertyT<FbxDouble> LeftArmRoll;
- FbxPropertyT<FbxBool> LeftArmRollMode;
- FbxPropertyT<FbxDouble> LeftForeArmRoll;
- FbxPropertyT<FbxBool> LeftForeArmRollMode;
- FbxPropertyT<FbxDouble> RightArmRoll;
- FbxPropertyT<FbxBool> RightArmRollMode;
- FbxPropertyT<FbxDouble> RightForeArmRoll;
- FbxPropertyT<FbxBool> RightForeArmRollMode;
- FbxPropertyT<FbxDouble> LeftUpLegRollEx;
- FbxPropertyT<FbxBool> LeftUpLegRollExMode;
- FbxPropertyT<FbxDouble> LeftLegRollEx;
- FbxPropertyT<FbxBool> LeftLegRollExMode;
- FbxPropertyT<FbxDouble> RightUpLegRollEx;
- FbxPropertyT<FbxBool> RightUpLegRollExMode;
- FbxPropertyT<FbxDouble> RightLegRollEx;
- FbxPropertyT<FbxBool> RightLegRollExMode;
- FbxPropertyT<FbxDouble> LeftArmRollEx;
- FbxPropertyT<FbxBool> LeftArmRollExMode;
- FbxPropertyT<FbxDouble> LeftForeArmRollEx;
- FbxPropertyT<FbxBool> LeftForeArmRollExMode;
- FbxPropertyT<FbxDouble> RightArmRollEx;
- FbxPropertyT<FbxBool> RightArmRollExMode;
- FbxPropertyT<FbxDouble> RightForeArmExRoll;
- FbxPropertyT<FbxBool> RightForeArmRollExMode;
- FbxPropertyT<EContactBehaviour> ContactBehaviour;
- FbxPropertyT<FbxBool> FootFloorContact;
- FbxPropertyT<FbxBool> FootAutomaticToes;
- FbxPropertyT<EFloorPivot> FootFloorPivot;
- FbxPropertyT<FbxDouble> FootBottomToAnkle;
- FbxPropertyT<FbxDouble> FootBackToAnkle;
- FbxPropertyT<FbxDouble> FootMiddleToAnkle;
- FbxPropertyT<FbxDouble> FootFrontToMiddle;
- FbxPropertyT<FbxDouble> FootInToAnkle;
- FbxPropertyT<FbxDouble> FootOutToAnkle;
- FbxPropertyT<FbxDouble> FootContactSize;
- FbxPropertyT<FbxBool> FootFingerContact;
- FbxPropertyT<EFootContactType> FootContactType;
- FbxPropertyT<EFingerContactMode> FootFingerContactMode;
- FbxPropertyT<FbxDouble> FootContactStiffness;
- FbxPropertyT<FbxDouble> FootFingerContactRollStiffness;
- FbxPropertyT<FbxBool> HandFloorContact;
- FbxPropertyT<FbxBool> HandAutomaticFingers;
- FbxPropertyT<EFloorPivot> HandFloorPivot;
- FbxPropertyT<FbxDouble> HandBottomToWrist;
- FbxPropertyT<FbxDouble> HandBackToWrist;
- FbxPropertyT<FbxDouble> HandMiddleToWrist;
- FbxPropertyT<FbxDouble> HandFrontToMiddle;
- FbxPropertyT<FbxDouble> HandInToWrist;
- FbxPropertyT<FbxDouble> HandOutToWrist;
- FbxPropertyT<FbxDouble> HandContactSize;
- FbxPropertyT<FbxBool> HandFingerContact;
- FbxPropertyT<EHandContactType> HandContactType;
- FbxPropertyT<EFingerContactMode> HandFingerContactMode;
- FbxPropertyT<FbxDouble> HandContactStiffness;
- FbxPropertyT<FbxDouble> HandFingerContactRollStiffness;
- FbxPropertyT<FbxDouble> LeftHandThumbTip;
- FbxPropertyT<FbxDouble> LeftHandIndexTip;
- FbxPropertyT<FbxDouble> LeftHandMiddleTip;
- FbxPropertyT<FbxDouble> LeftHandRingTip;
- FbxPropertyT<FbxDouble> LeftHandPinkyTip;
- FbxPropertyT<FbxDouble> LeftHandExtraFingerTip;
- FbxPropertyT<FbxDouble> RightHandThumbTip;
- FbxPropertyT<FbxDouble> RightHandIndexTip;
- FbxPropertyT<FbxDouble> RightHandMiddleTip;
- FbxPropertyT<FbxDouble> RightHandRingTip;
- FbxPropertyT<FbxDouble> RightHandPinkyTip;
- FbxPropertyT<FbxDouble> RightHandExtraFingerTip;
- FbxPropertyT<FbxDouble> LeftFootThumbTip;
- FbxPropertyT<FbxDouble> LeftFootIndexTip;
- FbxPropertyT<FbxDouble> LeftFootMiddleTip;
- FbxPropertyT<FbxDouble> LeftFootRingTip;
- FbxPropertyT<FbxDouble> LeftFootPinkyTip;
- FbxPropertyT<FbxDouble> LeftFootExtraFingerTip;
- FbxPropertyT<FbxDouble> RightFootThumbTip;
- FbxPropertyT<FbxDouble> RightFootIndexTip;
- FbxPropertyT<FbxDouble> RightFootMiddleTip;
- FbxPropertyT<FbxDouble> RightFootRingTip;
- FbxPropertyT<FbxDouble> RightFootPinkyTip;
- FbxPropertyT<FbxDouble> RightFootExtraFingerTip;
- FbxPropertyT<FbxBool> FingerSolving;
- FbxPropertyT<FbxDouble> CtrlPullLeftToeBase;
- FbxPropertyT<FbxDouble> CtrlPullLeftFoot;
- FbxPropertyT<FbxDouble> CtrlPullLeftKnee;
- FbxPropertyT<FbxDouble> CtrlPullRightToeBase;
- FbxPropertyT<FbxDouble> CtrlPullRightFoot;
- FbxPropertyT<FbxDouble> CtrlPullRightKnee;
- FbxPropertyT<FbxDouble> CtrlPullLeftFingerBase;
- FbxPropertyT<FbxDouble> CtrlPullLeftHand;
- FbxPropertyT<FbxDouble> CtrlPullLeftElbow;
- FbxPropertyT<FbxDouble> CtrlPullRightFingerBase;
- FbxPropertyT<FbxDouble> CtrlPullRightHand;
- FbxPropertyT<FbxDouble> CtrlPullRightElbow;
- FbxPropertyT<FbxDouble> CtrlChestPullLeftHand;
- FbxPropertyT<FbxDouble> CtrlChestPullRightHand;
- FbxPropertyT<FbxDouble> CtrlPullHead;
- FbxPropertyT<FbxDouble> CtrlResistHipsPosition;
- FbxPropertyT<FbxDouble> CtrlEnforceGravity;
- FbxPropertyT<FbxDouble> CtrlResistHipsOrientation;
- FbxPropertyT<FbxDouble> CtrlResistChestPosition;
- FbxPropertyT<FbxDouble> CtrlResistChestOrientation;
- FbxPropertyT<FbxDouble> CtrlResistLeftCollar;
- FbxPropertyT<FbxDouble> CtrlResistRightCollar;
- FbxPropertyT<FbxDouble> CtrlResistLeftKnee;
- FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionLeftKnee;
- FbxPropertyT<FbxDouble> CtrlResistCompressionFactorLeftKnee;
- FbxPropertyT<FbxDouble> CtrlResistRightKnee;
- FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionRightKnee;
- FbxPropertyT<FbxDouble> CtrlResistCompressionFactorRightKnee;
- FbxPropertyT<FbxDouble> CtrlResistLeftElbow;
- FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionLeftElbow;
- FbxPropertyT<FbxDouble> CtrlResistCompressionFactorLeftElbow;
- FbxPropertyT<FbxDouble> CtrlResistRightElbow;
- FbxPropertyT<FbxDouble> CtrlResistMaximumExtensionRightElbow;
- FbxPropertyT<FbxDouble> CtrlResistCompressionFactorRightElbow;
- FbxPropertyT<FbxDouble> CtrlSpineStiffness;
- FbxPropertyT<FbxDouble> CtrlNeckStiffness;
- FbxPropertyT<FbxBool> MirrorMode;
- FbxPropertyT<FbxDouble> ShoulderCorrection;
- FbxPropertyT<FbxBool> LeftKneeKillPitch;
- FbxPropertyT<FbxBool> RightKneeKillPitch;
- FbxPropertyT<FbxBool> LeftElbowKillPitch;
- FbxPropertyT<FbxBool> RightElbowKillPitch;
- FbxPropertyT<EHipsTranslationMode> HipsTranslationMode;
- FbxPropertyT<FbxBool> WriteReference;
- FbxPropertyT<FbxBool> SyncMode;
- FbxPropertyT<FbxDouble> Damping;
- FbxPropertyT<FbxDouble> OrientationDamping;
- FbxPropertyT<EOffAutoUser> OrientationDampingMode;
- FbxPropertyT<FbxDouble> DisplacementDamping;
- FbxPropertyT<EOffAutoUser> DisplacementDampingMode;
- FbxPropertyT<FbxDouble> DisplacementMemory;
- FbxPropertyT<EAutoUser> DisplacementMemoryMode;
- FbxPropertyT<FbxDouble> HipsDisplacementDamping;
- FbxPropertyT<EAutoUser> HipsDisplacementDampingMode;
- FbxPropertyT<FbxDouble> AnkleDisplacementDamping;
- FbxPropertyT<EAutoUser> AnkleDisplacementDampingMode;
- FbxPropertyT<FbxDouble> WristDisplacementDamping;
- FbxPropertyT<EAutoUser> WristDisplacementDampingMode;
- FbxPropertyT<FbxDouble> Stabilization;
- FbxPropertyT<FbxDouble> AnkleStabilizationTime;
- FbxPropertyT<EAutoUser> AnkleStabilizationTimeMode;
- FbxPropertyT<FbxDouble> AnkleStabilizationPerimeter;
- FbxPropertyT<EAutoUser> AnkleStabilizationPerimeterMode;
- FbxPropertyT<FbxDouble> AnkleStabilizationAngularPerimeter;
- FbxPropertyT<EOffAutoUser> AnkleStabilizationAngularPerimeterMode;
- FbxPropertyT<FbxDouble> AnkleStabilizationFloorProximity;
- FbxPropertyT<EOffAutoUser> AnkleStabilizationFloorProximityMode;
- FbxPropertyT<FbxDouble> AnkleStabilizationDamping;
- FbxPropertyT<EOffAutoUser> AnkleStabilizationDampingMode;
- FbxPropertyT<FbxDouble> AnkleStabilizationRecoveryTime;
- FbxPropertyT<EOffAutoUser> AnkleStabilizationRecoveryTimeMode;
- FbxPropertyT<FbxReference> SourceObject;
- FbxPropertyT<FbxReference> DestinationObject;
- FbxPropertyT<FbxReference> Actor;
- FbxPropertyT<FbxReference> Character;
- FbxPropertyT<FbxReference> ControlSet;
- FbxPropertyT<FbxDouble> HikVersion;
- FbxPropertyT<FbxBool> Characterize;
- FbxPropertyT<FbxBool> LockXForm;
- FbxPropertyT<FbxBool> LockPick;
- // HIK 4.6 new properties
- FbxPropertyT<FbxDouble> RealisticShoulder;
- FbxPropertyT<FbxDouble> CollarStiffnessX;
- FbxPropertyT<FbxDouble> CollarStiffnessY;
- FbxPropertyT<FbxDouble> CollarStiffnessZ;
- FbxPropertyT<FbxDouble> ExtraCollarRatio;
- FbxPropertyT<FbxDouble> LeftLegMaxExtensionAngle;
- FbxPropertyT<FbxDouble> RightLegMaxExtensionAngle;
- FbxPropertyT<FbxDouble> LeftArmMaxExtensionAngle;
- FbxPropertyT<FbxDouble> RightArmMaxExtensionAngle;
-
- FbxPropertyT<FbxDouble> StretchStartArmsAndLegs;
- FbxPropertyT<FbxDouble> StretchStopArmsAndLegs;
- FbxPropertyT<FbxDouble> SnSScaleArmsAndLegs;
- FbxPropertyT<FbxDouble> SnSReachLeftWrist;
- FbxPropertyT<FbxDouble> SnSReachRightWrist;
- FbxPropertyT<FbxDouble> SnSReachLeftAnkle;
- FbxPropertyT<FbxDouble> SnSReachRightAnkle;
- FbxPropertyT<FbxDouble> SnSScaleSpine;
- FbxPropertyT<FbxDouble> SnSScaleSpineChildren;
- FbxPropertyT<FbxDouble> SnSSpineFreedom;
- FbxPropertyT<FbxDouble> SnSReachChestEnd;
- FbxPropertyT<FbxDouble> SnSScaleNeck;
- FbxPropertyT<FbxDouble> SnSNeckFreedom;
- FbxPropertyT<FbxDouble> SnSReachHead;
-
- // HIK 2016.5.0 roll properties
- // Leaf roll properties
- FbxPropertyT<FbxDouble> LeafLeftUpLegRoll1;
- FbxPropertyT<FbxBool> LeafLeftUpLegRoll1Mode;
- FbxPropertyT<FbxDouble> LeafLeftLegRoll1;
- FbxPropertyT<FbxBool> LeafLeftLegRoll1Mode;
- FbxPropertyT<FbxDouble> LeafRightUpLegRoll1;
- FbxPropertyT<FbxBool> LeafRightUpLegRoll1Mode;
- FbxPropertyT<FbxDouble> LeafRightLegRoll1;
- FbxPropertyT<FbxBool> LeafRightLegRoll1Mode;
- FbxPropertyT<FbxDouble> LeafLeftArmRoll1;
- FbxPropertyT<FbxBool> LeafLeftArmRoll1Mode;
- FbxPropertyT<FbxDouble> LeafLeftForeArmRoll1;
- FbxPropertyT<FbxBool> LeafLeftForeArmRoll1Mode;
- FbxPropertyT<FbxDouble> LeafRightArmRoll1;
- FbxPropertyT<FbxBool> LeafRightArmRoll1Mode;
- FbxPropertyT<FbxDouble> LeafRightForeArmRoll1;
- FbxPropertyT<FbxBool> LeafRightForeArmRoll1Mode;
- FbxPropertyT<FbxDouble> LeafLeftUpLegRoll2;
- FbxPropertyT<FbxBool> LeafLeftUpLegRoll2Mode;
- FbxPropertyT<FbxDouble> LeafLeftLegRoll2;
- FbxPropertyT<FbxBool> LeafLeftLegRoll2Mode;
- FbxPropertyT<FbxDouble> LeafRightUpLegRoll2;
- FbxPropertyT<FbxBool> LeafRightUpLegRoll2Mode;
- FbxPropertyT<FbxDouble> LeafRightLegRoll2;
- FbxPropertyT<FbxBool> LeafRightLegRoll2Mode;
- FbxPropertyT<FbxDouble> LeafLeftArmRoll2;
- FbxPropertyT<FbxBool> LeafLeftArmRoll2Mode;
- FbxPropertyT<FbxDouble> LeafLeftForeArmRoll2;
- FbxPropertyT<FbxBool> LeafLeftForeArmRoll2Mode;
- FbxPropertyT<FbxDouble> LeafRightArmRoll2;
- FbxPropertyT<FbxBool> LeafRightArmRoll2Mode;
- FbxPropertyT<FbxDouble> LeafRightForeArmRoll2;
- FbxPropertyT<FbxBool> LeafRightForeArmRoll2Mode;
- FbxPropertyT<FbxDouble> LeafLeftUpLegRoll3;
- FbxPropertyT<FbxBool> LeafLeftUpLegRoll3Mode;
- FbxPropertyT<FbxDouble> LeafLeftLegRoll3;
- FbxPropertyT<FbxBool> LeafLeftLegRoll3Mode;
- FbxPropertyT<FbxDouble> LeafRightUpLegRoll3;
- FbxPropertyT<FbxBool> LeafRightUpLegRoll3Mode;
- FbxPropertyT<FbxDouble> LeafRightLegRoll3;
- FbxPropertyT<FbxBool> LeafRightLegRoll3Mode;
- FbxPropertyT<FbxDouble> LeafLeftArmRoll3;
- FbxPropertyT<FbxBool> LeafLeftArmRoll3Mode;
- FbxPropertyT<FbxDouble> LeafLeftForeArmRoll3;
- FbxPropertyT<FbxBool> LeafLeftForeArmRoll3Mode;
- FbxPropertyT<FbxDouble> LeafRightArmRoll3;
- FbxPropertyT<FbxBool> LeafRightArmRoll3Mode;
- FbxPropertyT<FbxDouble> LeafRightForeArmRoll3;
- FbxPropertyT<FbxBool> LeafRightForeArmRoll3Mode;
- FbxPropertyT<FbxDouble> LeafLeftUpLegRoll4;
- FbxPropertyT<FbxBool> LeafLeftUpLegRoll4Mode;
- FbxPropertyT<FbxDouble> LeafLeftLegRoll4;
- FbxPropertyT<FbxBool> LeafLeftLegRoll4Mode;
- FbxPropertyT<FbxDouble> LeafRightUpLegRoll4;
- FbxPropertyT<FbxBool> LeafRightUpLegRoll4Mode;
- FbxPropertyT<FbxDouble> LeafRightLegRoll4;
- FbxPropertyT<FbxBool> LeafRightLegRoll4Mode;
- FbxPropertyT<FbxDouble> LeafLeftArmRoll4;
- FbxPropertyT<FbxBool> LeafLeftArmRoll4Mode;
- FbxPropertyT<FbxDouble> LeafLeftForeArmRoll4;
- FbxPropertyT<FbxBool> LeafLeftForeArmRoll4Mode;
- FbxPropertyT<FbxDouble> LeafRightArmRoll4;
- FbxPropertyT<FbxBool> LeafRightArmRoll4Mode;
- FbxPropertyT<FbxDouble> LeafRightForeArmRoll4;
- FbxPropertyT<FbxBool> LeafRightForeArmRoll4Mode;
- FbxPropertyT<FbxDouble> LeafLeftUpLegRoll5;
- FbxPropertyT<FbxBool> LeafLeftUpLegRoll5Mode;
- FbxPropertyT<FbxDouble> LeafLeftLegRoll5;
- FbxPropertyT<FbxBool> LeafLeftLegRoll5Mode;
- FbxPropertyT<FbxDouble> LeafRightUpLegRoll5;
- FbxPropertyT<FbxBool> LeafRightUpLegRoll5Mode;
- FbxPropertyT<FbxDouble> LeafRightLegRoll5;
- FbxPropertyT<FbxBool> LeafRightLegRoll5Mode;
- FbxPropertyT<FbxDouble> LeafLeftArmRoll5;
- FbxPropertyT<FbxBool> LeafLeftArmRoll5Mode;
- FbxPropertyT<FbxDouble> LeafLeftForeArmRoll5;
- FbxPropertyT<FbxBool> LeafLeftForeArmRoll5Mode;
- FbxPropertyT<FbxDouble> LeafRightArmRoll5;
- FbxPropertyT<FbxBool> LeafRightArmRoll5Mode;
- FbxPropertyT<FbxDouble> LeafRightForeArmRoll5;
- FbxPropertyT<FbxBool> LeafRightForeArmRoll5Mode;
- // Full limb roll extraction
- FbxPropertyT<FbxDouble> LeftLegFullRollExtraction;
- FbxPropertyT<FbxDouble> RightLegFullRollExtraction;
- FbxPropertyT<FbxDouble> LeftArmFullRollExtraction;
- FbxPropertyT<FbxDouble> RightArmFullRollExtraction;
-
- /*****************************************************************************************************************************
- ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
- *****************************************************************************************************************************/
- #ifndef DOXYGEN_SHOULD_SKIP_THIS
- void SetVersion(int pVersion){ mCharacterVersion = pVersion; }
- int Version(){ return mCharacterVersion; }
- void SetValuesFromLegacyLoad();
- void SetValuesForLegacySave(int pVersion);
- void RestoreValuesFromLegacySave();
- bool IsLegacy();
- int GetPropertyInfoCount();
- void GetPropertyInfo(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, char* &pHIKPropertyName, char* &pHIKPropertyModeName, int pIndex) const;
- void GetFbxCharacterPropertyFromHIKProperty(char* &pCharacterPropertyName, char* &pCharacterPropertyModeName, EPropertyUnit &pUnit, int &pPropertyIndex, const char* pHIKPropertyName) const;
-
- FbxCharacterLink* GetCharacterLinkPtr(ENodeId pCharacterNodeId);
- virtual FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const;
- protected:
- virtual void Construct(const FbxObject* pFrom);
- virtual void ConstructProperties(bool pForceSet);
- virtual void Destruct(bool pRecursive);
- virtual FbxObject& Copy(const FbxObject& pObject);
- virtual EType GetConstraintType() const;
- virtual FbxStringList GetTypeFlags() const;
- virtual bool ConnectNotify (FbxConnectEvent const &pEvent);
- private:
- bool InverseProperty(FbxProperty& pProp);
- int mCharacterVersion;
- FbxCharacterLink mCharacterLink[eNodeIdCount];
- FbxControlSet* mControlSet;
- friend class FbxNode;
- #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
- };
- inline EFbxType FbxTypeOf(const FbxCharacter::EOffAutoUser&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EAutoUser&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EPostureMode&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EFloorPivot&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::ERollExtractionMode&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EHipsTranslationMode&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EFootContactType&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EHandContactType&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EFingerContactMode&){ return eFbxEnum; }
- inline EFbxType FbxTypeOf(const FbxCharacter::EContactBehaviour&){ return eFbxEnum; }
- #include <fbxsdk/fbxsdk_nsend.h>
- #endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */
|