#include
<MTesselationParams.h>
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.
- kSurface3DDistance A set of isoparams over entire
surface, a specified 3d-distance "udist" apart
- kSurface3DEquiSpaced A set of "unum" isoparams over
entire surface, equally spaced in 3d
- kSurfaceEquiSpaced A set of "unum" isoparams over entire
surface, equally spaced in u
- kSpanEquiSpaced A set of "unum" isoparams per surface
u-span, equally spaced in u
Tesselation format The subdivision criteria for refinement
of the initial mesh is specified as one of three formats;
- kTriangleCountFormat the specified triangle count is
used as a rough estimate of the triangles produced in the
tesselation.
- kGeneralFormat specify which subdivisions types are to
be used in the tesselation. For each subdivision type the
corresponding parameters must be set.
- kStandardFitFormat Tessellate surface with standard fit
ratios. The parameters for this type of refinement are
StdChordHeightRatio, StdFractionalTolerance, StdMinEdgeLength, and
Std3DDelta.
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:
-
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
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 |
( |
|
) |
|
Member Function Documentation
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. |
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 |
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 |
Assignment operator.
- Parameters:
-
[in] |
rhs |
the tesselation parameter to copy |
- Returns:
- A reference to the copied tesselation parameter.