fbxnurbs.h

Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2012 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 
00022 class FbxPatch;
00023 class FbxManager;
00024 
00034 class FBXSDK_DLL FbxNurbs : public FbxGeometry
00035 {
00036     FBXSDK_OBJECT_DECLARE(FbxNurbs, FbxGeometry);
00037 
00038 public:
00040     virtual FbxNodeAttribute::EType GetAttributeType() const;
00041 
00043     void Reset();
00044 
00049 
00053     void SetSurfaceMode(FbxGeometry::ESurfaceMode pMode);
00054 
00058     inline ESurfaceMode GetSurfaceMode() const {return mSurfaceMode;}
00059 
00065     enum EType
00066     {
00067         ePeriodic,
00068         eClosed,
00069         eOpen
00070     };
00071 
00080     void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType);
00081 
00085     inline int GetUCount() const {return mUCount;}
00086 
00090     inline int GetVCount() const {return mVCount;}
00091 
00095     inline EType GetNurbsUType() const {return mUType;}
00096 
00100     inline EType GetNurbsVType() const {return mVType;}
00101 
00105     int GetUKnotCount() const;
00106 
00110     double* GetUKnotVector() const;
00111 
00115     int GetVKnotCount() const;
00116 
00120     double* GetVKnotVector() const;
00121 
00127     int* GetUMultiplicityVector() const;
00128 
00134     int* GetVMultiplicityVector() const;
00135 
00140     void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder);
00141 
00145     inline int GetUOrder() const {return mUOrder;}
00146 
00150     inline int GetVOrder() const {return mVOrder;}
00151 
00157     void SetStep(int pUStep, int pVStep);
00158 
00162     inline int GetUStep() const {return mUStep;}
00163 
00167     inline int GetVStep() const {return mVStep;}
00168 
00174     int GetUSpanCount() const;
00175 
00181     int GetVSpanCount() const;
00182 
00184 
00189 
00193     void SetApplyFlipUV(bool pFlag);
00194 
00198     bool GetApplyFlipUV() const;
00199 
00203     void SetApplyFlipLinks(bool pFlag);
00204 
00208     bool GetApplyFlipLinks() const;
00209 
00213     bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); }
00214 
00216 
00218 //
00219 //  WARNING!
00220 //
00221 //  Anything beyond these lines may not be documented accurately and is
00222 //  subject to change without notice.
00223 //
00225 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00226 
00227     virtual FbxObject& Copy(const FbxObject& pObject);
00228 
00229 protected:
00230 
00231     FbxNurbs(FbxManager& pManager, char const* pName);
00232 
00233     virtual void Destruct(bool pRecursive, bool pDependents);
00234 
00235     FbxUInt mUOrder, mVOrder;
00236     int mUCount, mVCount;
00237     int mUStep, mVStep;
00238     EType mUType, mVType;
00239 
00240     double* mUKnotVector;
00241     double* mVKnotVector;
00242 
00243     int* mUMultiplicityVector;
00244     int* mVMultiplicityVector;
00245 
00246     ESurfaceMode mSurfaceMode;
00247 
00248     // Export flags.
00249     bool mApplyFlipUV;
00250     bool mApplyFlipLinks;
00251 
00252 public:
00253     // Error identifiers, these are only used internally.
00254     enum EErrorCode
00255     {
00256         eNurbsTypeUnknown,
00257         eWrongNumberOfControlPoint,
00258         eWeightTooSmall,
00259         eUMultiplicityVectorError,
00260         eVMultiplicityVectorError,
00261         eUKnotVectorError,
00262         eVKnotVectorError,
00263         eErrorCount
00264     };
00265 
00266 protected:
00267     friend class FbxGeometryConverter;
00268 
00269 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00270 
00271 };
00272 
00273 #include <fbxsdk/fbxsdk_nsend.h>
00274 
00275 #endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */