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_ */