00001
00004 #ifndef _FBXSDK_CONSTRAINT_SINGLE_CHAIN_IK_H_
00005 #define _FBXSDK_CONSTRAINT_SINGLE_CHAIN_IK_H_
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <kaydaradef.h>
00043 #ifndef KFBX_DLL
00044 #define KFBX_DLL K_DLLIMPORT
00045 #endif
00046
00047 #include <kaydara.h>
00048
00049 #include <kfbxplugins/kfbxconstraint.h>
00050 #include <kfbxplugins/kfbxgroupname.h>
00051
00052 #include <klib/kerror.h>
00053
00054 #include <kfbxmath/kfbxvector4.h>
00055
00056 #include <fbxfilesdk_nsbegin.h>
00057
00058 class KFbxSdkManager;
00059
00063 class KFBX_DLL KFbxConstraintSingleChainIK : public KFbxConstraint
00064 {
00065 KFBXOBJECT_DECLARE(KFbxConstraintSingleChainIK,KFbxConstraint);
00066
00071 KFbxTypedProperty<fbxBool1> Lock;
00072 KFbxTypedProperty<fbxBool1> Active;
00073
00074 KFbxTypedProperty<fbxEnum> PoleVectorType;
00075 KFbxTypedProperty<fbxEnum> SolverType;
00076 KFbxTypedProperty<fbxEnum> EvaluateTSAnim;
00077
00078 KFbxTypedProperty<fbxDouble1> Weight;
00079
00080 KFbxTypedProperty<fbxReference> PoleVectorObjects;
00081 KFbxTypedProperty<fbxDouble3> PoleVector;
00082 KFbxTypedProperty<fbxDouble1> Twist;
00083
00084 KFbxTypedProperty<fbxReference> FirstJointObject;
00085 KFbxTypedProperty<fbxReference> EndJointObject;
00086 KFbxTypedProperty<fbxReference> EffectorObject;
00088
00089 public:
00094 typedef enum
00095 {
00096 eRP_SOLVER,
00097 eSC_SOLVER
00098 } ESolverType;
00099
00104 typedef enum
00105 {
00106 ePOLE_VECTOR_TYPE_VECTOR,
00107 ePOLE_VECTOR_TYPE_OBJECT
00108 } EPoleVectorType;
00109
00115 typedef enum
00116 {
00117 eEVAL_TS_NEVER,
00118 eEVAL_TS_AUTO_DETECT,
00119 eEVAL_TS_ALWAYS
00120 } EEvalTS;
00121
00125 void SetLock(bool pLock);
00126
00130 bool GetLock();
00131
00135 void SetActive(bool pActive);
00136
00140 bool GetActive();
00141
00145 void SetPoleVectorType(EPoleVectorType pType);
00146
00150 EPoleVectorType GetPoleVectorType();
00151
00155 void SetSolverType(ESolverType pType);
00156
00160 ESolverType GetSolverType();
00161
00165 void SetEvalTS(EEvalTS pEval);
00166
00170 EEvalTS GetEvalTS();
00171
00175 void SetWeight(double pWeight);
00176
00180 double GetWeight();
00181
00182
00183
00184
00188 double GetPoleVectorObjectWeight(KFbxObject* pObject);
00189
00195 void AddPoleVectorObject(KFbxObject* pObject, double pWeight = 100);
00196
00200 int GetConstraintPoleVectorCount();
00201
00206 KFbxObject* GetPoleVectorObject(int pIndex);
00207
00211 void SetPoleVector(KFbxVector4 pVector);
00212
00216 KFbxVector4 GetPoleVector();
00217
00221 void SetTwist(double pTwist);
00222
00226 double GetTwist();
00227
00231 void SetFirstJointObject(KFbxObject* pObject);
00232
00236 KFbxObject* GetFirstJointObject();
00237
00241 void SetEndJointObject(KFbxObject* pObject);
00242
00246 KFbxObject* GetEndJointObject();
00247
00251 void SetEffectorObject(KFbxObject* pObject);
00252
00256 KFbxObject* GetEffectorObject();
00257
00258 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00259
00260
00261 virtual KFbxObject* Clone(KFbxObject* pContainer, KFbxObject::ECloneType pCloneType) const;
00262
00263 protected:
00264
00265 KFbxConstraintSingleChainIK(KFbxSdkManager& pManager, char const* pName);
00266 ~KFbxConstraintSingleChainIK();
00267
00268 virtual bool ConstructProperties( bool pForceSet );
00269 virtual void Destruct(bool pRecursive, bool pDependents);
00270
00271 virtual EConstraintType GetConstraintType();
00272 virtual KString GetTypeName() const;
00273
00274 friend class KFbxWriterFbx6;
00275 friend class KFbxReaderFbx;
00276
00277 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00278 };
00279
00280 inline EFbxType FbxTypeOf( KFbxConstraintSingleChainIK::EPoleVectorType const &pItem ) { return eENUM; }
00281 inline EFbxType FbxTypeOf( KFbxConstraintSingleChainIK::ESolverType const &pItem ) { return eENUM; }
00282 inline EFbxType FbxTypeOf( KFbxConstraintSingleChainIK::EEvalTS const &pItem ) { return eENUM; }
00283
00284
00285 #include <fbxfilesdk_nsend.h>
00286
00287 #endif // _FBXSDK_CONSTRAINT_SINGLE_CHAIN_IK_H_
00288
00289