MTesselationParams Class Reference
[OpenMaya - API module for common classes]

#include <MTesselationParams.h>
Collaboration diagram for MTesselationParams:
Collaboration graph
[legend]

List of all members.


Detailed Description

Tesselation parameters.

This class provides control over the tesselation operation. This class is meant to be used in conjunction with the tesselate method of MFnNurbsSurface.

The tesselation operation works by building an initial mesh and then refining that mesh until certain subdivision criteria are met. This class provides control over both the method of construction of the initial mesh and also the criteria for subsequent refinement. The initial tesselation is specified by the polygon output type, and the isoparm type. The secondary tesselation (or subdivision) is specified by the tesselation format.

Output types The output type can be specified as either kTriangles or kQuads. If triangles are specified then all the polygons in the initial mesh will be triangles. If quads are specified then whenever possible the polygons will be quads.

Isoparm type The isoparm type specifies how the initial mesh is to be built.

Tesselation format The subdivision criteria for refinement of the initial mesh is specified as one of three formats; Subdivision flags If the tesselation format is general then you can choose which criteria you would like to use in the tesselation. For each criterion, there is an "use" flag (in other words, is this used?) together with the data for the criterion.

Public Types

enum   TessFormat { kTriangleCountFormat, kStandardFitFormat, kGeneralFormat }
  Tesselation formats. More...
enum   PolyType { kTriangles, kQuads }
  Types of polygons to use in the result. More...
enum   IsoparmType { kSurface3DDistance, kSurface3DEquiSpaced, kSurfaceEquiSpaced, kSpanEquiSpaced }
  Isoparm types. More...
enum   SubdivisionType {
   kUseFractionalTolerance, kUseChordHeightRatio, kUseMinEdgeLength, kUseMaxEdgeLength,
   kUseMaxNumberPolys, kUseMaxSubdivisionLevel, kUseMinScreenSize, kUseMaxUVRectangleSize,
   kUseTriangleEdgeSwapping, kUseRelativeTolerance, kUseEdgeSmooth, kLastFlag
}
  Subdivision flags. More...

Public Member Functions

  MTesselationParams (TessFormat format=kStandardFitFormat, PolyType=kTriangles)
  MTesselationParams (const MTesselationParams &)
  ~MTesselationParams ()
void  setFormatType (TessFormat type)
void  setOutputType (PolyType type)
void  setTriangleCount (int)
void  setStdChordHeightRatio (double)
void  setStdFractionalTolerance (double)
void  setStdMinEdgeLength (double)
void  setSubdivisionFlag (SubdivisionType type, bool use)
void  setFitTolerance (double)
void  setChordHeightRatio (double)
void  setMinEdgeLength (double)
void  setMaxEdgeLength (double)
void  setMaxNumberPolys (int)
void  setMaxSubdivisionLevel (double)
void  setMinScreenSize (double, double)
void  setWorldspaceToScreenTransform (MMatrix &)
void  setMaxUVRectangleSize (double, double)
void  setRelativeFitTolerance (double)
void  setEdgeSmoothFactor (double)
void  set3DDelta (double)
void  setUIsoparmType (IsoparmType type)
void  setVIsoparmType (IsoparmType type)
void  setUNumber (int count)
void  setVNumber (int count)
void  setBoundingBoxDiagonal (double distance)
void  setUDistanceFraction (double value)
void  setVDistanceFraction (double value)
MTesselationParams operator= (const MTesselationParams &rhs)

Friends

class  MFnNurbsSurface

Member Enumeration Documentation

Tesselation formats.

Enumerator:
kTriangleCountFormat   
kStandardFitFormat   
kGeneralFormat   

Types of polygons to use in the result.

Enumerator:
kTriangles   
kQuads   

Isoparm types.

Enumerator:
kSurface3DDistance   
kSurface3DEquiSpaced   
kSurfaceEquiSpaced   
kSpanEquiSpaced   

Subdivision flags.

Enumerator:
kUseFractionalTolerance   
kUseChordHeightRatio   
kUseMinEdgeLength   
kUseMaxEdgeLength   
kUseMaxNumberPolys   
kUseMaxSubdivisionLevel   
kUseMinScreenSize   
kUseMaxUVRectangleSize   
kUseTriangleEdgeSwapping   
kUseRelativeTolerance   
kUseEdgeSmooth   
kLastFlag   

Constructor & Destructor Documentation

MTesselationParams::MTesselationParams ( MTesselationParams::TessFormat  format = kStandardFitFormat,
MTesselationParams::PolyType  outputType = kTriangles  
)

Constructor. Creates a tesselation parameter object.

