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
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
00216
00217 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00218
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
00251 bool mApplyFlipUV;
00252 bool mApplyFlipLinks;
00253
00254 friend class FbxGeometryConverter;
00255 #endif
00256 };
00257
00258 #include <fbxsdk/fbxsdk_nsend.h>
00259
00260 #endif