- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxgeometry.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_SCENE_GEOMETRY_H_
    00014 #define _FBXSDK_SCENE_GEOMETRY_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/scene/geometry/fbxgeometrybase.h>
    00019 #include <fbxsdk/scene/geometry/fbxdeformer.h>
    00020 #include <fbxsdk/scene/geometry/fbxshape.h>
    00021 #include <fbxsdk/scene/geometry/fbxblendshape.h>
    00022 #include <fbxsdk/scene/geometry/fbxblendshapechannel.h>
    00023
    00024 #include <fbxsdk/fbxsdk_nsbegin.h>
    00025
    00026 class FbxStatus;
    00027 class FbxGeometryWeightedMap;
    00028
    00045 class FBXSDK_DLL FbxGeometry : public FbxGeometryBase
    00046 {
    00047     FBXSDK_OBJECT_DECLARE(FbxGeometry,FbxGeometryBase);
    00048
    00049 public:
    00056     virtual FbxNodeAttribute::EType GetAttributeType() const;
    00057
    00062
    00068     int AddDeformer(FbxDeformer* pDeformer);
    00069
    00075     FbxDeformer* RemoveDeformer(int pIndex, FbxStatus* pStatus = NULL);
    00076
    00080     int GetDeformerCount() const;
    00081
    00087     FbxDeformer* GetDeformer(int pIndex, FbxStatus* pStatus = NULL) const;
    00088
    00093     int GetDeformerCount(FbxDeformer::EDeformerType pType) const;
    00094
    00101     FbxDeformer* GetDeformer(int pIndex, FbxDeformer::EDeformerType pType, FbxStatus* pStatus = NULL) const;
    00102
    00104
    00109
    00113     FbxGeometryWeightedMap* GetSourceGeometryWeightedMap();
    00114
    00118     int GetDestinationGeometryWeightedMapCount() const;
    00119
    00124     FbxGeometryWeightedMap* GetDestinationGeometryWeightedMap(int pIndex);
    00125
    00127
    00132
    00141     bool AddShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxShape* pShape, double pPercent = 100, FbxStatus* pStatus = NULL);
    00142
    00147     void ClearShape();
    00148
    00152     int GetShapeCount() const;
    00153
    00160     int GetShapeCount(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxStatus* pStatus = NULL) const;
    00161
    00169     FbxShape* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL);
    00170
    00178     FbxShape const* GetShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, int pShapeIndex, FbxStatus* pStatus = NULL) const;
    00179
    00191     FbxAnimCurve* GetShapeChannel(int pBlendShapeIndex, int pBlendShapeChannelIndex, FbxAnimLayer* pLayer, bool pCreateAsNeeded = false, FbxStatus* pStatus = NULL);
    00193
    00200     enum ESurfaceMode
    00201     {
    00202         eRaw,
    00203         eLowNoNormals,
    00204         eLow,
    00205         eHighNoNormals,
    00206         eHigh
    00207     };
    00208
    00216
    00221     FbxAMatrix& GetPivot(FbxAMatrix& pXMatrix) const;
    00222
    00226     void SetPivot(FbxAMatrix& pXMatrix);
    00227
    00230     void ApplyPivot();
    00231
    00233
    00240
    00249     void SetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex, double pPercent);
    00250
    00259     void SetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel,  double pPercent);
    00260
    00268     double GetDefaultShape(int pBlendShapeIndex, int pBlendShapeChannelIndex) const;
    00269
    00277     double GetDefaultShape(FbxBlendShapeChannel* pBlendShapeChannel) const;
    00278
    00280
    00281 /*****************************************************************************************************************************
    00282 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
    00283 *****************************************************************************************************************************/
    00284 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00285     virtual FbxObject& Copy(const FbxObject& pObject);
    00286
    00287     void CleanShapeChannels(FbxAnimLayer* pAnimLayer);
    00288     void CleanShapeChannel(FbxAnimLayer* pAnimLayer, int pShapeIndex);
    00289     void CreateShapeChannelProperties(FbxString& pShapeName);
    00290     void ConvertShapeNamesToV5Format(FbxString pTakeNodeName);
    00291     void ConvertShapeNamesToV5Format(FbxString pTakeNodeName, int pShapeIndex);
    00292     void RevertShapeNamesToV6Format(FbxString pTakeNodeName);
    00293     void RevertShapeNamesToV6Format(FbxString pTakeNodeName, int pShapeIndex);
    00294     void ClearTemporaryShapeNames();
    00295
    00296 protected:
    00297     virtual void Construct(const FbxGeometry* pFrom);
    00298     virtual void Destruct(bool pRecursive);
    00299     virtual void SetDocument(FbxDocument* pDocument);
    00300
    00301     FbxString CreateShapeChannelName(int pShapeIndex);
    00302     FbxString CreateShapeChannelName(FbxString pShapeName);
    00303
    00304     void CopyDeformers(FbxGeometry const* pGeometry);
    00305     void CopyPivot(FbxGeometry const* pSource);
    00306
    00307     // Used during FBX v5 file store
    00308     FbxArray<FbxString*> mShapeNameArrayV6;
    00309     FbxArray<FbxString*> mShapeNameArrayV5;
    00310     FbxArray<FbxString*> mShapeChannelNameArrayV5;
    00311
    00312     FbxAMatrix* mPivot;
    00313
    00314 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
    00315 };
    00316
    00317 #include <fbxsdk/fbxsdk_nsend.h>
    00318
    00319 #endif /* _FBXSDK_SCENE_GEOMETRY_H_ */