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);
273 #ifndef DOXYGEN_SHOULD_SKIP_THIS
286 bool AddTriangulatedMeshGeometry(
FbxNode* pNode,
int pUVStepCoeff);
287 bool CreateAndCopyLayerElement(
FbxMesh *pNewMesh,
FbxMesh *pRefMesh);
288 bool SetLayerElements(
FbxMesh *pNewMesh,
FbxMesh *pMesh,
int pPolygonIndex,
int pPolyPointIndex,
int pLoopIndex,
bool pIsSearched,
bool pIsEndPolygon);
307 static void FbxTriangulation(
int *Index,
int pNumSide);
314 void TriangulateContinuousSurface(
FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface,
FbxUInt pPointCountX,
FbxUInt pPointCountY,
bool ClockWise=
false);
315 void CheckForZeroWeightInShape(
FbxGeometry *pGeometry);
320 void ConvertShapes(
const FbxGeometry* pSource,
FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator,
int pUCount,
int pVCount);
328 void UpdatePolygon(
FbxMesh *pNewMesh,
FbxMesh const *pRefMesh,
int pPolygonIndex,
int* pNewIndex,
int &pVerticeIndexMeshTriangulated,
int &pPolygonIndexMeshTriangulated);
329 void UpdatePolygon(
FbxMesh *pNewMesh,
FbxMesh const *pRefMesh,
int pPolygonIndex,
int* pNewIndex,
int &pVerticeIndexMeshTriangulated,
int &pPolygonIndexMeshTriangulated,
int pTriangleNum);
330 void ResizePolygon(
FbxMesh *pNewMesh,
int pNewCountVertices = 0,
int pNewCountPolygons =0,
bool pClearFlag =
true);
332 template <
class T1,
class T2>
void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb);
336 void FlipControlPoints(
FbxGeometryBase* pPoints,
int pUCount,
int pVCount)
const;
337 bool ConvertMaterialReferenceMode(
FbxMesh* pMeshRef)
const;
338 void RevertMaterialReferenceModeConversion(
FbxMesh* pMeshRef)
const;
342 friend class FbxWriter3ds;
345 static bool mValidateTriangulation;
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.