The default values for an MTesselationParam object are as follows:

  • tesselation format kStandardFit
  • output type kTriangles
  • Standard Fit defaults
  • StdChordHeightRatio = 0.1
  • StdFractionalTolerance = 0.01
  • StdMinEdgeLength = 0.001
  • Std3DDelta = 0.1
  • U,V isoparm based parameters
  • UIsoParmType = kSurface3DDistance;
  • VIsoParmType = kSurface3DDistance;
  • UNumber = 4.0;
  • VNumber = 4.0;
  • fUDistanceFraction = 0.1;
  • fVDistanceFraction = 0.1;
Parameters:
[in]  format  The type of tesselation to be performed
[in]  outputType  Specifies whether polygons will all be triangles

MTesselationParams::MTesselationParams ( const MTesselationParams params  ) 

Copy Constructor.

MTesselationParams::~MTesselationParams (  ) 

Destructor.


Member Function Documentation

void MTesselationParams::setFormatType ( MTesselationParams::TessFormat  format  ) 

Sets the tesselation format. The tesselation format is used in the secondary tesselation stage to specify the subdivision criteria used in refining the initial mesh.

Parameters:
[in]  format  the subdivision format. See the class description for list of format types and descriptions.

void MTesselationParams::setOutputType ( MTesselationParams::PolyType  outputType  ) 

Specifies the type of polygons in the tesselated object.

The output type can be specified as either triangles or quads. If triangles are specified then all the polygons in the tesselated object will be triangles. If quads are specified then whenever possible the polygons will be quads.

Parameters:
[in]  outputType  the type of polygon in the tesselated object

void MTesselationParams::setTriangleCount ( int  count  ) 

Sets the approximate number of triangles for the tesselated object when the format is kTriangleCountFormat.

Parameters:
[in]  count  The approximate number of triangular polygons in the tesselated object

void MTesselationParams::setStdChordHeightRatio ( double  value  ) 

Sets the chord height ratio which is used when the tesselation format is kStandardFitFormat.

Parameters:
[in]  value  the chord height ration value to be set

void MTesselationParams::setStdFractionalTolerance ( double  value  ) 

Sets the fractional tolerance which is used when the tesselation format is kStandardFitFormat.

The fractional tolerance is the fraction of box diagonal to be used as absolute 3-d fit tolerance. Suggested value: 0.01

Parameters:
[in]  value  the fractional tolerance value to be set

void MTesselationParams::setStdMinEdgeLength ( double  value  ) 

Sets the minimum edge length which is used when the tesselation format is kStandardFitFormat.

min_edge_fraction Fraction of box diagonal to be used as minimum 3-d edge length. Suggested value: 0.0001

Parameters:
[in]  value  the minimum edge length to be set

void MTesselationParams::setSubdivisionFlag ( MTesselationParams::SubdivisionType  subType,
bool  use  
)

Sets the types of subdivision used when the tesselation format is general. This method allows you to set the types of subdivision to be performed after the initial mesh is created. The use flag specifies whether to use the given subdivision type in the secondary tesselation.

Parameters:
[in]  subType  the subdivision type to be specified
[in]  use  specifies whether to use subType subdivision

void MTesselationParams::setFitTolerance ( double  value  ) 

Sets the absolute fit tolerance. This value is used when the subdivision criteria kUseFractionalTolerance has been set.

NOTE: The maya renderer uses this subdivision criteria for chord height.

Parameters:
[in]  value  the new absolute fit tolerance value to be set

void MTesselationParams::setChordHeightRatio ( double  value  ) 

Sets the chord height ratio. This value is used when the subdivision criteria kUseChordHeightRatio has been set.

NOTE: The maya renderer uses relative fit tolerance for the chord height ration subdivision criteria.

Parameters:
[in]  value  the new chord height ratio value to be set

void MTesselationParams::setMinEdgeLength ( double  value  ) 

Sets the minimum edge length. This value is used when the subdivision criteria kUseMinEdgeLength has been set.

Parameters:
[in]  value  the new minimum edge length value to be set

void MTesselationParams::setMaxEdgeLength ( double  value  ) 

Sets the maximum edge length. This value is used when the subdivision criteria kUseMaxEdgeLength has been set.

Parameters:
[in]  value  the new maximum edge length value to be set

void MTesselationParams::setMaxNumberPolys ( int  value  ) 

Sets the maximum number of polygons. This value is used when the subdivision criteria kUseMaxNumberPolys has been set.

Parameters:
[in]  value  the new maximum number of polygons value to be set

void MTesselationParams::setMaxSubdivisionLevel ( double  value  ) 

