KFbxGeometryConverter Class Reference

#include <kfbxgeometryconverter.h>

Inherits KFbxObject.

Inheritance diagram for KFbxGeometryConverter:

Inheritance graph
List of all members.

Detailed Description

This class provides functions to triangulate and convert geometry node attributes.

Definition at line 78 of file kfbxgeometryconverter.h.

Triangulation

KFbxMesh * TriangulateMesh (KFbxMesh *pMesh)
 Triangulate a mesh.
KFbxMesh * TriangulatePatch (KFbxPatch *pPatch)
 Triangulate a patch.
KFbxMesh * TriangulateNurb (KFbxNurb *pNurb)
 Triangulate a nurb.
bool TriangulateInPlace (KFbxNode *pNode)
 Triangulate a mesh, patch or nurb contained in a node in order to preserve related animation channels.
bool AddAlternateGeometry (KFbxNode *pNode, KFbxGeometry *pSrcGeom, KFbxGeometry *pAltGeom, KFbxWeightedMapping *pSrcToAltWeightedMapping, bool pConvertDeformations)
 Add an "alternate" geometry to the node.
bool ConvertGeometryAnimation (KFbxNode *pNode, KFbxGeometry *pSrcGeom, KFbxGeometry *pDstGeom)
 Convert shape(s) and link(s) from souce to destination geometry.
bool ComputeGeometryControlPointsWeightedMapping (KFbxGeometry *pSrcGeom, KFbxGeometry *pDstGeom, KFbxWeightedMapping *pSrcToDstWeightedMapping, bool pSwapUV=false)
 Compute a "vertex-correspondance" table that helps passing from source to destination geometry.

Geometry Conversion

KFbxNurb * ConvertPatchToNurb (KFbxPatch *pPatch)
 Convert from patch to nurb.
bool ConvertPatchToNurbInPlace (KFbxNode *pNode)
 Convert a patch contained in a node to a nurb.
KFbxNurbsSurface * ConvertPatchToNurbsSurface (KFbxPatch *pPatch)
 Convert a patch to nurb surface.
bool ConvertPatchToNurbsSurfaceInPlace (KFbxNode *pNode)
 Convert a patch contained in a node to a nurb surface.
KFbxNurbsSurface * ConvertNurbToNurbsSurface (KFbxNurb *pNurb)
 Convert a KFbxNurb to a KFbxNurbsSurface.
KFbxNurb * ConvertNurbsSurfaceToNurb (KFbxNurbsSurface *pNurb)
 Convert a KFbxNurbsSurface to a KFbxNurb.
bool ConvertNurbToNurbsSurfaceInPlace (KFbxNode *pNode)
 Convert a nurb, contained in a node, to a nurbs surface.
bool ConvertNurbsSurfaceToNurbInPlace (KFbxNode *pNode)
 Convert a nurb contained in a node to a nurbs surface.

Nurb UV and Links Swapping

KFbxNurb * FlipNurb (KFbxNurb *pNurb, bool pSwapUV, bool pSwapClusters)
 Flip UV and/or links of a nurb.
KFbxNurbsSurface * FlipNurbsSurface (KFbxNurbsSurface *pNurb, bool pSwapUV, bool pSwapClusters)
 Flip UV and/or links of a nurb surface.

Normals By Polygon Vertex Emulation

bool EmulateNormalsByPolygonVertex (KFbxMesh *pMesh)
 Emulate normals by polygon vertex mode for a mesh.
bool ComputeEdgeSmoothingFromNormals (KFbxMesh *pMesh) const
 Create edge smoothing information from polygon-vertex mapped normals.


Member Function Documentation

KFbxMesh* TriangulateMesh ( KFbxMesh *  pMesh  ) 

Triangulate a mesh.

Parameters:
pMesh Pointer to the mesh to triangulate.
Returns:
Pointer to the new triangulated mesh.
Remarks:
This method creates a new mesh, leaving the source mesh unchanged.

KFbxMesh* TriangulatePatch ( KFbxPatch *  pPatch  ) 

Triangulate a patch.

Parameters:
pPatch Pointer to the patch to triangulate.
Returns:
Pointer to the new triangulated mesh.
Remarks:
The links and shapes are also converted to fit the created mesh.

KFbxMesh* TriangulateNurb ( KFbxNurb *  pNurb  ) 

Triangulate a nurb.

Parameters:
pNurb Pointer to the nurb to triangulate.
Returns:
Pointer to the new triangulated mesh.
Remarks:
The links and shapes are also converted to fit the created mesh.

bool TriangulateInPlace ( KFbxNode *  pNode  ) 

Triangulate a mesh, patch or nurb contained in a node in order to preserve related animation channels.

Parameters:
pNode Pointer to the node containng the geometry to triangulate.
Returns:
true on success, or false if the node attribute is not a mesh, a patch or a nurb.
Remarks:
See the remarks for functions TriangulateMesh(), TriangulatePatch() and TriangulateNurb().

bool AddAlternateGeometry ( KFbxNode *  pNode,
KFbxGeometry *  pSrcGeom,
KFbxGeometry *  pAltGeom,
KFbxWeightedMapping *  pSrcToAltWeightedMapping,
bool  pConvertDeformations 
)

Add an "alternate" geometry to the node.

Parameters:
pNode Pointer to the node containing the geometry.
pSrcGeom Pointer to the source geometry.
pAltGeom Pointer to the alternate geometry.
pSrcToAltWeightedMapping Pointer to the weighted mapping table (optional).
pConvertDeformations Flag used only if parameter pSrcToAltWeightedMapping is a valid pointer to a weighted mapping table. Set to true to convert deformations using the weighted mapping table.
Returns:
true on success, or false if the node attribute is not a mesh, a patch or a nurb.

bool ConvertGeometryAnimation ( KFbxNode *  pNode,
KFbxGeometry *  pSrcGeom,
KFbxGeometry *  pDstGeom 
)

Convert shape(s) and link(s) from souce to destination geometry.

Parameters:
pNode Pointer to the node containng the geometry.
pSrcGeom Pointer to the source geometry.
pDstGeom Pointer to the destination geometry.
Returns:
true on success, false otherwise.
Remarks:
Source and destination geometry must belong to the same node and must be linked by a geometry weighted map.

bool ComputeGeometryControlPointsWeightedMapping ( KFbxGeometry *  pSrcGeom,
KFbxGeometry *  pDstGeom,
KFbxWeightedMapping *  pSrcToDstWeightedMapping,
bool  pSwapUV = false 
)

Compute a "vertex-correspondance" table that helps passing from source to destination geometry.

Parameters:
pSrcGeom Pointer to the source geometry.
pDstGeom Pointer to the destination geometry.
pSrcToAltWeightedMapping Pointer to the weighted mapping table.
Returns:
true on success, false if the function fails to compute the correspondance.
Remarks:
Links and shapes are also converted to fit the alternate geometry.

KFbxNurb* ConvertPatchToNurb ( KFbxPatch *  pPatch  ) 

Convert from patch to nurb.

Parameters:
pPatch Pointer to the patch to convert.
Returns:
Created nurb or NULL if the conversion fails.
Remarks:
The patch must be of type eBSPLINE, eBEZIER or eLINEAR.

bool ConvertPatchToNurbInPlace ( KFbxNode *  pNode  ) 

Convert a patch contained in a node to a nurb.

Use this function to preserve the patch's related animation channels.

Parameters:
pNode Pointer to the node containing the patch.
Returns:
true on success, false if the node attribute is not a patch.
Remarks:
The patch must be of type eBSPLINE, eBEZIER or eLINEAR.

KFbxNurbsSurface* ConvertPatchToNurbsSurface ( KFbxPatch *  pPatch  ) 

