Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013 #ifndef _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_
00014 #define _FBXSDK_SCENE_GEOMETRY_NURBS_SURFACE_H_
00015
00016 #include <fbxsdk/fbxsdk_def.h>
00017
00018 #include <fbxsdk/scene/geometry/fbxnode.h>
00019 #include <fbxsdk/scene/geometry/fbxgeometry.h>
00020
00021 #include <fbxsdk/fbxsdk_nsbegin.h>
00022
00023 class FbxPatch;
00024 class FbxManager;
00025
00035 class FBXSDK_DLL FbxNurbsSurface : public FbxGeometry
00036 {
00037 FBXSDK_OBJECT_DECLARE(FbxNurbsSurface,FbxGeometry);
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
00126 void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder);
00127
00131 inline int GetUOrder() const {return mUOrder;}
00132
00136 inline int GetVOrder() const {return mVOrder;}
00137
00143 void SetStep(int pUStep, int pVStep);
00144
00148 inline int GetUStep() const {return mUStep;}
00149
00153 inline int GetVStep() const {return mVStep;}
00154
00160 int GetUSpanCount() const;
00161
00167 int GetVSpanCount() const;
00168
00170
00175
00179 void SetApplyFlipUV(bool pFlag);
00180
00184 bool GetApplyFlipUV() const;
00185
00189 void SetApplyFlipLinks(bool pFlag);
00190
00194 bool GetApplyFlipLinks() const;
00195
00199 bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); }
00200
00205 void AddCurveOnSurface( FbxNode* pCurve );
00206
00211 FbxNode* GetCurveOnSurface( int pIndex );
00212
00217 FbxNode const* GetCurveOnSurface( int pIndex ) const;
00218
00222 int GetCurveOnSurfaceCount() const;
00223
00228 bool RemoveCurveOnSurface( FbxNode* pCurve );
00229
00231
00235 bool IsRational() const;
00236
00237
00239
00240
00241
00242
00243
00244
00246 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00247
00248 virtual FbxObject& Copy(const FbxObject& pObject);
00249
00250 void SetFlipNormals(bool pFlipNormals);
00251 bool GetFlipNormals() const;
00252
00253 bool IsValidKnots() const;
00254 protected:
00255 FbxNurbsSurface(FbxManager& pManager, char const* pName);
00256 virtual void Destruct(bool pRecursive, bool pDependents);
00257
00258 FbxUInt mUOrder, mVOrder;
00259 int mUCount, mVCount;
00260 int mUStep, mVStep;
00261 EType mUType, mVType;
00262
00263 double* mUKnotVector;
00264 double* mVKnotVector;
00265
00266
00267
00268
00269 ESurfaceMode mSurfaceMode;
00270
00271
00272 bool mApplyFlipUV;
00273 bool mApplyFlipLinks;
00274
00275 bool mFlipNormals;
00276
00277 public:
00278
00279 enum EErrorCode
00280 {
00281 eNurbsTypeUnknown,
00282 eWrongNumberOfControlPoint,
00283 eWeightTooSmall,
00284 eUKnotVectorError,
00285 eVKnotVectorError,
00286 eErrorCount
00287 };
00288
00289 protected:
00290 friend class FbxGeometryConverter;
00291
00292 #endif // #ifndef DOXYGEN_SHOULD_SKIP_THIS
00293
00294 };
00295
00296 #include <fbxsdk/fbxsdk_nsend.h>
00297
00298 #endif