- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxtrimnurbssurface.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_TRIM_NURBS_SURFACE_H_
    00014 #define _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/scene/geometry/fbxgeometry.h>
    00019 #include <fbxsdk/scene/geometry/fbxnurbssurface.h>
    00020 #include <fbxsdk/scene/geometry/fbxnurbscurve.h>
    00021 #include <fbxsdk/scene/geometry/fbxgenericnode.h>
    00022
    00023 #include <fbxsdk/fbxsdk_nsbegin.h>
    00024
    00031 class FBXSDK_DLL FbxBoundary : public FbxGeometry
    00032 {
    00033     FBXSDK_OBJECT_DECLARE(FbxBoundary,FbxGeometry);
    00034
    00035 public:
    00036
    00038     static const char* sOuterFlag;
    00039
    00044     FbxPropertyT<FbxBool> OuterFlag;
    00045
    00049     void AddCurve( FbxNurbsCurve* pCurve );
    00050
    00054     int GetCurveCount() const;
    00055
    00062     FbxNurbsCurve* GetCurve( int pIndex );
    00063
    00070     FbxNurbsCurve const* GetCurve( int pIndex ) const;
    00071
    00072
    00074     virtual FbxNodeAttribute::EType GetAttributeType() const;
    00075
    00080     bool IsPointInControlHull(const FbxVector4& pPoint );
    00081
    00085     FbxVector4 ComputePointInBoundary();
    00086
    00087 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00088
    00089 //
    00090 //  WARNING!
    00091 //
    00092 //  Anything beyond these lines may not be documented accurately and is
    00093 //  subject to change without notice.
    00094 //
    00096
    00097     virtual FbxObject& Copy(const FbxObject& pObject);
    00098
    00099 protected:
    00100     FbxBoundary(FbxManager& pManager, char const* pName);
    00101     virtual void Construct(const FbxBoundary* pFrom);
    00102
    00103     void Reset();
    00104
    00105     bool LineSegmentIntersect( const FbxVector4 & pStart1, const FbxVector4 & pEnd1,
    00106                                const FbxVector4 & pStart2, const FbxVector4 & pEnd2 ) const;
    00107
    00108 public:
    00109     void ClearCurves();
    00110     void CopyCurves( FbxBoundary const& pOther );
    00111     bool IsValid(bool mustClosed = true);
    00112     bool IsCounterClockwise();
    00113
    00114 #endif // DOXYGEN_SHOULD_SKIP_THIS
    00115 };
    00116
    00117
    00121 class FBXSDK_DLL FbxTrimNurbsSurface : public FbxGeometry
    00122 {
    00123     FBXSDK_OBJECT_DECLARE(FbxTrimNurbsSurface,FbxGeometry);
    00124 public:
    00126     virtual FbxNodeAttribute::EType GetAttributeType() const;
    00127
    00128
    00133     int GetTrimRegionCount() const;
    00134
    00138     void BeginTrimRegion();
    00139
    00144     void EndTrimRegion();
    00145
    00155     bool              AddBoundary( FbxBoundary* pBoundary );
    00156
    00164     FbxBoundary*     GetBoundary( int pIndex, int pRegionIndex = 0 );
    00165
    00173     FbxBoundary const*     GetBoundary( int pIndex, int pRegionIndex = 0 ) const;
    00174
    00179     int               GetBoundaryCount(int pRegionIndex = 0) const;
    00180
    00184     void       SetNurbsSurface( FbxNurbsSurface const* pNurbs );
    00185
    00189     FbxNurbsSurface* GetNurbsSurface();
    00190
    00194     FbxNurbsSurface const* GetNurbsSurface() const;
    00195
    00200     inline void SetFlipNormals( bool pFlip ) { mFlipNormals = pFlip; }
    00201
    00205     inline bool GetFlipNormals() const { return  mFlipNormals; }
    00206
    00207     virtual int GetControlPointsCount() const;
    00208
    00214     virtual void SetControlPointAt(FbxVector4 &pCtrlPoint, FbxVector4 &pNormal , int pIndex);
    00215
    00217     virtual FbxVector4* GetControlPoints() const;
    00218
    00219 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00220
    00221 //
    00222 //  WARNING!
    00223 //
    00224 //  Anything beyond these lines may not be documented accurately and is
    00225 //  subject to change without notice.
    00226 //
    00228
    00229     virtual FbxObject& Copy(const FbxObject& pObject);
    00230
    00234     bool IsValid(bool mustClosed = true);
    00235
    00236 protected:
    00237     FbxTrimNurbsSurface(FbxManager& pManager, char const* pName);
    00238
    00239 public:
    00240     void ClearBoundaries();
    00241
    00242     void CopyBoundaries( FbxTrimNurbsSurface const& pOther );
    00243
    00244     bool IsValid(int pRegion, bool mustClosed = true);
    00245
    00246     void RebuildRegions();
    00247
    00248 private:
    00249     bool mFlipNormals;
    00250
    00251     FbxArray<int> mRegionIndices;
    00252
    00253     bool mNewRegion;
    00254
    00255 #endif // DOXYGEN_SHOULD_SKIP_THIS
    00256 };
    00257
    00258 #include <fbxsdk/fbxsdk_nsend.h>
    00259
    00260 #endif /* _FBXSDK_SCENE_GEOMETRY_TRIM_NURBS_SURFACE_H_ */