fbxsdk/utils/fbxdeformationsevaluator.h Source File
 
 
 
fbxsdk/utils/fbxdeformationsevaluator.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_UTILS_DEFORMATIONS_EVALUATOR_H_
00014 #define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_
00015 
00016 #include <fbxsdk/fbxsdk_def.h>
00017 
00018 #include <fbxsdk/fbxsdk_nsbegin.h>
00019 
00020 class FbxNode;
00021 class FbxMesh;
00022 class FbxTime;
00023 class FbxAnimLayer;
00024 class FbxPose;
00025 class FbxCluster;
00026 class FbxVector4;
00027 class FbxAMatrix;
00028 class FbxDualQuaternion;
00029 
00030 class FBXSDK_DLL FbxDeformationsEvaluator
00031 {
00032 public:
00045     bool Init(const FbxNode* pNode, const FbxMesh* pMesh, int pAnimLayerId = 0);
00046 
00054     bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime);
00055 
00064     bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX = NULL, const FbxPose* pPose = NULL);
00065 
00066 /*****************************************************************************************************************************
00067 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00068 *****************************************************************************************************************************/
00069 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00070     FbxDeformationsEvaluator();
00071     virtual ~FbxDeformationsEvaluator();
00072 
00073 private:
00074         void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose);
00075         void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose);
00076         void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose);
00077 
00078     void        Cleanup();
00079 
00080     bool                mIsConfigured;
00081     FbxNode*            mNode;
00082     FbxMesh*            mMesh;
00083     FbxAnimLayer*       mAnimLayer;
00084 
00085     int                 mVertexCount;
00086     FbxVector4*         mDstVertexArray;
00087     FbxVector4*         mVertexArrayLinear;
00088     FbxVector4*         mVertexArrayDQ;
00089 
00090     FbxAMatrix*         mClusterDeformation;
00091     double*             mClusterWeight;
00092     FbxDualQuaternion*  mDQClusterDeformation;
00093 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00094 };
00095 
00096 #include <fbxsdk/fbxsdk_nsend.h>
00097 
00098 #endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */