MMeshSmoothOptions Class Reference

#include <MMeshSmoothOptions.h>

Class Description

Options for control of smooth mesh generation.

The MMeshSmoothOptions class encapsulates settings that control the generation of smoothed version of a mesh. Meant for use with MFnMesh::generateSmoothMesh().

+ Examples:

Public Types

enum  SubdivisionType {
  kInvalidSubdivision = -1, kCatmullClark = 0, kOpenSubdivCatmullClarkUniform = 2, kOpenSubdivCatmullClarkAdaptive,
  kLastSubdivision
}
 Specifies subdivision algorithm to use for mesh smoothing. More...
 
enum  BoundaryRule {
  kInvalid = -1, kLegacy = 0, kCreaseAll, kCreaseEdge,
  kLast
}
 Specifies how to apply boundary creasing to subd poly object. More...
 
enum  OpenSubdivVertexBoundary {
  kInvalidBoundary = -1, kNone = 0, kSharpEdgesAndCorners, kSharpEdges,
  kAlwaysSharp, kLastBoundary
}
 OpenSubdiv vertex boundary rules. More...
 
enum  OpenSubdivCreaseMethod { kInvalidCreaseMethod = -1, kNormal = 0, kChaikin, kLastCreaseMethod }
 OpenSubdiv crease method. More...
 

Public Member Functions

 MMeshSmoothOptions (void)
 Constructor.
 
virtual ~MMeshSmoothOptions (void)
 Destructor.
 
void setDivisions (int numDivisions, MStatus *ReturnStatus=NULL)
 Sets the number of divisions stored in this options object. More...
 
int divisions (MStatus *ReturnStatus=NULL) const
 Retrieves the level of smoothing these options specify to perform on the mesh. More...
 
void setSmoothness (float smoothness, MStatus *ReturnStatus=NULL)
 Sets the the smoothness parameter for this set of smooth options which has range [0,1] where 1 smooths the faces as much as possible. More...
 
float smoothness (MStatus *ReturnStatus=NULL) const
 Retrieves the smoothness parameter for this set of smooth options which has range [0,1] where 1 smooths the faces as much as possible. More...
 
void setSmoothUVs (bool smoothUVs, MStatus *ReturnStatus=NULL)
 Sets whether or not these options specify to smooth UVs as well as geometry. More...
 
bool smoothUVs (MStatus *ReturnStatus=NULL) const
 Retrieves whether or not these options specify to smooth UVs as well as geometry. More...
 
void setPropEdgeHardness (bool propEdgeHardness, MStatus *ReturnStatus=NULL)
 Sets whether or not these options specify that smooth mesh edges which are a result of edges from the base cage will share the hardness value. More...
 
bool propEdgeHardness (MStatus *ReturnStatus=NULL) const
 Retrieves whether or not these options specify that the smooth mesh edges which are a result of edges from the base cage will share the same hardness value. More...
 
void setKeepBorderEdge (bool keepBorderEdge, MStatus *ReturnStatus=NULL)
 Sets whether or not these options specify that border edges will not be smoothed. More...
 
bool keepBorderEdge (MStatus *ReturnStatus=NULL) const
 Retrieves whether or not these options specify that border edges will not be smoothed. More...
 
void setKeepHardEdge (bool keepHardEdge, MStatus *ReturnStatus=NULL)
 Sets whether or not these options specify that hard edges will not be smoothed. More...
 
bool keepHardEdge (MStatus *ReturnStatus=NULL) const
 Retrieves whether or not these options specify that hard edges will not be smoothed. More...
 
void setBoundaryRule (BoundaryRule rule, MStatus *ReturnStatus=NULL)
 Set the rule used to determine how boundary edges and vertices are creased. More...
 
BoundaryRule boundaryRule (MStatus *ReturnStatus=NULL) const
 Returns the current value for the boundary rule. More...
 
void setOpenSubdivVertexBoundary (OpenSubdivVertexBoundary rule, MStatus *ReturnStatus=NULL)
 Set the rule used to determine how boundary edges and vertices are creased. More...
 
OpenSubdivVertexBoundary openSubdivVertexBoundary (MStatus *ReturnStatus=NULL) const
 Returns the current value for the vertex boundary rule. More...
 
void setOpenSubdivFaceVaryingBoundary (OpenSubdivVertexBoundary smoothing, MStatus *ReturnStatus=NULL)
 Set the boundary rule used to determine how face varying data is interpolated. More...
 
OpenSubdivVertexBoundary openSubdivFaceVaryingBoundary (MStatus *ReturnStatus=NULL) const
 Returns the current value for the face varing (UV) boundary rule. More...
 
void setOpenSubdivSmoothTriangles (bool smoothTriangles, MStatus *ReturnStatus=NULL)
 Sets whether or not "smooth triangles" is enabled. More...
 
bool openSubdivSmoothTriangles (MStatus *ReturnStatus=NULL)
 Retrieves whether or not smooth triangles is enabled. More...
 
void setOpenSubdivCreaseMethod (OpenSubdivCreaseMethod method, MStatus *ReturnStatus=NULL)
 Set the OpenSubdiv crease method. More...
 
OpenSubdivCreaseMethod openSubdivCreaseMethod (MStatus *ReturnStatus=NULL) const
 Returns the current OpenSubdiv crease method. More...
 
void setSubdivisionType (SubdivisionType subdivision, MStatus *ReturnStatus=NULL)
 Set the subdivision algorithm used to control mesh smoothing. More...
 
SubdivisionType subdivisionType (MStatus *ReturnStatus=NULL) const
 Returns the current value for the subdivision type. More...
 

Static Public Member Functions

static const char * className ()
 Returns the name of this class. More...
 

Friends

class MFnMesh
 

Member Enumeration Documentation

Specifies subdivision algorithm to use for mesh smoothing.

Enumerator
kInvalidSubdivision 

Invalid value.

kCatmullClark 

Maya Catmull-Clark.

kOpenSubdivCatmullClarkUniform 

OpenSubdiv Uniform.

kOpenSubdivCatmullClarkAdaptive 

OpenSubdiv Adaptive.

kLastSubdivision 

Last enum value.

Specifies how to apply boundary creasing to subd poly object.

Enumerator
kInvalid 

Invalid value.

kLegacy 

Uses the legacy algorithm, which performed no creasing.

kCreaseAll 

Crease boundary edges & vertices with valence of exactly 2.

kCreaseEdge 

Crease boundary edges only.

kLast 

Last enum value.

OpenSubdiv vertex boundary rules.

Enumerator
kInvalidBoundary 

Invalid value.

kNone 

None.

kSharpEdgesAndCorners 

Don't smooth edges & corners.

kSharpEdges 

Don't smooth edges.

kAlwaysSharp 

Use legacy boundary rules.

kLastBoundary 

Last enum value.

OpenSubdiv crease method.

Enumerator
kInvalidCreaseMethod 

Invalid value.

kNormal 

Normal crease method.

kChaikin 

Chaikin crease method.

kLastCreaseMethod 

Last enum value.

Member Function Documentation

void setDivisions ( int  numDivisions,
MStatus ReturnStatus = NULL 
)

Sets the number of divisions stored in this options object.

Parameters
[in]numDivisionsNumber of divisions.
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kInvalidParameter numDivisions was out of range.
  • MS::kFailure An object error has occured.
+ Examples:
int divisions ( MStatus ReturnStatus = NULL) const

Retrieves the level of smoothing these options specify to perform on the mesh.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
The smoothing level
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setSmoothness ( float  smoothness,
MStatus ReturnStatus = NULL 
)

Sets the the smoothness parameter for this set of smooth options which has range [0,1] where 1 smooths the faces as much as possible.

Parameters
[in]smoothnessThe smoothness
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kInvalidParameter smoothness was out of range.
  • MS::kFailure An object error has occured.
float smoothness ( MStatus ReturnStatus = NULL) const

Retrieves the smoothness parameter for this set of smooth options which has range [0,1] where 1 smooths the faces as much as possible.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
The smoothness parameter
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setSmoothUVs ( bool  smoothUVs,
MStatus ReturnStatus = NULL 
)

Sets whether or not these options specify to smooth UVs as well as geometry.

Parameters
[in]smoothUVsTrue if UVs should be smoothed
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
bool smoothUVs ( MStatus ReturnStatus = NULL) const

Retrieves whether or not these options specify to smooth UVs as well as geometry.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
True if UVs are set to be smoothed
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setPropEdgeHardness ( bool  propEdgeHardness,
MStatus ReturnStatus = NULL 
)

Sets whether or not these options specify that smooth mesh edges which are a result of edges from the base cage will share the hardness value.

Parameters
[in]propEdgeHardnessTrue if smooth edges should share hardness with the base cage
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
bool propEdgeHardness ( MStatus ReturnStatus = NULL) const

Retrieves whether or not these options specify that the smooth mesh edges which are a result of edges from the base cage will share the same hardness value.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
True if smooth edges share hardness with the base cage
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setKeepBorderEdge ( bool  keepBorderEdge,
MStatus ReturnStatus = NULL 
)

Sets whether or not these options specify that border edges will not be smoothed.

Parameters
[in]keepBorderEdgeTrue if border edges should not be smoothed
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
bool keepBorderEdge ( MStatus ReturnStatus = NULL) const

