- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxnurbs.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_NURBS_H_
    00014 #define _FBXSDK_SCENE_GEOMETRY_NURBS_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/scene/geometry/fbxgeometry.h>
    00019
    00020 #include <fbxsdk/fbxsdk_nsbegin.h>
    00021
    00031 class FBXSDK_DLL FbxNurbs : public FbxGeometry
    00032 {
    00033     FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry);
    00034
    00035 public:
    00037     virtual FbxNodeAttribute::EType GetAttributeType() const;
    00038
    00040     void Reset();
    00041
    00046
    00050     void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode);
    00051
    00055     inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;}
    00056
    00062     enum EType
    00063     {
    00064         ePeriodic,
    00065         eClosed,
    00066         eOpen
    00067     };
    00068
    00077     void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType);
    00078
    00082     inline int GetUCount() const {return mUCount;}
    00083
    00087     inline int GetVCount() const {return mVCount;}
    00088
    00092     inline EType GetNurbsUType() const {return mUType;}
    00093
    00097     inline EType GetNurbsVType() const {return mVType;}
    00098
    00102     int GetUKnotCount() const;
    00103
    00107     double* GetUKnotVector() const;
    00108
    00112     int GetVKnotCount() const;
    00113
    00117     double* GetVKnotVector() const;
    00118
    00124     int* GetUMultiplicityVector() const;
    00125
    00131     int* GetVMultiplicityVector() const;
    00132
    00137     void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder);
    00138
    00142     inline int GetUOrder() const {return mUOrder;}
    00143
    00147     inline int GetVOrder() const {return mVOrder;}
    00148
    00154     void SetStep(int pUStep, int pVStep);
    00155
    00159     inline int GetUStep() const {return mUStep;}
    00160
    00164     inline int GetVStep() const {return mVStep;}
    00165
    00171     int GetUSpanCount() const;
    00172
    00178     int GetVSpanCount() const;
    00179
    00181
    00186
    00190     void SetApplyFlipUV(bool pFlag);
    00191
    00195     bool GetApplyFlipUV() const;
    00196
    00200     void SetApplyFlipLinks(bool pFlag);
    00201
    00205     bool GetApplyFlipLinks() const;
    00206
    00210     bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); }
    00211
    00213
    00214 /*****************************************************************************************************************************
    00215 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
    00216 *****************************************************************************************************************************/
    00217 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00218     // Error identifiers, these are only used internally.
    00219     enum EErrorCode
    00220     {
    00221         eNurbsTypeUnknown,
    00222         eWrongNumberOfControlPoint,
    00223         eWeightTooSmall,
    00224         eUMultiplicityVectorError,
    00225         eVMultiplicityVectorError,
    00226         eUKnotVectorError,
    00227         eVKnotVectorError,
    00228         eErrorCount
    00229     };
    00230
    00231     virtual FbxObject& Copy(const FbxObject& pObject);
    00232
    00233 protected:
    00234     virtual void Construct(const FbxNurbs* pFrom);
    00235     virtual void Destruct(bool pRecursive);
    00236
    00237     FbxUInt mUOrder, mVOrder;
    00238     int mUCount, mVCount;
    00239     int mUStep, mVStep;
    00240     EType mUType, mVType;
    00241
    00242     double* mUKnotVector;
    00243     double* mVKnotVector;
    00244
    00245     int* mUMultiplicityVector;
    00246     int* mVMultiplicityVector;
    00247
    00248     ESurfaceMode mSurfaceMode;
    00249
    00250     // Export flags.
    00251     bool mApplyFlipUV;
    00252     bool mApplyFlipLinks;
    00253
    00254     friend class FbxGeometryConverter;
    00255 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
    00256 };
    00257
    00258 #include <fbxsdk/fbxsdk_nsend.h>
    00259
    00260 #endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */