13 #ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ 
   14 #define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_ 
   29 class FbxSurfaceEvaluator;
 
   53         bool Triangulate(
FbxScene* pScene, 
bool pReplace, 
bool pLegacy=
false);
 
   92         bool ConvertPatchToNurbsInPlace(
FbxNode* pNode);
 
  107         bool ConvertPatchToNurbsSurfaceInPlace(
FbxNode* pNode);
 
  126         bool ConvertNurbsToNurbsSurfaceInPlace(
FbxNode* pNode);
 
  133         bool ConvertNurbsSurfaceToNurbsInPlace(
FbxNode* pNode);
 
  174         bool EmulateNormalsByPolygonVertex(
FbxMesh* pMesh);
 
  185         bool ComputeEdgeSmoothingFromNormals( 
FbxMesh* pMesh ) 
const;
 
  196         bool ComputePolygonSmoothingFromEdgeSmoothing( 
FbxMesh* pMesh, 
int pIndex=0 ) 
const;
 
  205         bool ComputeEdgeSmoothingFromPolygonSmoothing( 
FbxMesh* pMesh, 
int pIndex=0 ) 
const;
 
  215         bool SplitMeshesPerMaterial(
FbxScene* pScene, 
bool pReplace);
 
  225         bool SplitMeshPerMaterial(
FbxMesh* pMesh, 
bool pReplace);
 
  270 #ifndef DOXYGEN_SHOULD_SKIP_THIS 
  283     bool AddTriangulatedMeshGeometry(
FbxNode* pNode, 
int pUVStepCoeff);
 
  284     bool CreateAndCopyLayerElement(
FbxMesh *pNewMesh, 
FbxMesh *pRefMesh);
 
  285     bool SetLayerElements(
FbxMesh *pNewMesh, 
FbxMesh *pMesh, 
int pPolygonIndex, 
int pPolyPointIndex, 
int pLoopIndex, 
bool pIsSearched, 
bool pIsEndPolygon);
 
  304     static void FbxTriangulation(
int *Index, 
int pNumSide);
 
  311     void TriangulateContinuousSurface(
FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface, 
FbxUInt pPointCountX, 
FbxUInt pPointCountY, 
bool ClockWise=
false);
 
  312     void CheckForZeroWeightInShape(
FbxGeometry *pGeometry);
 
  317     void ConvertShapes(
const FbxGeometry* pSource, 
FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator, 
int pUCount, 
int pVCount);
 
  325     void UpdatePolygon(
FbxMesh *pNewMesh, 
FbxMesh const *pRefMesh, 
int pPolygonIndex, 
int* pNewIndex, 
int &pVerticeIndexMeshTriangulated, 
int &pPolygonIndexMeshTriangulated);
 
  326     void UpdatePolygon(
FbxMesh *pNewMesh, 
FbxMesh const *pRefMesh, 
int pPolygonIndex, 
int* pNewIndex, 
int &pVerticeIndexMeshTriangulated, 
int &pPolygonIndexMeshTriangulated, 
int pTriangleNum);
 
  327     void ResizePolygon(
FbxMesh *pNewMesh, 
int pNewCountVertices = 0, 
int pNewCountPolygons =0, 
bool pClearFlag = 
true);
 
  329     template <
class T1, 
class T2> 
void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb);
 
  333     void FlipControlPoints(
FbxGeometryBase* pPoints, 
int pUCount, 
int pVCount) 
const;
 
  334     bool ConvertMaterialReferenceMode(
FbxMesh* pMeshRef) 
const;
 
  335     void RevertMaterialReferenceModeConversion(
FbxMesh* pMeshRef) 
const;
 
  339     friend class FbxWriter3ds;
 
FBX SDK environment definition. 
 
Contains a collection of FbxLayer objects. 
 
Class for clusters (links). 
 
Represents an element in the scene graph. 
 
A patch is a type of node attribute with parametric surface. 
 
This class contains the description of a 3D scene. 
 
This class is the base class for geometric object such as meshes, NURBS and patches. 
 
A NURBS surface is a type of parametric geometry. 
 
A NURBS surface is a type of parametric geometry. 
 
A Non-Uniform Rational B-Spline (NURBS) curve is a type of parametric geometry. 
 
Define a weighted bidirectional mapping relation on objects. 
 
The base class of geometric objects that support control point deformations (e.g. ...
 
This class provides the functionality to convert geometry nodes attributes (FbxMesh, FbxNurbs and FbxPatch) and mainly focuses on the two major categories: Triangulation and conversion between NURBS and Patches surfaces. 
 
This class is the base class to all types of node attributes. 
 
A mesh is a geometry made of polygons.