fbxsdk/scene/geometry/fbxnurbs.h Source File
 
 
 
fbxsdk/scene/geometry/fbxnurbs.h
Go to the documentation of this file.
00001 /****************************************************************************************
00002  
00003    Copyright (C) 2013 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 
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 ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! **
00213 *****************************************************************************************************************************/
00214 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00215     // Error identifiers, these are only used internally.
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     // Export flags.
00248     bool mApplyFlipUV;
00249     bool mApplyFlipLinks;
00250 
00251     friend class FbxGeometryConverter;
00252 #endif /* !DOXYGEN_SHOULD_SKIP_THIS *****************************************************************************************/
00253 };
00254 
00255 #include <fbxsdk/fbxsdk_nsend.h>
00256 
00257 #endif /* _FBXSDK_SCENE_GEOMETRY_NURBS_H_ */