FBX C++ API Reference
All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
fbxdeformationsevaluator.h
Go to the documentation of this file.
1 /****************************************************************************************
2 
3  Copyright (C) 2015 Autodesk, Inc.
4  All rights reserved.
5 
6  Use of this software is subject to the terms of the Autodesk license agreement
7  provided at the time of installation or download, or which otherwise accompanies
8  this software in either electronic or hard copy form.
9 
10 ****************************************************************************************/
11 
13 #ifndef _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_
14 #define _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_
15 
16 #include <fbxsdk/fbxsdk_def.h>
17 
18 #include <fbxsdk/fbxsdk_nsbegin.h>
19 
20 class FbxNode;
21 class FbxMesh;
22 class FbxTime;
23 class FbxAnimLayer;
24 class FbxPose;
25 class FbxCluster;
26 class FbxVector4;
27 class FbxAMatrix;
28 class FbxDualQuaternion;
29 
31 {
32 public:
37  bool Init(const FbxNode* pNode, const FbxMesh* pMesh);
38 
44  bool ComputeShapeDeformation(FbxVector4* pVertexArray, const FbxTime& pTime);
45 
53  bool ComputeSkinDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, FbxAMatrix* pGX=NULL, const FbxPose* pPose=NULL);
54 
55 /*****************************************************************************************************************************
56 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
57 *****************************************************************************************************************************/
58 #ifndef DOXYGEN_SHOULD_SKIP_THIS
60  virtual ~FbxDeformationsEvaluator();
61 
62 private:
63  void ComputeClusterDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, FbxCluster* pCluster, FbxAMatrix& pVertexTransformMatrix, const FbxPose* pPose);
64  void ComputeLinearDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose);
65  void ComputeDualQuaternionDeformation(FbxVector4* pVertexArray, const FbxTime& pTime, const FbxAMatrix& pGX, const FbxPose* pPose);
66  void Cleanup();
67 
68  bool mIsConfigured;
69  FbxNode* mNode;
70  FbxMesh* mMesh;
71  FbxAnimLayer* mAnimLayer;
72 
73  int mVertexCount;
74  FbxVector4* mDstVertexArray;
75  FbxVector4* mVertexArrayLinear;
76  FbxVector4* mVertexArrayDQ;
77 
78  FbxAMatrix* mClusterDeformation;
79  double* mClusterWeight;
80  FbxDualQuaternion* mDQClusterDeformation;
81 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
82 };
83 
84 #include <fbxsdk/fbxsdk_nsend.h>
85 
86 #endif /* _FBXSDK_UTILS_DEFORMATIONS_EVALUATOR_H_ */
The animation layer is a collection of animation curve nodes.
Definition: fbxanimlayer.h:30
FBX SDK environment definition.
#define NULL
Definition: fbxarch.h:210
Class for clusters (links).
Definition: fbxcluster.h:47
Class to encapsulate time units.
Definition: fbxtime.h:44
FBX SDK dual quaternion class to represent rigid transformation, which is combined by two quaternions...
Represents an element in the scene graph.
Definition: fbxnode.h:72
This class contains the description of a Pose and provide some methods to access Pose info in one FBX...
Definition: fbxpose.h:96
A four double mathematic vector class.
Definition: fbxvector4.h:25
FBX SDK affine matrix class.
#define FBXSDK_DLL
Definition: fbxarch.h:173
A mesh is a geometry made of polygons.
Definition: fbxmesh.h:32