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_GEOMETRY_SKIN_H_ 00014 #define _FBXSDK_SCENE_GEOMETRY_SKIN_H_ 00015 00016 #include <fbxsdk/fbxsdk_def.h> 00017 00018 #include <fbxsdk/scene/geometry/fbxdeformer.h> 00019 00020 #include <fbxsdk/fbxsdk_nsbegin.h> 00021 00022 class FbxCluster; 00023 class FbxGeometry; 00024 00037 class FBXSDK_DLL FbxSkin : public FbxDeformer 00038 { 00039 FBXSDK_OBJECT_DECLARE(FbxSkin, FbxDeformer); 00040 00041 public: 00047 void SetDeformAccuracy(double pDeformAccuracy); 00048 00052 double GetDeformAccuracy() const; 00053 00058 bool SetGeometry(FbxGeometry* pGeometry); 00059 00063 FbxGeometry* GetGeometry(); 00064 00069 bool AddCluster(FbxCluster* pCluster); 00070 00075 FbxCluster* RemoveCluster(FbxCluster* pCluster); 00076 00080 int GetClusterCount() const; 00081 00086 FbxCluster* GetCluster(int pIndex); 00087 00092 const FbxCluster* GetCluster(int pIndex) const; 00093 00097 EDeformerType GetDeformerType() const {return eSkin; }; 00098 00106 enum EType 00107 { 00108 eRigid, 00109 eLinear, 00110 eDualQuaternion, 00111 eBlend 00112 }; 00113 00117 void SetSkinningType(EType pType); 00118 00122 EType GetSkinningType() const; 00123 00132 00140 void AddControlPointIndex(int pIndex, double pBlendWeight = 0); 00141 00146 int GetControlPointIndicesCount() const; 00147 00152 int* GetControlPointIndices() const; 00153 00158 double* GetControlPointBlendWeights() const; 00159 00164 void SetControlPointIWCount(int pCount); 00165 00167 00168 /***************************************************************************************************************************** 00169 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** 00170 *****************************************************************************************************************************/ 00171 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00172 virtual FbxObject& Copy(const FbxObject& pObject); 00173 00174 protected: 00175 virtual void Construct(const FbxSkin* pFrom); 00176 virtual FbxStringList GetTypeFlags() const; 00177 00178 // Skin deformer 00179 double mDeformAccuracy; 00180 EType mSkinningType; 00181 00182 //Control points 00183 FbxArray<int> mControlPointIndices; 00184 FbxArray<double> mControlPointBlendWeights; 00185 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ 00186 }; 00187 00188 #include <fbxsdk/fbxsdk_nsend.h> 00189 00190 #endif /* _FBXSDK_SCENE_GEOMETRY_SKIN_H_ */