fbxdeformer.h 3.6 KB

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