13 #ifndef _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_
14 #define _FBXSDK_UTILS_GEOMETRY_CONVERTER_H_
29 class FbxSurfaceEvaluator;
49 bool Triangulate(
FbxScene* pScene,
bool pReplace,
bool pLegacy=
false);
88 bool ConvertPatchToNurbsInPlace(
FbxNode* pNode);
103 bool ConvertPatchToNurbsSurfaceInPlace(
FbxNode* pNode);
122 bool ConvertNurbsToNurbsSurfaceInPlace(
FbxNode* pNode);
129 bool ConvertNurbsSurfaceToNurbsInPlace(
FbxNode* pNode);
170 bool EmulateNormalsByPolygonVertex(
FbxMesh* pMesh);
181 bool ComputeEdgeSmoothingFromNormals(
FbxMesh* pMesh )
const;
192 bool ComputePolygonSmoothingFromEdgeSmoothing(
FbxMesh* pMesh,
int pIndex=0 )
const;
201 bool ComputeEdgeSmoothingFromPolygonSmoothing(
FbxMesh* pMesh,
int pIndex=0 )
const;
211 bool SplitMeshesPerMaterial(
FbxScene* pScene,
bool pReplace);
221 bool SplitMeshPerMaterial(
FbxMesh* pMesh,
bool pReplace);
258 #ifndef DOXYGEN_SHOULD_SKIP_THIS
271 bool AddTriangulatedMeshGeometry(
FbxNode* pNode,
int pUVStepCoeff);
272 bool CreateAndCopyLayerElement(
FbxMesh *pNewMesh,
FbxMesh *pRefMesh);
273 bool SetLayerElements(
FbxMesh *pNewMesh,
FbxMesh *pMesh,
int pPolygonIndex,
int pPolyPointIndex,
int pLoopIndex,
bool pIsSearched,
bool pIsEndPolygon);
292 static void FbxTriangulation(
int *Index,
int pNumSide);
299 void TriangulateContinuousSurface(
FbxMesh* pMesh, FbxSurfaceEvaluator* pSurface,
FbxUInt pPointCountX,
FbxUInt pPointCountY,
bool ClockWise=
false);
300 void CheckForZeroWeightInShape(
FbxGeometry *pGeometry);
305 void ConvertShapes(
const FbxGeometry* pSource,
FbxGeometry* pDestination, FbxSurfaceEvaluator* pEvaluator,
int pUCount,
int pVCount);
313 void UpdatePolygon(
FbxMesh *pNewMesh,
FbxMesh const *pRefMesh,
int pPolygonIndex,
int* pNewIndex,
int &pVerticeIndexMeshTriangulated,
int &pPolygonIndexMeshTriangulated);
314 void UpdatePolygon(
FbxMesh *pNewMesh,
FbxMesh const *pRefMesh,
int pPolygonIndex,
int* pNewIndex,
int &pVerticeIndexMeshTriangulated,
int &pPolygonIndexMeshTriangulated,
int pTriangleNum);
315 void ResizePolygon(
FbxMesh *pNewMesh,
int pNewCountVertices = 0,
int pNewCountPolygons =0,
bool pClearFlag =
true);
317 template <
class T1,
class T2>
void ConvertNurbs(T1* pNewNurbs, T2* pOldNurb);
321 void FlipControlPoints(
FbxGeometryBase* pPoints,
int pUCount,
int pVCount)
const;
322 bool ConvertMaterialReferenceMode(
FbxMesh* pMeshRef)
const;
323 void RevertMaterialReferenceModeConversion(
FbxMesh* pMeshRef)
const;
327 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.