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 | |
12 | //! \file fbxdeformer.h |
13 | #ifndef _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ |
14 | #define _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ |
15 | |
16 | #include <fbxsdk/fbxsdk_def.h> |
17 | |
18 | #include <fbxsdk/core/fbxobject.h> |
19 | #include <fbxsdk/fbxsdk_nsbegin.h> |
20 | |
21 | /** Base class for skin deformer (FbxSkin) and vertex cache deformer (FbxVertexCacheDeformer). |
22 | * The corresponding deformer types are FbxDeformer::eSkin and FbxDeformer::eVertexCache. |
23 | * A deformer can be binded to a geometry (FbxGeometry) to act on its shape. Typically, |
24 | * some objects under the deformer are animated, and via the deformer, the geometry |
25 | * is animated too. |
26 | * |
27 | * A skin deformer contains clusters (FbxCluster). Each cluster acts on a subset of the geometry's |
28 | * control points, with different weights. For example, a mesh of humanoid shape |
29 | * can have a skin attached, that describes the way the humanoid mesh is deformed |
30 | * by bones. When the bones are animated, the clusters act on the geometry to |
31 | * animate it too. |
32 | * |
33 | * A vertex cache deformer contains a cache (FbxCache). The cache contains animation |
34 | * information for every control point of the geometry. |
35 | * |
36 | *\nosubgrouping |
37 | */ |
38 | class FBXSDK_DLL FbxDeformer : public FbxObject |
39 | { |
40 | FBXSDK_OBJECT_DECLARE(FbxDeformer, FbxObject); |
41 | |
42 | public: |
43 | /** |
44 | * \name Multi-Layer Flag |
45 | * This flag is available for backward compatibility with older |
46 | * version of FBX files and should not be used anymore. All the animation layering |
47 | * system has been moved to the FbxAnimLayer and FbxAnimStack classes. |
48 | */ |
49 | //@{ |
50 | /** Set multi-layer state flag. |
51 | * \param pMultiLayer Set to \c true to enable multi-layering. |
52 | */ |
53 | void SetMultiLayer(bool pMultiLayer); |
54 | |
55 | /** Get multi-layer state. |
56 | * \return The current state of the multi-layer flag. |
57 | */ |
58 | bool GetMultiLayer() const; |
59 | //@} |
60 | |
61 | /** |
62 | * \name Deformer types |
63 | */ |
64 | //@{ |
65 | /** \enum EDeformerType Deformer types. |
66 | */ |
67 | enum EDeformerType |
68 | { |
69 | eUnknown, //!< Unknown deformer type |
70 | eSkin, //!< Type FbxSkin |
71 | eBlendShape, //!< Type FbxBlendShape |
72 | eVertexCache //!< Type FbxVertexCacheDeformer |
73 | }; |
74 | |
75 | /** Get the deformer type. |
76 | * \return Deformer type identifier. Default value is eUnknown. |
77 | */ |
78 | virtual EDeformerType GetDeformerType() const { return eUnknown; } |
79 | //@} |
80 | |
81 | /***************************************************************************************************************************** |
82 | ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** |
83 | *****************************************************************************************************************************/ |
84 | #ifndef DOXYGEN_SHOULD_SKIP_THIS |
85 | protected: |
86 | virtual void Construct(const FbxObject* pFrom); |
87 | virtual FbxStringList GetTypeFlags() const { return FbxStringList(); } |
88 | |
89 | bool mMultiLayer; |
90 | #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/ |
91 | }; |
92 | |
93 | #include <fbxsdk/fbxsdk_nsend.h> |
94 | |
95 | #endif /* _FBXSDK_SCENE_GEOMETRY_DEFORMER_H_ */ |
96 | |