#include <MItMeshVertex.h>
Polygon vertex iterator.
This class is the iterator for polygonal vertices.
The iterator functions in two modes depending on whether a component is specified. When a component is not given or is NULL the iteration will be over all vertices for the polygon. When a component is given this iterator will iterate over the vertices specified in the component. When iterating over components a DAG path to the surface must also be supplied.
Public Member Functions | |
MItMeshVertex (MObject &polyObject, MStatus *ReturnStatus=NULL) | |
Constructor. More... | |
MItMeshVertex (const MDagPath &polyObject, MObject &component=MObject::kNullObj, MStatus *ReturnStatus=NULL) | |
Constructor. More... | |
virtual | ~MItMeshVertex () |
Destructor. More... | |
bool | isDone (MStatus *ReturnStatus=NULL) |
Indicates if all of the vertices have been traversed yet. More... | |
MStatus | next () |
Advance to the next vertex in the iteration. More... | |
MStatus | reset () |
Reset the iterator to the first vertex. More... | |
MStatus | reset (MObject &polyObject) |
Reset the iterator to the first vertex in the supplied polygon. More... | |
MStatus | reset (const MDagPath &polyObject, MObject &component=MObject::kNullObj) |
Reset the iterator with the given polygon and component. More... | |
int | count (MStatus *ReturnStatus=NULL) |
Return the number of vertices in the iteration. More... | |
int | index (MStatus *ReturnStatus=NULL) |
Returns the index of the current vertex in the vertex list for this polygonal object. More... | |
MObject | vertex (MStatus *ReturnStatus=NULL) |
This method is obsolete. More... | |
MObject | currentItem (MStatus *ReturnStatus=NULL) |
Get the current vertex in the iteration as a component. More... | |
MPoint | position (MSpace::Space space=MSpace::kObject, MStatus *ReturnStatus=NULL) |
Return the position of the current vertex in the specified space. More... | |
MStatus | setPosition (const MPoint &point, MSpace::Space space=MSpace::kObject) |
Set the position of the current vertex in the given space. More... | |
MStatus | translateBy (const MVector &vector, MSpace::Space space=MSpace::kObject) |
Translate the current vertex by the amount specified by the given vector. More... | |
MStatus | getNormal (MVector &vector, MSpace::Space space=MSpace::kObject) |
Return the normal or averaged normal if unshared of the current vertex. More... | |
MStatus | getNormal (MVector &vector, int faceIndex, MSpace::Space space=MSpace::kObject) |
Return the normal of the current vertex in the specified face. More... | |
MStatus | getNormals (MVectorArray &vectorArray, MSpace::Space space=MSpace::kObject) |
Return the normals of the current vertex for all faces. More... | |
MStatus | getNormalIndices (MIntArray &normalIndices) const |
This method returns the normal indices of the face/vertex associated with the current vertex. More... | |
MStatus | numUVs (int &count, const MString *uvSet=NULL) |
This method returns the number of unique UVs mapped on this vertex. More... | |
MStatus | setUV (float2 &uvPoint, const MString *uvSet=NULL) |
Set the shared UV value at this vertex. More... | |
MStatus | getUV (float2 &uvPoint, const MString *uvSet=NULL) |
Get the shared UV value at this vertex. More... | |
MStatus | setUV (int faceId, float2 &uvPoint, const MString *uvSet=NULL) |
Set the UV value for the given face at the current vertex. More... | |
MStatus | getUV (int faceId, float2 &uvPoint, const MString *uvSet=NULL) const |
Get the UV value for the give facen at the current vertex. More... | |
MStatus | setUVs (MFloatArray &uArray, MFloatArray &vArray, MIntArray &faceIds, const MString *uvSet=NULL) |
Set the UV value for the specified faces at the current vertex. More... | |
MStatus | getUVs (MFloatArray &uArray, MFloatArray &vArray, MIntArray &faceIds, const MString *uvSet=NULL) const |
Get the UV values for all mapped faces at the current vertex. More... | |
MStatus | getUVIndices (MIntArray &uvIndices, const MString *uvSet=NULL) const |
This method returns the uv indices into the normal array see MFnMesh::getUVs() of the current vertex. More... | |
MStatus | updateSurface () |
Signal that this polygonal surface has changed and needs to redraw itself. More... | |
MStatus | geomChanged () |
Reset the geom pointer in the MItMeshVertex. More... | |
MStatus | setIndex (int index, int &prevIndex) |
This method sets the index of the current vertex to be accessed. More... | |
MStatus | getConnectedFaces (MIntArray &faceList) |
This method gets the indices of the faces connected to the current vertex. More... | |
MStatus | getConnectedEdges (MIntArray &edgeList) |
This method gets the indices of the edges connected to the current vertex. More... | |
MStatus | getConnectedVertices (MIntArray &vertexList) |
This method gets the indices of the vertices surrounding the current vertex. More... | |
MStatus | numConnectedFaces (int &faceCount) const |
This Method checks for the number of Connected Faces. More... | |
MStatus | numConnectedEdges (int &edgeCount) const |
This Method checks for the number of connected Edges on this vertex. More... | |
bool | connectedToFace (int faceIndex, MStatus *ReturnStatus=NULL) |
This method determines whether the given face contains the current vertex. More... | |
bool | connectedToEdge (int edgeIndex, MStatus *ReturnStatus=NULL) |
This method determines whether the given edge contains the current vertex. More... | |
MStatus | getOppositeVertex (int &vertexId, int edgeId) |
This gets the other vertex of the given edge. More... | |
bool | onBoundary (MStatus *ReturnStatus=NULL) |
This method determines whether the current vertex is on a Boundary. More... | |
bool | hasColor (MStatus *ReturnStatus=NULL) const |
This method determines whether the current Vertex has a color set for one or more faces. More... | |
bool | hasColor (int faceIndex, MStatus *ReturnStatus=NULL) const |
This method determines whether the given face has a color set for the current vertex. More... | |
MStatus | getColor (MColor &color, int faceIndex, const MString *colorSetName=NULL) const |
This method gets the color of the current vertex in the specified face. More... | |
MStatus | getColor (MColor &color, const MString *colorSetName=NULL) const |
This method gets the average color of the vertex. More... | |
MStatus | getColors (MColorArray &colors, const MString *colorSetName=NULL) const |
This method gets the colors of the current vertex for each face it belongs to. More... | |
MStatus | getColorIndices (MIntArray &colorIndex, const MString *colorSetName=NULL) const |
This method returns the colorIndices into the color array see MFnMesh::getColors() of the current vertex. More... | |
Static Public Member Functions | |
static const char * | className () |
Returns the name of this class. More... | |
MItMeshVertex | ( | MObject & | polyObject, |
MStatus * | ReturnStatus = NULL |
||
) |
Constructor.
Creates an iterator for all vertices of the given surface.
[in] | polyObject | The surface to iterate over |
[out] | ReturnStatus | Status code |
MItMeshVertex | ( | const MDagPath & | polyObject, |
MObject & | component = MObject::kNullObj , |
||
MStatus * | ReturnStatus = NULL |
||
) |
Constructor.
Creates an iterator for the vertices of the given component. If no component is specified then the iteration will be for all vertices of the given polygon.
[in] | polyObject | The surface to iterate over |
[in] | component | The vertices of the polyObject to iterate over |
[out] | ReturnStatus | Status code |
|
virtual |
Destructor.
Frees up storage used by the iterator.
bool isDone | ( | MStatus * | ReturnStatus = NULL | ) |
Indicates if all of the vertices have been traversed yet.
[out] | ReturnStatus | Status code |
MStatus next | ( | ) |
Advance to the next vertex in the iteration.
MStatus reset | ( | ) |
Reset the iterator to the first vertex.
Reset the iterator to the first vertex in the supplied polygon.
[in] | polyObject | The polygon for the iteration |
MStatus reset | ( | const MDagPath & | polyObject, |
MObject & | component = MObject::kNullObj |
||
) |
Reset the iterator with the given polygon and component.
If component is null then the iteration will be for all vertices in the given polygon.
[in] | polyObject | The surface to iterate over |
[in] | component | The vertices of the polyObject to iterate over |
int count | ( | MStatus * | ReturnStatus = NULL | ) |
Return the number of vertices in the iteration.
[out] | ReturnStatus | Status code |
int index | ( | MStatus * | ReturnStatus = NULL | ) |
Returns the index of the current vertex in the vertex list for this polygonal object.
Polygonal objects contain a list of vertices. Faces and edges are specified as indicies from this list, in this way vertices can be shared amoung faces and edges.
[out] | ReturnStatus | Status code |
This method is obsolete.
Get the current vertex in the iteration as a component.
Components are used to specify one or more vertices and are usefull in operating on groups of non-contiguous vertices for a surface. Components do not contain any information about the surface that they refer to so an MDagPath must be specified when dealing with components.
[out] | ReturnStatus | Status code |
Get the current vertex in the iteration as a component.
Components are used to specify one or more vertices and are usefull in operating on groups of non-contiguous vertices for a surface. Components do not contain any information about the surface that they refer to so an MDagPath must be specified when dealing with components.
[out] | ReturnStatus | Status code |
MPoint position | ( | MSpace::Space | space = MSpace::kObject , |
MStatus * | ReturnStatus = NULL |
||
) |
Return the position of the current vertex in the specified space.
Object space ignores all transformations for the polygon, world space includes all such transformations.
[in] | space | The transformation space |
[out] | ReturnStatus | Status code |
MStatus setPosition | ( | const MPoint & | point, |
MSpace::Space | space = MSpace::kObject |
||
) |
Set the position of the current vertex in the given space.
[in] | point | The new position for the current vertex |
[in] | space | Transformation space |
MStatus translateBy | ( | const MVector & | vector, |
MSpace::Space | space = MSpace::kObject |
||
) |
Translate the current vertex by the amount specified by the given vector.
[in] | vector | The amount of translation |
[in] | space | The transformation space |
MStatus getNormal | ( | MVector & | vector, |
MSpace::Space | space = MSpace::kObject |
||
) |
Return the normal or averaged normal if unshared of the current vertex.
[out] | vector | The normal. |
[in] | space | The transformation space. |
MStatus getNormal | ( | MVector & | vector, |
int | faceIndex, | ||
MSpace::Space | space = MSpace::kObject |
||
) |
Return the normal of the current vertex in the specified face.
[out] | vector | The normal. |
[in] | faceIndex | face index to get normal for |
[in] | space | The transformation space |
MStatus getNormals | ( | MVectorArray & | normalArray, |
MSpace::Space | space = MSpace::kObject |
||
) |
Return the normals of the current vertex for all faces.
[out] | normalArray | The normals. |
[in] | space | The transformation space. |
This method returns the normal indices of the face/vertex associated with the current vertex.
[out] | normalIndices | The normal indices. |
This method returns the number of unique UVs mapped on this vertex.
[out] | uvCount | The UV count |
[in] | uvSet | Name of the uv set to work with |
Set the shared UV value at this vertex.
[in] | uvPoint | The UV value to set. |
[in] | uvSet | Name of the UV set to work with |
Get the shared UV value at this vertex.
[out] | uvPoint | UV value. |
[in] | uvSet | Name of the uv set to work with. |
Set the UV value for the given face at the current vertex.
[in] | faceId | Index of required face |
[in] | uvPoint | Value of the UV point |
[in] | uvSet | Name of the uv set to work with |
Get the UV value for the give facen at the current vertex.
[in] | faceId | Index of the required face |
[out] | uvPoint | UV value. |
[in] | uvSet | Name of the uv set to work with |
MStatus setUVs | ( | MFloatArray & | uArray, |
MFloatArray & | vArray, | ||
MIntArray & | faceIds, | ||
const MString * | uvSet = NULL |
||
) |
Set the UV value for the specified faces at the current vertex.
If the face is not already mapped, the value will not be set. If at least ne face was previously mapped, the method should succeed. If no faces were mapped, the method will fail.
[in] | uArray | All the U values - in local face order |
[in] | vArray | The corresponding V values |
[in] | faceIds | The corresponding face Ids |
[in] | uvSet | Name of the uv set to work with |
MStatus getUVs | ( | MFloatArray & | uArray, |
MFloatArray & | vArray, | ||
MIntArray & | faceIds, | ||
const MString * | uvSet = NULL |
||
) | const |
Get the UV values for all mapped faces at the current vertex.
If at least one face was mapped the method will succeed.
[out] | uArray | U values in local face order. |
[out] | vArray | V values in local face order. |
[out] | faceIds | The corresponding face Ids |
[in] | uvSet | Name of the uv set to work with |
This method returns the uv indices into the normal array see MFnMesh::getUVs() of the current vertex.
[out] | uvIndices | UV indices. |
[in] | uvSet | Name of the uv set. |
MStatus updateSurface | ( | ) |
Signal that this polygonal surface has changed and needs to redraw itself.
MStatus geomChanged | ( | ) |
Reset the geom pointer in the MItMeshVertex.
If you're using MFnMesh to update Normals or Color per vertex while iterating, you must call geomChanged on the iteratior immediately after the MFnMesh call to make sure that your geometry is up to date. A crash may result if this method is not called. A similar approach must be taken for updating upstream vertex tweaks with an MPlug. After the update, call this method.
MStatus setIndex | ( | int | index, |
int & | prevIndex | ||
) |
This method sets the index of the current vertex to be accessed.
The current vertex will no longer be in sync with any previous iteration.
[in] | index | Index of desired vertex to access. |
[out] | prevIndex | Index of vertex which was current before the change. |
This method gets the indices of the faces connected to the current vertex.
[out] | faces | Face indices. |
This method gets the indices of the edges connected to the current vertex.
[out] | edges | Edge indices. |
This method gets the indices of the vertices surrounding the current vertex.
[out] | vertices | Indices of connected vertices. |
MStatus numConnectedFaces | ( | int & | faceCount | ) | const |
This Method checks for the number of Connected Faces.
[in] | faceCount | The number of connected faces. |
MStatus numConnectedEdges | ( | int & | edgeCount | ) | const |
This Method checks for the number of connected Edges on this vertex.
[in] | edgeCount | The number of connected edges. |
bool connectedToFace | ( | int | index, |
MStatus * | ReturnStatus = NULL |
||
) |
This method determines whether the given face contains the current vertex.
[in] | index | Index of face to check. |
[out] | ReturnStatus | Status code |
bool connectedToEdge | ( | int | index, |
MStatus * | ReturnStatus = NULL |
||
) |
This method determines whether the given edge contains the current vertex.
[in] | index | Index of edge to check. |
[out] | ReturnStatus | Status code |
MStatus getOppositeVertex | ( | int & | vertexId, |
int | edgeId | ||
) |
This gets the other vertex of the given edge.
[out] | vertexId | Id of the given edge's opposite vertex. |
[in] | edgeId | The edge to get the other vertex for |
bool onBoundary | ( | MStatus * | ReturnStatus = NULL | ) |
This method determines whether the current vertex is on a Boundary.
[out] | ReturnStatus | Status code |
bool hasColor | ( | MStatus * | ReturnStatus = NULL | ) | const |
This method determines whether the current Vertex has a color set for one or more faces.
[out] | ReturnStatus | Status code |
bool hasColor | ( | int | index, |
MStatus * | ReturnStatus = NULL |
||
) | const |
This method determines whether the given face has a color set for the current vertex.
[in] | index | Index of face to check. |
[out] | ReturnStatus | Status code |
This method gets the color of the current vertex in the specified face.
[out] | color | Color. |
[in] | faceIndex | The face to get the color for this vertex for |
[in] | colorSetName | Name of the color set. |
This method gets the average color of the vertex.
[out] | color | The average color |
[in] | colorSetName | Name of the color set. |
MStatus getColors | ( | MColorArray & | colors, |
const MString * | colorSetName = NULL |
||
) | const |
This method gets the colors of the current vertex for each face it belongs to.
If no colors are assigned to the vertex at all, the return values will be (-1 -1 -1 1). If some but not all of the vertex/face colors have been explicitly set, the ones that have not been set will be (0, 0, 0, 1).
[out] | colors | Colors. |
[in] | colorSetName | Name of the color set. |
This method returns the colorIndices into the color array see MFnMesh::getColors() of the current vertex.
[out] | colorIndices | Color indices. |
[in] | colorSetName | Name of the color set. |
|
static |
Returns the name of this class.