Go to the
documentation of this file.
00001
00002
00003
00004
00005
00006
00007
00008
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
00220
00221
00222
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
00249 bool mApplyFlipUV;
00250 bool mApplyFlipLinks;
00251
00252 public:
00253
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