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_ */