KFbxGeometryConverter Class Reference

#include <kfbxgeometryconverter.h>

List of all members.


Detailed Description

This class provides the functionnality to convert geometry nodes attributes (KFbxMesh, KFbxNurb and KFbxPatch) and mainly focuses on the two major categories: Triangulation and conversion between NURBS and Patches surfaces.

Definition at line 72 of file kfbxgeometryconverter.h.


Triangulation

KFbxMesh TriangulateMesh (KFbxMesh const *pMesh)
  Triangulate a mesh.
KFbxMesh TriangulatePatch (KFbxPatch const *pPatch)
  Triangulate a patch.
KFbxMesh TriangulateNurb (KFbxNurb const *pNurb)
  Triangulate a nurb.
bool  TriangulateInPlace (KFbxNode *pNode)
  Triangulate a mesh, patch or nurb contained in a node and preserve the skins and shapes 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 skins and shapes from source to destination geometry.
bool  ComputeGeometryControlPointsWeightedMapping (KFbxGeometry *pSrcGeom, KFbxGeometry *pDstGeom, KFbxWeightedMapping *pSrcToDstWeightedMapping, bool pSwapUV=false)
  Compute a "vertex-correspondence" 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 skin clusters of a nurb.
KFbxNurbsSurface FlipNurbsSurface (KFbxNurbsSurface *pNurb, bool pSwapUV, bool pSwapClusters)
  Flip UV and/or skin clusters 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.
bool  ComputePolygonSmoothingFromEdgeSmoothing (KFbxMesh *pMesh, int pIndex=0) const
  Convert edge smoothing to polygon smoothing group.
bool  ComputeEdgeSmoothingFromPolygonSmoothing (KFbxMesh *pMesh, int pIndex=0) const
  Convert polygon smoothing group to edge smoothing.

Public Member Functions

  KFbxGeometryConverter (KFbxSdkManager *pManager)
  ~KFbxGeometryConverter ()

Constructor & Destructor Documentation

KFbxGeometryConverter ( KFbxSdkManager pManager  ) 


Member Function Documentation

KFbxMesh* TriangulateMesh ( KFbxMesh const *  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 const *  pPatch  ) 

Triangulate a patch.

Parameters:
pPatch  Pointer to the patch to triangulate.
Returns:
Pointer to the new triangulated mesh.
Remarks:
The current deformations (skins & shapes) on the patch are also converted and applied to the resulting mesh.

KFbxMesh* TriangulateNurb ( KFbxNurb const *  pNurb  ) 

Triangulate a nurb.

Parameters:
pNurb  Pointer to the nurb to triangulate.
Returns:
Pointer to the new triangulated mesh.
Remarks:
The current deformations (skins and shapes) on the nurb are also converted and applied to the resulting mesh.

bool TriangulateInPlace ( KFbxNode pNode  ) 

Triangulate a mesh, patch or nurb contained in a node and preserve the skins and shapes animation channels.

Parameters:
pNode  Pointer to the node containing 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.
Remarks:
Altought this method is publicly available, its only use in the FBX SDK is internal to some of the conversion routines declared in this class.

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

Convert skins and shapes from source to destination geometry.

Parameters:
pNode  Pointer to the node containing 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.

Altought this method is publicly available, its only use in the FBX SDK is internal to some of the conversion routines declared in this class.

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

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

Parameters:
pSrcGeom  Pointer to the source geometry.
pDstGeom  Pointer to the destination geometry.
pSrcToDstWeightedMapping  Pointer to the weighted mapping table.
pSwapUV  Set to true to swap UVs.
Returns:
true on success, false if the function fails to compute the correspondence.
Remarks:
Skins 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 skins and shapes 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 skins and shapes 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 skins and shapes 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 skins and shapes 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 skin clusters 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 flipped kFbxNurb, or NULL if the function fails.

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

Flip UV and/or skin clusters 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 flipped 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:
For applications that only supports normals by control points, this function duplicates control points to equal the number of polygon vertices. skins 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.

bool ComputePolygonSmoothingFromEdgeSmoothing ( KFbxMesh pMesh,
int  pIndex = 0  
) const

Convert edge smoothing to polygon smoothing group.

Existing smoothing information is replaced.

Parameters:
pMesh  The mesh that contains the smoothing to be converted.
pIndex  The index of the layer smoothing to be converted.
Returns:
true on success, false otherwise.
Remarks:
The smoothing group is bitwise. Each bit of the integer represents one smoothing group. Therefore, there is a maximum of 32 smoothing groups.

bool ComputeEdgeSmoothingFromPolygonSmoothing ( KFbxMesh pMesh,
int  pIndex = 0  
) const

Convert polygon smoothing group to edge smoothing.

Existing smoothing information is replaced.

Parameters:
pMesh  The mesh that contains the smoothing to be converted.
pIndex  The index of the layer smoothing to be converted
Returns:
true on success, false otherwise.
KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter
KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter KFbxGeometryConverter