Go
to the documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
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
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
00094 };
00095
00096 #include <fbxsdk/fbxsdk_nsend.h>
00097
00098 #endif