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
00059 enum EType
00060 {
00061 ePeriodic,
00062 eClosed,
00063 eOpen
00064 };
00065
00074 void InitControlPoints(int pUCount, EType pUType, int pVCount, EType pVType);
00075
00079 inline int GetUCount() const {return mUCount;}
00080
00084 inline int GetVCount() const {return mVCount;}
00085
00089 inline EType GetNurbsUType() const {return mUType;}
00090
00094 inline EType GetNurbsVType() const {return mVType;}
00095
00099 int GetUKnotCount() const;
00100
00104 double* GetUKnotVector() const;
00105
00109 int GetVKnotCount() const;
00110
00114 double* GetVKnotVector() const;
00115
00121 int* GetUMultiplicityVector() const;
00122
00128 int* GetVMultiplicityVector() const;
00129
00134 void SetOrder(FbxUInt pUOrder, FbxUInt pVOrder);
00135
00139 inline int GetUOrder() const {return mUOrder;}
00140
00144 inline int GetVOrder() const {return mVOrder;}
00145
00151 void SetStep(int pUStep, int pVStep);
00152
00156 inline int GetUStep() const {return mUStep;}
00157
00161 inline int GetVStep() const {return mVStep;}
00162
00168 int GetUSpanCount() const;
00169
00175 int GetVSpanCount() const;
00176
00178
00183
00187 void SetApplyFlipUV(bool pFlag);
00188
00192 bool GetApplyFlipUV() const;
00193
00197 void SetApplyFlipLinks(bool pFlag);
00198
00202 bool GetApplyFlipLinks() const;
00203
00207 bool GetApplyFlip() const { return GetApplyFlipUV() || GetApplyFlipLinks(); }
00208
00210
00211
00212
00213
00214 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00215
00216 enum EErrorCode
00217 {
00218 eNurbsTypeUnknown,
00219 eWrongNumberOfControlPoint,
00220 eWeightTooSmall,
00221 eUMultiplicityVectorError,
00222 eVMultiplicityVectorError,
00223 eUKnotVectorError,
00224 eVKnotVectorError,
00225 eErrorCount
00226 };
00227
00228 virtual FbxObject& Copy(const FbxObject& pObject);
00229
00230 protected:
00231 virtual void Construct(const FbxNurbs* pFrom);
00232 virtual void Destruct(bool pRecursive);
00233
00234 FbxUInt mUOrder, mVOrder;
00235 int mUCount, mVCount;
00236 int mUStep, mVStep;
00237 EType mUType, mVType;
00238
00239 double* mUKnotVector;
00240 double* mVKnotVector;
00241
00242 int* mUMultiplicityVector;
00243 int* mVMultiplicityVector;
00244
00245 ESurfaceMode mSurfaceMode;
00246
00247
00248 bool mApplyFlipUV;
00249 bool mApplyFlipLinks;
00250
00251 friend class FbxGeometryConverter;
00252 #endif
00253 };
00254
00255 #include <fbxsdk/fbxsdk_nsend.h>
00256
00257 #endif