fbxconstraintsinglechainik.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 Autodesk, Inc.
00004    All rights reserved.
00005  
00006    Use of this software is subject to the terms of the Autodesk license agreement
00007    provided at the time of installation or download, or which otherwise accompanies
00008    this software in either electronic or hard copy form.
00009  
00010 ****************************************************************************************/
00011 
00013 #ifndef _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_
00014 #define _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/scene/constraint/fbxconstraint.h>
00019 
00020 #include <fbxsdk/fbxsdk_nsbegin.h>
00021 
00025 class FBXSDK_DLL FbxConstraintSingleChainIK : public FbxConstraint
00026 {
00027     FBXSDK_OBJECT_DECLARE(FbxConstraintSingleChainIK, FbxConstraint);
00028 
00029 public:
00032     enum ESolverMode
00033     {
00034         eRotatePlane,   
00035         eSingleChain    
00036     };
00037 
00040     enum EPoleVectorMode
00041     {
00042         eVector,    
00043         eObject     
00044     };
00045 
00048     enum EEvaluationMode
00049     {
00050         eNeverTS,       
00051         eAutoDetect,    
00052         eAlwaysTS       
00053     };
00054 
00061         FbxPropertyT<FbxEnum>        PoleVectorType;
00062 
00065         FbxPropertyT<FbxEnum>        SolverType;
00066 
00069         FbxPropertyT<FbxEnum>        EvaluateTSAnim;
00070 
00073         FbxPropertyT<FbxReference>    PoleVectorObjects;
00074 
00079         FbxPropertyT<FbxDouble3>    PoleVector;
00080 
00085         FbxPropertyT<FbxDouble>    Twist;
00086 
00089         FbxPropertyT<FbxReference> FirstJointObject;
00090 
00093         FbxPropertyT<FbxReference> EndJointObject;
00094 
00097         FbxPropertyT<FbxReference> EffectorObject;
00099 
00103     double GetPoleVectorObjectWeight(const FbxObject* pObject) const;
00104 
00110     void AddPoleVectorObject(FbxObject* pObject, double pWeight = 100);
00111 
00115     int GetConstraintPoleVectorCount() const;
00116 
00121     FbxObject* GetPoleVectorObject(int pIndex) const;
00122 
00126     void SetFirstJointObject(FbxObject* pObject);
00127 
00131     FbxObject* GetFirstJointObject() const;
00132 
00136     void SetEndJointObject(FbxObject* pObject);
00137 
00141     FbxObject* GetEndJointObject() const;
00142 
00146     void SetEffectorObject(FbxObject* pObject);
00147 
00151     FbxObject* GetEffectorObject() const;
00152 
00153 /*****************************************************************************************************************************
00154 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00155 *****************************************************************************************************************************/
00156 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00157 protected:
00158     virtual void ConstructProperties(bool pForceSet);
00159     virtual EType GetConstraintType() const;
00160 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00161 };
00162 
00163 inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EPoleVectorMode&){ return eFbxEnum; }
00164 inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::ESolverMode&){ return eFbxEnum; }
00165 inline EFbxType FbxTypeOf(const FbxConstraintSingleChainIK::EEvaluationMode&){ return eFbxEnum; }
00166 
00167 #include <fbxsdk/fbxsdk_nsend.h>
00168 
00169 #endif /* _FBXSDK_SCENE_CONSTRAINT_SINGLE_CHAIN_IK_H_ */