- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# 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_ */