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_CLUSTER_H_ 00014 #define _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ 00015 00016 #include <fbxsdk/fbxsdk_def.h> 00017 00018 #include <fbxsdk/scene/geometry/fbxsubdeformer.h> 00019 00020 #include <fbxsdk/fbxsdk_nsbegin.h> 00021 00047 class FBXSDK_DLL FbxCluster : public FbxSubDeformer 00048 { 00049 FBXSDK_OBJECT_DECLARE(FbxCluster,FbxSubDeformer); 00050 00051 public: 00059 EType GetSubDeformerType() const {return eCluster; }; 00060 00068 void Reset(); 00070 00080 enum ELinkMode 00081 { 00082 eNormalize, 00086 eAdditive, 00097 eTotalOne 00100 }; 00101 00106 void SetLinkMode(ELinkMode pMode); 00107 00111 ELinkMode GetLinkMode() const; 00112 00117 void SetLink(const FbxNode* pNode); 00118 00123 FbxNode* GetLink(); 00124 00129 const FbxNode* GetLink() const; 00130 00139 void SetAssociateModel(FbxNode* pNode); 00140 00149 FbxNode* GetAssociateModel() const; 00151 00159 00164 void AddControlPointIndex(int pIndex, double pWeight); 00165 00170 int GetControlPointIndicesCount() const; 00171 00176 int* GetControlPointIndices() const; 00177 00182 double* GetControlPointWeights() const; 00183 00185 00190 void SetControlPointIWCount(int pCount); 00191 00205 00209 void SetTransformMatrix(const FbxAMatrix& pMatrix); 00210 00215 FbxAMatrix& GetTransformMatrix(FbxAMatrix& pMatrix) const; 00216 00220 void SetTransformLinkMatrix(const FbxAMatrix& pMatrix); 00221 00226 FbxAMatrix& GetTransformLinkMatrix(FbxAMatrix& pMatrix) const; 00227 00231 void SetTransformAssociateModelMatrix(const FbxAMatrix& pMatrix); 00232 00237 FbxAMatrix& GetTransformAssociateModelMatrix(FbxAMatrix& pMatrix) const; 00238 00242 void SetTransformParentMatrix(const FbxAMatrix& pMatrix); 00243 00248 FbxAMatrix& GetTransformParentMatrix(FbxAMatrix& pMatrix) const; 00249 00253 bool IsTransformParentSet() const { return mIsTransformParentSet; } 00254 00256 00257 /***************************************************************************************************************************** 00258 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** 00259 *****************************************************************************************************************************/ 00260 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00261 virtual FbxObject& Copy(const FbxObject& pObject); 00262 void SetUserData(const char* pUserDataID, const char* pUserData); 00263 const char* GetUserDataID () const; 00264 const char* GetUserData () const; 00265 const char* GetUserData (const char* pUserDataID) const; 00266 00267 // For pre version 6 support 00268 FbxString mBeforeVersion6LinkName; 00269 FbxString mBeforeVersion6AssociateModelName; 00270 00271 00272 protected: 00273 virtual void Construct(const FbxCluster* pFrom); 00274 virtual void ConstructProperties(bool pForceSet); 00275 00276 virtual FbxStringList GetTypeFlags() const; 00277 00278 ELinkMode mLinkMode; 00279 FbxString mUserDataID; 00280 FbxString mUserData; 00281 FbxArray<int> mControlPointIndices; 00282 FbxArray<double> mControlPointWeights; 00283 FbxMatrix mTransform; 00284 FbxMatrix mTransformLink; 00285 FbxMatrix mTransformAssociate; 00286 FbxMatrix mTransformParent; 00287 bool mIsTransformParentSet; 00288 00289 FbxPropertyT<FbxReference> SrcModelReference; 00290 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ 00291 }; 00292 00293 #include <fbxsdk/fbxsdk_nsend.h> 00294 00295 #endif /* _FBXSDK_SCENE_GEOMETRY_CLUSTER_H_ */