Retrieves whether or not these options specify that border edges will not be smoothed.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
True if border edges will not be smoothed
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setKeepHardEdge ( bool  keepHardEdge,
MStatus ReturnStatus = NULL 
)

Sets whether or not these options specify that hard edges will not be smoothed.

Parameters
[in]keepHardEdgeTrue if hard edges should not be smoothed
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
bool keepHardEdge ( MStatus ReturnStatus = NULL) const

Retrieves whether or not these options specify that hard edges will not be smoothed.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
True if hard edges will not be smoothed
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setBoundaryRule ( MMeshSmoothOptions::BoundaryRule  rule,
MStatus ReturnStatus = NULL 
)

Set the rule used to determine how boundary edges and vertices are creased.

By default, creases are automatically applied to all boundary edges and all vertices that have only 2 incident edges prior to being converted to a smooth mesh.

The possible rules are:

Parameters
[in]ruleto apply
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
MMeshSmoothOptions::BoundaryRule boundaryRule ( MStatus ReturnStatus = NULL) const

Returns the current value for the boundary rule.

See setBoundaryRule() for more details.

Parameters
[out]ReturnStatusStatus code
Returns
Boundary rule.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
void setOpenSubdivVertexBoundary ( MMeshSmoothOptions::OpenSubdivVertexBoundary  rule,
MStatus ReturnStatus = NULL 
)

Set the rule used to determine how boundary edges and vertices are creased.

The possible rules are:

Parameters
[in]ruleto apply
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
MMeshSmoothOptions::OpenSubdivVertexBoundary openSubdivVertexBoundary ( MStatus ReturnStatus = NULL) const

Returns the current value for the vertex boundary rule.

See setOpenSubdivVertexBoundary() for more details.

Parameters
[out]ReturnStatusStatus code
Returns
Vertex Boundary.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
void setOpenSubdivFaceVaryingBoundary ( MMeshSmoothOptions::OpenSubdivVertexBoundary  rule,
MStatus ReturnStatus = NULL 
)

Set the boundary rule used to determine how face varying data is interpolated.

Specifically this determines how UVs are smoothed by OpenSubdiv becease UVs are treated as face varying data.

The possible rules are:

Parameters
[in]ruleto apply
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
MMeshSmoothOptions::OpenSubdivVertexBoundary openSubdivFaceVaryingBoundary ( MStatus ReturnStatus = NULL) const

Returns the current value for the face varing (UV) boundary rule.

See setOpenSubdivFaceVaryingBoundary() for more details.

Parameters
[out]ReturnStatusStatus code
Returns
UV Smoothing.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
void setOpenSubdivSmoothTriangles ( bool  smoothTriangles,
MStatus ReturnStatus = NULL 
)

Sets whether or not "smooth triangles" is enabled.

Parameters
[in]smoothTrianglesTrue if smooth triangles is to be enabled.
[out]ReturnStatusStatus code (see below)
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
bool openSubdivSmoothTriangles ( MStatus ReturnStatus = NULL)

Retrieves whether or not smooth triangles is enabled.

Parameters
[out]ReturnStatusStatus code (see below)
Returns
True if smooth triangles is enabled.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occured.
void setOpenSubdivCreaseMethod ( MMeshSmoothOptions::OpenSubdivCreaseMethod  method,
MStatus ReturnStatus = NULL 
)

Set the OpenSubdiv crease method.

The possible rules are:

Parameters
[in]methodto apply
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
MMeshSmoothOptions::OpenSubdivCreaseMethod openSubdivCreaseMethod ( MStatus ReturnStatus = NULL) const

Returns the current OpenSubdiv crease method.

See setOpenSubdivCreaseMethod() for more details.

Parameters
[out]ReturnStatusStatus code
Returns
Crease method.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
  • MS::kObjectDoesNotExist The base stucture was not initialized properly
void setSubdivisionType ( MMeshSmoothOptions::SubdivisionType  subdivision,
MStatus ReturnStatus = NULL 
)

Set the subdivision algorithm used to control mesh smoothing.

The default subdivision algorithm is Maya Catmull-Clark.

Parameters
[in]subdivisionalgorithm to use
[out]ReturnStatusStatus code
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
MMeshSmoothOptions::SubdivisionType subdivisionType ( MStatus ReturnStatus = NULL) const

Returns the current value for the subdivision type.

See setSubdivisionType() for more details.

Parameters
[out]ReturnStatusStatus code
Returns
Subdivision type.
Status Codes:
  • MS::kSuccess The method was successful.
  • MS::kFailure An object error has occurred.
const char * className ( )
static

Returns the name of this class.

Returns
Name of this class.

The documentation for this class was generated from the following files:
  • MMeshSmoothOptions.h
  • MMeshSmoothOptions.cpp