Convert a patch to nurb surface.

Parameters:
pPatch Pointer to the patch to convert.
Returns:
Created nurb surface or NULL if conversion fails.
Remarks:
The patch must be of type eBSPLINE, eBEZIER or eLINEAR.

bool ConvertPatchToNurbsSurfaceInPlace ( KFbxNode *  pNode  ) 

Convert a patch contained in a node to a nurb surface.

Use this function to preserve the patch's related animation channels.

Parameters:
pNode Pointer to the node containing the patch.
Returns:
true on success, false if the node attribute is not a patch.
Remarks:
The patch must be of type eBSPLINE, eBEZIER or eLINEAR.

KFbxNurbsSurface* ConvertNurbToNurbsSurface ( KFbxNurb *  pNurb  ) 

Convert a KFbxNurb to a KFbxNurbsSurface.

Parameters:
pNurb Pointer to the original nurb
Returns:
A KFbxNurbsSurface that is equivalent to the original nurb.

KFbxNurb* ConvertNurbsSurfaceToNurb ( KFbxNurbsSurface *  pNurb  ) 

Convert a KFbxNurbsSurface to a KFbxNurb.

Parameters:
pNurb Pointer to the original nurbs surface
Returns:
A KFbxNurb that is equivalent to the original nurbs surface.

bool ConvertNurbToNurbsSurfaceInPlace ( KFbxNode *  pNode  ) 

Convert a nurb, contained in a node, to a nurbs surface.

Use this function to preserve the nurb's related animation channels.

Parameters:
pNode Pointer to the node containing the nurb.
Returns:
true on success, false otherwise

bool ConvertNurbsSurfaceToNurbInPlace ( KFbxNode *  pNode  ) 

Convert a nurb contained in a node to a nurbs surface.

Use this function to preserve the nurb's related animation channels.

Parameters:
pNode Pointer to the node containing the nurbs surface.
Returns:
true on success, false otherwise

KFbxNurb* FlipNurb ( KFbxNurb *  pNurb,
bool  pSwapUV,
bool  pSwapClusters 
)

Flip UV and/or links of a nurb.

Parameters:
pNurb Pointer to the Source nurb.
pSwapUV Set to true to swap the UVs.
pSwapClusters Set to true to swap the control point indices of clusters.
Returns:
A fliped kFbxNurb, or NULL if the function fails.

KFbxNurbsSurface* FlipNurbsSurface ( KFbxNurbsSurface *  pNurb,
bool  pSwapUV,
bool  pSwapClusters 
)

Flip UV and/or links of a nurb surface.

Parameters:
pNurb Pointer to the Source nurb surface.
pSwapUV Set to true to swap the UVs.
pSwapClusters Set to true to swap the control point indices of clusters.
Returns:
A fliped kFbxNurbSurface, or NULL if the function fails.

bool EmulateNormalsByPolygonVertex ( KFbxMesh *  pMesh  ) 

Emulate normals by polygon vertex mode for a mesh.

Parameters:
pMesh Pointer to the mesh object.
Returns:
true on success, false if the number of normals in the mesh and in its associated shapes don't match the number of polygon vertices.
Remarks:
Since the FBX file format currently only supports normals by control points, this function duplicates control points to equal the number of polygon vertices. Links and shapes are also converted. As preconditions:
  1. polygons must have been created
  2. the number of normals in the mesh and in its associated shapes must match the number of polygon vertices.

bool ComputeEdgeSmoothingFromNormals ( KFbxMesh *  pMesh  )  const

Create edge smoothing information from polygon-vertex mapped normals.

Existing smoothing information is removed and edge data is created if none exists on the mesh.

Parameters:
pMesh The mesh used to generate edge smoothing.
Returns:
true on success, false otherwise.
Remarks:
The edge smoothing data is placed on Layer 0 of the mesh. Normals do not need to be on Layer 0, since the first layer with per polygon vertex normals is used.