/**************************************************************************************** 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 #include #include #include 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 PullIterationCount; FbxPropertyT Posture; FbxPropertyT ForceActorSpace; FbxPropertyT ScaleCompensation; FbxPropertyT ScaleCompensationMode; FbxPropertyT HipsHeightCompensation; FbxPropertyT HipsHeightCompensationMode; FbxPropertyT AnkleHeightCompensation; FbxPropertyT AnkleHeightCompensationMode; FbxPropertyT AnkleProximityCompensation; FbxPropertyT AnkleProximityCompensationMode; FbxPropertyT MassCenterCompensation; FbxPropertyT ApplyLimits; FbxPropertyT ChestReduction; FbxPropertyT CollarReduction; FbxPropertyT NeckReduction; FbxPropertyT HeadReduction; FbxPropertyT ReachActorLeftAnkle; FbxPropertyT ReachActorRightAnkle; FbxPropertyT ReachActorLeftKnee; FbxPropertyT ReachActorRightKnee; FbxPropertyT ReachActorChest; FbxPropertyT ReachActorHead; FbxPropertyT ReachActorLeftWrist; FbxPropertyT ReachActorRightWrist; FbxPropertyT ReachActorLeftElbow; FbxPropertyT ReachActorRightElbow; FbxPropertyT ReachActorLeftFingerBase; FbxPropertyT ReachActorRightFingerBase; FbxPropertyT ReachActorLeftToesBase; FbxPropertyT ReachActorRightToesBase; FbxPropertyT ReachActorLeftFingerBaseRotation; FbxPropertyT ReachActorRightFingerBaseRotation; FbxPropertyT ReachActorLeftToesBaseRotation; FbxPropertyT ReachActorRightToesBaseRotation; FbxPropertyT ReachActorLeftAnkleRotation; FbxPropertyT ReachActorRightAnkleRotation; FbxPropertyT ReachActorHeadRotation; FbxPropertyT ReachActorLeftWristRotation; FbxPropertyT ReachActorRightWristRotation; FbxPropertyT ReachActorChestRotation; FbxPropertyT ReachActorLowerChestRotation; FbxPropertyT HipsTOffset; FbxPropertyT ChestTOffset; FbxPropertyT RollExtractionMode; FbxPropertyT LeftUpLegRoll; FbxPropertyT LeftUpLegRollMode; FbxPropertyT LeftLegRoll; FbxPropertyT LeftLegRollMode; FbxPropertyT RightUpLegRoll; FbxPropertyT RightUpLegRollMode; FbxPropertyT RightLegRoll; FbxPropertyT RightLegRollMode; FbxPropertyT LeftArmRoll; FbxPropertyT LeftArmRollMode; FbxPropertyT LeftForeArmRoll; FbxPropertyT LeftForeArmRollMode; FbxPropertyT RightArmRoll; FbxPropertyT RightArmRollMode; FbxPropertyT RightForeArmRoll; FbxPropertyT RightForeArmRollMode; FbxPropertyT LeftUpLegRollEx; FbxPropertyT LeftUpLegRollExMode; FbxPropertyT LeftLegRollEx; FbxPropertyT LeftLegRollExMode; FbxPropertyT RightUpLegRollEx; FbxPropertyT RightUpLegRollExMode; FbxPropertyT RightLegRollEx; FbxPropertyT RightLegRollExMode; FbxPropertyT LeftArmRollEx; FbxPropertyT LeftArmRollExMode; FbxPropertyT LeftForeArmRollEx; FbxPropertyT LeftForeArmRollExMode; FbxPropertyT RightArmRollEx; FbxPropertyT RightArmRollExMode; FbxPropertyT RightForeArmExRoll; FbxPropertyT RightForeArmRollExMode; FbxPropertyT ContactBehaviour; FbxPropertyT FootFloorContact; FbxPropertyT FootAutomaticToes; FbxPropertyT FootFloorPivot; FbxPropertyT FootBottomToAnkle; FbxPropertyT FootBackToAnkle; FbxPropertyT FootMiddleToAnkle; FbxPropertyT FootFrontToMiddle; FbxPropertyT FootInToAnkle; FbxPropertyT FootOutToAnkle; FbxPropertyT FootContactSize; FbxPropertyT FootFingerContact; FbxPropertyT FootContactType; FbxPropertyT FootFingerContactMode; FbxPropertyT FootContactStiffness; FbxPropertyT FootFingerContactRollStiffness; FbxPropertyT HandFloorContact; FbxPropertyT HandAutomaticFingers; FbxPropertyT HandFloorPivot; FbxPropertyT HandBottomToWrist; FbxPropertyT HandBackToWrist; FbxPropertyT HandMiddleToWrist; FbxPropertyT HandFrontToMiddle; FbxPropertyT HandInToWrist; FbxPropertyT HandOutToWrist; FbxPropertyT HandContactSize; FbxPropertyT HandFingerContact; FbxPropertyT HandContactType; FbxPropertyT HandFingerContactMode; FbxPropertyT HandContactStiffness; FbxPropertyT HandFingerContactRollStiffness; FbxPropertyT LeftHandThumbTip; FbxPropertyT LeftHandIndexTip; FbxPropertyT LeftHandMiddleTip; FbxPropertyT LeftHandRingTip; FbxPropertyT LeftHandPinkyTip; FbxPropertyT LeftHandExtraFingerTip; FbxPropertyT RightHandThumbTip; FbxPropertyT RightHandIndexTip; FbxPropertyT RightHandMiddleTip; FbxPropertyT RightHandRingTip; FbxPropertyT RightHandPinkyTip; FbxPropertyT RightHandExtraFingerTip; FbxPropertyT LeftFootThumbTip; FbxPropertyT LeftFootIndexTip; FbxPropertyT LeftFootMiddleTip; FbxPropertyT LeftFootRingTip; FbxPropertyT LeftFootPinkyTip; FbxPropertyT LeftFootExtraFingerTip; FbxPropertyT RightFootThumbTip; FbxPropertyT RightFootIndexTip; FbxPropertyT RightFootMiddleTip; FbxPropertyT RightFootRingTip; FbxPropertyT RightFootPinkyTip; FbxPropertyT RightFootExtraFingerTip; FbxPropertyT FingerSolving; FbxPropertyT CtrlPullLeftToeBase; FbxPropertyT CtrlPullLeftFoot; FbxPropertyT CtrlPullLeftKnee; FbxPropertyT CtrlPullRightToeBase; FbxPropertyT CtrlPullRightFoot; FbxPropertyT CtrlPullRightKnee; FbxPropertyT CtrlPullLeftFingerBase; FbxPropertyT CtrlPullLeftHand; FbxPropertyT CtrlPullLeftElbow; FbxPropertyT CtrlPullRightFingerBase; FbxPropertyT CtrlPullRightHand; FbxPropertyT CtrlPullRightElbow; FbxPropertyT CtrlChestPullLeftHand; FbxPropertyT CtrlChestPullRightHand; FbxPropertyT CtrlPullHead; FbxPropertyT CtrlResistHipsPosition; FbxPropertyT CtrlEnforceGravity; FbxPropertyT CtrlResistHipsOrientation; FbxPropertyT CtrlResistChestPosition; FbxPropertyT CtrlResistChestOrientation; FbxPropertyT CtrlResistLeftCollar; FbxPropertyT CtrlResistRightCollar; FbxPropertyT CtrlResistLeftKnee; FbxPropertyT CtrlResistMaximumExtensionLeftKnee; FbxPropertyT CtrlResistCompressionFactorLeftKnee; FbxPropertyT CtrlResistRightKnee; FbxPropertyT CtrlResistMaximumExtensionRightKnee; FbxPropertyT CtrlResistCompressionFactorRightKnee; FbxPropertyT CtrlResistLeftElbow; FbxPropertyT CtrlResistMaximumExtensionLeftElbow; FbxPropertyT CtrlResistCompressionFactorLeftElbow; FbxPropertyT CtrlResistRightElbow; FbxPropertyT CtrlResistMaximumExtensionRightElbow; FbxPropertyT CtrlResistCompressionFactorRightElbow; FbxPropertyT CtrlSpineStiffness; FbxPropertyT CtrlNeckStiffness; FbxPropertyT MirrorMode; FbxPropertyT ShoulderCorrection; FbxPropertyT LeftKneeKillPitch; FbxPropertyT RightKneeKillPitch; FbxPropertyT LeftElbowKillPitch; FbxPropertyT RightElbowKillPitch; FbxPropertyT HipsTranslationMode; FbxPropertyT WriteReference; FbxPropertyT SyncMode; FbxPropertyT Damping; FbxPropertyT OrientationDamping; FbxPropertyT OrientationDampingMode; FbxPropertyT DisplacementDamping; FbxPropertyT DisplacementDampingMode; FbxPropertyT DisplacementMemory; FbxPropertyT DisplacementMemoryMode; FbxPropertyT HipsDisplacementDamping; FbxPropertyT HipsDisplacementDampingMode; FbxPropertyT AnkleDisplacementDamping; FbxPropertyT AnkleDisplacementDampingMode; FbxPropertyT WristDisplacementDamping; FbxPropertyT WristDisplacementDampingMode; FbxPropertyT Stabilization; FbxPropertyT AnkleStabilizationTime; FbxPropertyT AnkleStabilizationTimeMode; FbxPropertyT AnkleStabilizationPerimeter; FbxPropertyT AnkleStabilizationPerimeterMode; FbxPropertyT AnkleStabilizationAngularPerimeter; FbxPropertyT AnkleStabilizationAngularPerimeterMode; FbxPropertyT AnkleStabilizationFloorProximity; FbxPropertyT AnkleStabilizationFloorProximityMode; FbxPropertyT AnkleStabilizationDamping; FbxPropertyT AnkleStabilizationDampingMode; FbxPropertyT AnkleStabilizationRecoveryTime; FbxPropertyT AnkleStabilizationRecoveryTimeMode; FbxPropertyT SourceObject; FbxPropertyT DestinationObject; FbxPropertyT Actor; FbxPropertyT Character; FbxPropertyT ControlSet; FbxPropertyT HikVersion; FbxPropertyT Characterize; FbxPropertyT LockXForm; FbxPropertyT LockPick; // HIK 4.6 new properties FbxPropertyT RealisticShoulder; FbxPropertyT CollarStiffnessX; FbxPropertyT CollarStiffnessY; FbxPropertyT CollarStiffnessZ; FbxPropertyT ExtraCollarRatio; FbxPropertyT LeftLegMaxExtensionAngle; FbxPropertyT RightLegMaxExtensionAngle; FbxPropertyT LeftArmMaxExtensionAngle; FbxPropertyT RightArmMaxExtensionAngle; FbxPropertyT StretchStartArmsAndLegs; FbxPropertyT StretchStopArmsAndLegs; FbxPropertyT SnSScaleArmsAndLegs; FbxPropertyT SnSReachLeftWrist; FbxPropertyT SnSReachRightWrist; FbxPropertyT SnSReachLeftAnkle; FbxPropertyT SnSReachRightAnkle; FbxPropertyT SnSScaleSpine; FbxPropertyT SnSScaleSpineChildren; FbxPropertyT SnSSpineFreedom; FbxPropertyT SnSReachChestEnd; FbxPropertyT SnSScaleNeck; FbxPropertyT SnSNeckFreedom; FbxPropertyT SnSReachHead; // HIK 2016.5.0 roll properties // Leaf roll properties FbxPropertyT LeafLeftUpLegRoll1; FbxPropertyT LeafLeftUpLegRoll1Mode; FbxPropertyT LeafLeftLegRoll1; FbxPropertyT LeafLeftLegRoll1Mode; FbxPropertyT LeafRightUpLegRoll1; FbxPropertyT LeafRightUpLegRoll1Mode; FbxPropertyT LeafRightLegRoll1; FbxPropertyT LeafRightLegRoll1Mode; FbxPropertyT LeafLeftArmRoll1; FbxPropertyT LeafLeftArmRoll1Mode; FbxPropertyT LeafLeftForeArmRoll1; FbxPropertyT LeafLeftForeArmRoll1Mode; FbxPropertyT LeafRightArmRoll1; FbxPropertyT LeafRightArmRoll1Mode; FbxPropertyT LeafRightForeArmRoll1; FbxPropertyT LeafRightForeArmRoll1Mode; FbxPropertyT LeafLeftUpLegRoll2; FbxPropertyT LeafLeftUpLegRoll2Mode; FbxPropertyT LeafLeftLegRoll2; FbxPropertyT LeafLeftLegRoll2Mode; FbxPropertyT LeafRightUpLegRoll2; FbxPropertyT LeafRightUpLegRoll2Mode; FbxPropertyT LeafRightLegRoll2; FbxPropertyT LeafRightLegRoll2Mode; FbxPropertyT LeafLeftArmRoll2; FbxPropertyT LeafLeftArmRoll2Mode; FbxPropertyT LeafLeftForeArmRoll2; FbxPropertyT LeafLeftForeArmRoll2Mode; FbxPropertyT LeafRightArmRoll2; FbxPropertyT LeafRightArmRoll2Mode; FbxPropertyT LeafRightForeArmRoll2; FbxPropertyT LeafRightForeArmRoll2Mode; FbxPropertyT LeafLeftUpLegRoll3; FbxPropertyT LeafLeftUpLegRoll3Mode; FbxPropertyT LeafLeftLegRoll3; FbxPropertyT LeafLeftLegRoll3Mode; FbxPropertyT LeafRightUpLegRoll3; FbxPropertyT LeafRightUpLegRoll3Mode; FbxPropertyT LeafRightLegRoll3; FbxPropertyT LeafRightLegRoll3Mode; FbxPropertyT LeafLeftArmRoll3; FbxPropertyT LeafLeftArmRoll3Mode; FbxPropertyT LeafLeftForeArmRoll3; FbxPropertyT LeafLeftForeArmRoll3Mode; FbxPropertyT LeafRightArmRoll3; FbxPropertyT LeafRightArmRoll3Mode; FbxPropertyT LeafRightForeArmRoll3; FbxPropertyT LeafRightForeArmRoll3Mode; FbxPropertyT LeafLeftUpLegRoll4; FbxPropertyT LeafLeftUpLegRoll4Mode; FbxPropertyT LeafLeftLegRoll4; FbxPropertyT LeafLeftLegRoll4Mode; FbxPropertyT LeafRightUpLegRoll4; FbxPropertyT LeafRightUpLegRoll4Mode; FbxPropertyT LeafRightLegRoll4; FbxPropertyT LeafRightLegRoll4Mode; FbxPropertyT LeafLeftArmRoll4; FbxPropertyT LeafLeftArmRoll4Mode; FbxPropertyT LeafLeftForeArmRoll4; FbxPropertyT LeafLeftForeArmRoll4Mode; FbxPropertyT LeafRightArmRoll4; FbxPropertyT LeafRightArmRoll4Mode; FbxPropertyT LeafRightForeArmRoll4; FbxPropertyT LeafRightForeArmRoll4Mode; FbxPropertyT LeafLeftUpLegRoll5; FbxPropertyT LeafLeftUpLegRoll5Mode; FbxPropertyT LeafLeftLegRoll5; FbxPropertyT LeafLeftLegRoll5Mode; FbxPropertyT LeafRightUpLegRoll5; FbxPropertyT LeafRightUpLegRoll5Mode; FbxPropertyT LeafRightLegRoll5; FbxPropertyT LeafRightLegRoll5Mode; FbxPropertyT LeafLeftArmRoll5; FbxPropertyT LeafLeftArmRoll5Mode; FbxPropertyT LeafLeftForeArmRoll5; FbxPropertyT LeafLeftForeArmRoll5Mode; FbxPropertyT LeafRightArmRoll5; FbxPropertyT LeafRightArmRoll5Mode; FbxPropertyT LeafRightForeArmRoll5; FbxPropertyT LeafRightForeArmRoll5Mode; // Full limb roll extraction FbxPropertyT LeftLegFullRollExtraction; FbxPropertyT RightLegFullRollExtraction; FbxPropertyT LeftArmFullRollExtraction; FbxPropertyT 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); FbxObject* Clone(FbxObject::ECloneType pCloneType=eDeepClone, FbxObject* pContainer=NULL, void* pSet = NULL) const override; protected: void Construct(const FbxObject* pFrom) override; void ConstructProperties(bool pForceSet) override; void Destruct(bool pRecursive) override; FbxObject& Copy(const FbxObject& pObject) override; EType GetConstraintType() const override; FbxStringList GetTypeFlags() const override; bool ConnectNotify (FbxConnectEvent const &pEvent) override; 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 #endif /* _FBXSDK_SCENE_CONSTRAINT_CHARACTER_H_ */