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.