Sets the maximum subdivision level. This value is used when the subdivision criteria kUseMaxSubdivisionLevel has been set.

Parameters:
[in]  value  the new maximum subdivision level value to be set

void MTesselationParams::setMinScreenSize ( double  x,
double  y  
)

If polygons are smaller than the specified screen size then the subdivision will not proceed. These values are used when the subdivision criteria kUseMinScreenSize has been set.

Parameters:
[in]  x  the width value to compare against
[in]  y  the height value to compare against

void MTesselationParams::setWorldspaceToScreenTransform ( MMatrix value  ) 

The transformation matrix used in the minimum screen size test for subdivision. This value is used when the subdivision criteria kUseMinScreenSize has been set.

Parameters:
[in]  value  The world-space transformation matrix

void MTesselationParams::setMaxUVRectangleSize ( double  u,
double  v  
)

Sets the maximum polygon size in uv-space for secondary tesselation. Polygons will be greater than the specified size.

Parameters:
[in]  u  horizontal screen space size
[in]  v  vertical screen space size

void MTesselationParams::setRelativeFitTolerance ( double  value  ) 

Sets the relative fit tolerance. This value is used when the subdivision criteria kUseRelativeTolerance has been set.

NOTE: The maya renderer uses this subdivision criteria for chord height ratio. To match the value that the render tesselator uses, use 1.0 - value.

Parameters:
[in]  value  the new relative fit tolerance value to be set

void MTesselationParams::setEdgeSmoothFactor ( double  smoothness  ) 

Sets the edge smoothness factor used for the Edge Smooth secondary tesselation criteria.

The value should be 0 (not smooth) to 1 (very smooth).

NOTE: the maya renderer uses a value of 0.95 as the edge smoothness factor.

Parameters:
[in]  smoothness  a factor from 0(not smooth) to 1(very smooth) indicating nurbs-edge smoothness

void MTesselationParams::set3DDelta ( double  delta  ) 

Sets the fraction of the box diagonal to be used as 3-d spacing for u- and v-isoparams on face/surface to make up the initial grid for the mesh. This is used when the tesselation format is kStandardFitFormat.

NOTE: the maya renderer uses a default value of 0.1 for this value.

Parameters:
[in]  delta  the fractional spacing factor, a value between 0 and 1

void MTesselationParams::setUIsoparmType ( IsoparmType  uValue  ) 

Sets the u-isoparm type to be used in the initial tesselation.

Parameters:
[in]  uValue  the u-isoparm type

void MTesselationParams::setVIsoparmType ( IsoparmType  vValue  ) 

Sets the v-isoparm type to be used in the initial tesselation.

Parameters:
[in]  vValue  the v-isoparm type

void MTesselationParams::setUNumber ( int  count  ) 

This is the number of u isoparms used in the initial tesselation. This value is only used for kSurface3DEquiSpaced, kSurfaceEquiSpaced, and kSpanEquiSpaced isoparm types.

Note that in the resultant tessellation, any duplicate vertices and edges (eg at periodic boundaries) will be replaced with shared common vertices and edges.

Parameters:
[in]  count  the number of u isoparms

void MTesselationParams::setVNumber ( int  count  ) 

This is the number of v isoparms used in the initial tesselation. This value is only used for kSurface3DEquiSpaced, kSurfaceEquiSpaced, and kSpanEquiSpaced isoparm types.

Note that in the resultant tessellation, any duplicate vertices and edges (eg at periodic boundaries) will be replaced with shared common vertices and edges.

Parameters:
[in]  count  the number of v isoparms

void MTesselationParams::setBoundingBoxDiagonal ( double  distance  ) 

Sets the diagonal distance of the bounding box of the surface.

Parameters:
[in]  distance  the diagonal bounding box distance

void MTesselationParams::setUDistanceFraction ( double  value  ) 

Sets the fraction of the 3D surface bounding box diagonal for the kSurface3DDistance isoparm type. The value is 0.0 for other types.

Parameters:
[in]  value  the bounding box distance fraction to set

void MTesselationParams::setVDistanceFraction ( double  value  ) 

Sets the fraction of the 3D surface bounding box diagonal for the kSurface3DDistance isoparm type. The value is 0.0 for other types.

Parameters:
[in]  value  the bounding box distance fraction to set

MTesselationParams & MTesselationParams::operator= ( const MTesselationParams rhs  ) 

Assignment operator.

Parameters:
[in]  rhs  the tesselation parameter to copy
Returns:
A reference to the copied tesselation parameter.

Autodesk® Maya® 2011 © 1997-2010 Autodesk, Inc. All rights reserved. Generated with doxygen 1.5.6