2017-04-17 06:17:10 -06:00

901 lines
29 KiB
C++
Executable File

#ifndef _MFnMesh
#define _MFnMesh
//
//-
// ==========================================================================
// Copyright (C) 1995 - 2005 Alias Systems Corp. and/or its licensors. All
// rights reserved.
//
// The coded instructions, statements, computer programs, and/or related
// material (collectively the "Data") in these files contain unpublished
// information proprietary to Alias Systems Corp. ("Alias") and/or its
// licensors, which is protected by Canadian and US federal copyright law and
// by international treaties.
//
// The Data may not be disclosed or distributed to third parties or be copied
// or duplicated, in whole or in part, without the prior written consent of
// Alias.
//
// THE DATA IS PROVIDED "AS IS". ALIAS HEREBY DISCLAIMS ALL WARRANTIES RELATING
// TO THE DATA, INCLUDING, WITHOUT LIMITATION, ANY AND ALL EXPRESS OR IMPLIED
// WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE. IN NO EVENT SHALL ALIAS BE LIABLE FOR ANY DAMAGES
// WHATSOEVER, WHETHER DIRECT, INDIRECT, SPECIAL, OR PUNITIVE, WHETHER IN AN
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, OR IN EQUITY,
// ARISING OUT OF ACCESS TO, USE OF, OR RELIANCE UPON THE DATA.
// ==========================================================================
//+
//
// CLASS: MFnMesh
//
// *****************************************************************************
//
// CLASS DESCRIPTION (MFnMesh)
//
// Function set for polygonal objects.
//
// *****************************************************************************
#if defined __cplusplus
// *****************************************************************************
// INCLUDED HEADER FILES
#include <maya/MFnDagNode.h>
#include <maya/MVector.h>
#include <maya/MPoint.h>
#include <maya/MObject.h>
#include <maya/MObjectArray.h>
#include <maya/MColor.h>
#include <maya/MVectorArray.h>
#include <maya/MStringArray.h>
#include <maya/MColorArray.h>
#include <maya/MDGModifier.h>
#include <maya/MString.h>
// *****************************************************************************
// DECLARATIONS
class MPointArray;
class MFloatArray;
class MFloatPoint;
class MFloatPointArray;
class MFloatVector;
class MFloatVectorArray;
class MIntArray;
class MDoubleArray;
class MSelectionList;
class MMeshIsectAccelParams;
class MUintArray;
// Default tolerance
#define kMFnMeshTolerance 1.0e-3
// Point equivalent tolerance
#define kMFnMeshPointTolerance 1.0e-10
// *****************************************************************************
// CLASS DECLARATION (MFnMesh)
/// Polygonal surface function set
/**
*/
#ifdef _WIN32
#pragma warning(disable: 4522)
#endif // _WIN32
class OPENMAYA_EXPORT MFnMesh : public MFnDagNode
{
declareDagMFn(MFnMesh, MFnDagNode);
public:
///
MObject create( int numVertices, int numPolygons,
const MFloatPointArray &vertexArray,
const MIntArray &polygonCounts,
const MIntArray &polygonConnects,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MObject create( int numVertices, int numPolygons,
const MPointArray &vertexArray,
const MIntArray &polygonCounts,
const MIntArray &polygonConnects,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MObject create( int numVertices, int numPolygons,
const MFloatPointArray &vertexArray,
const MIntArray &polygonCounts,
const MIntArray &polygonConnects,
const MFloatArray & uArray,
const MFloatArray & vArray,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MObject create( int numVertices, int numPolygons,
const MPointArray &vertexArray,
const MIntArray &polygonCounts,
const MIntArray &polygonConnects,
const MFloatArray & uArray,
const MFloatArray & vArray,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MObject addPolygon( const MPointArray & vertexArray,
bool mergeVertices = true,
double pointTolerance = kMFnMeshPointTolerance,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MObject addPolygon( const MPointArray & vertexArray,
int & faceIndex,
bool mergeVertices = true,
double pointTolerance = kMFnMeshPointTolerance,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
/// OBSOLETE
MObject addPolygon( MPointArray & vertexArray,
double polyTolerance,
bool mergeVertices = true,
double pointTolerance = kMFnMeshPointTolerance,
bool forceGeometry = true,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MStatus deleteFace(int index, MDGModifier *modifier = NULL);
///
MStatus deleteEdge(int index, MDGModifier *modifier = NULL);
///
MStatus deleteVertex(int index, MDGModifier *modifier = NULL);
///
MStatus lockVertexNormals(MIntArray & vertexList);
///
MStatus lockFaceVertexNormals(MIntArray & faceList, MIntArray & vertexList);
///
MStatus unlockVertexNormals(MIntArray & vertexList);
///
MStatus unlockFaceVertexNormals( MIntArray & faceList, MIntArray & vertexList);
// Poly Operations
///
enum SplitPlacement {
///
kOnEdge,
///
kInternalPoint,
///
kInvalid
};
///
MStatus split(MIntArray & placements,
MIntArray & edgeList,
MFloatArray & edgeFactors,
MFloatPointArray & internalPoints);
///
MStatus subdivideFaces(MIntArray & faceList,
int divisionCount);
///
MStatus subdivideEdges(MIntArray & edgeList,
int divisionCount);
///
MStatus extrudeFaces(MIntArray & faceList,
int extrusionCount,
MFloatVector* translation,
bool extrudeTogether);
///
MStatus extrudeEdges(MIntArray & edgeList,
int extrusionCount,
MFloatVector* translation,
bool extrudeTogether);
///
MStatus duplicateFaces(MIntArray & faceList,
MFloatVector* translation);
///
MStatus extractFaces(MIntArray & faceList,
MFloatVector* translation);
///
MStatus collapseFaces(MIntArray & faceList);
///
MStatus collapseEdges(MIntArray & edgeList);
// Counts
///
int numVertices( MStatus * ReturnStatus = NULL) const;
///
int numEdges( MStatus * ReturnStatus = NULL ) const;
///
int numPolygons( MStatus * ReturnStatus = NULL ) const;
///
int numFaceVertices( MStatus * ReturnStatus = NULL ) const;
///
int polygonVertexCount( int polygonId,
MStatus * ReturnStatus = NULL ) const;
///
int numUVs( MStatus * ReturnStatus = NULL ) const;
///
int numUVs( const MString &uvSet,
MStatus * ReturnStatus = NULL ) const;
///
int numColors( MStatus * ReturnStatus = NULL ) const;
///
int numColors( const MString &colorSet,
MStatus * ReturnStatus = NULL ) const;
///
int numNormals( MStatus * ReturnStatus = NULL ) const;
// Intersection methods with acceleration options
///
static MMeshIsectAccelParams uniformGridParams( int xDiv, int yDiv, int zDiv );
///
static MMeshIsectAccelParams autoUniformGridParams();
///
bool closestIntersection( const MFloatPoint& raySource,
const MFloatVector& rayDirection,
const MIntArray* faceIds,
const MIntArray* triIds,
bool idsSorted,
MSpace::Space space,
float maxParam,
bool testBothDirections,
MMeshIsectAccelParams *accelerator,
MFloatPoint& hitPoint,
float* hitRayParam,
int* hitFace,
int* hitTriangle,
float* hitBary1,
float* hitBary2,
float tolerance = 1e-6,
MStatus* ReturnStatus = NULL );
///
bool anyIntersection( const MFloatPoint& raySource,
const MFloatVector& rayDirection,
const MIntArray* faceIds,
const MIntArray* triIds,
bool idsSorted,
MSpace::Space space,
float maxParam,
bool testBothDirections,
MMeshIsectAccelParams *accelerator,
MFloatPoint& hitPoint,
float* hitRayParam,
int* hitFace,
int* hitTriangle,
float* hitBary1,
float* hitBary2,
float tolerance = 1e-6,
MStatus* ReturnStatus = NULL );
///
bool allIntersections( const MFloatPoint& raySource,
const MFloatVector& rayDirection,
const MIntArray* faceIds,
const MIntArray* triIds,
bool idsSorted,
MSpace::Space space,
float maxParam,
bool testBothDirections,
MMeshIsectAccelParams *accelerator,
bool sortHits,
MFloatPointArray& hitPoints,
MFloatArray* hitRayParams,
MIntArray* hitFaces,
MIntArray* hitTriangles,
MFloatArray* hitBary1,
MFloatArray* hitBary2,
float tolerance = 1e-6,
MStatus* ReturnStatus = NULL );
///
MStatus sortIntersectionFaceTriIds( MIntArray* faceIds, MIntArray* triIds );
///
MStatus freeCachedIntersectionAccelerator();
///
MString cachedIntersectionAcceleratorInfo( MStatus *ReturnStatus = NULL );
///
static MString globalIntersectionAcceleratorsInfo();
///
static void clearGlobalIntersectionAcceleratorInfo();
// Intersection/getClosestPoint methods.
///
bool intersect( const MPoint & raySource,
const MVector & rayDirection,
MPointArray & points,
double tolerance = kMFnMeshPointTolerance,
MSpace::Space space = MSpace::kObject,
MIntArray * polygonIds = NULL,
MStatus * ReturnStatus = NULL ) const;
/// OBSOLETE
bool intersect( MPoint & raySource, MVector & rayDirection,
MPointArray & points,
MStatus * ReturnStatus = NULL ) const;
/// OBSOLETE
bool intersect( const MPoint & raySource,
const MVector & rayDirection,
MPointArray & points,
MStatus * ReturnStatus = NULL ) const;
///
MStatus getClosestPointAndNormal( const MPoint & toThisPoint,
MPoint & theClosestPoint,
MVector & theNormal,
MSpace::Space space = MSpace::kObject,
int * closestPolygon = NULL ) const;
///
MStatus getClosestPoint(const MPoint &toThisPoint,
MPoint &theClosestPoint,
MSpace::Space space = MSpace::kObject,
int * closestPolygon = NULL ) const;
///
MStatus getClosestNormal(const MPoint &toThisPoint,
MVector & theNormal,
MSpace::Space space = MSpace::kObject,
int * closestPolygon = NULL ) const;
// Shaders and membership methods.
///
MStatus getConnectedShaders(
unsigned instanceNumber,
MObjectArray & shaders,
MIntArray & indices ) const;
///
MStatus getConnectedSetsAndMembers(
unsigned instanceNumber,
MObjectArray & sets,
MObjectArray & comps,
bool renderableSetsOnly ) const;
///
MObject copy( const MObject & source,
MObject parentOrOwner = MObject::kNullObj,
MStatus * ReturnStatus = NULL );
///
MStatus updateSurface();
///
MStatus syncObject();
// Get/set methods for mesh vertices.
///
MStatus getPoints( MFloatPointArray & vertexArray,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus getPoints( MPointArray & vertexArray,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus setPoints( MFloatPointArray & vertexArray,
MSpace::Space space = MSpace::kObject );
///
MStatus setPoints( MPointArray & vertexArray,
MSpace::Space space = MSpace::kObject );
///
MStatus getPolygonVertices( int polygonId,
MIntArray & vertexList ) const;
///
MStatus getPolygonTriangleVertices( int polygonId,
int triangleId,
int triangleVertices[3] ) const;
///
MStatus setPoint( int vertexId, const MPoint & pos,
MSpace::Space space = MSpace::kObject );
///
MStatus getPoint( int vertexId, MPoint & pos,
MSpace::Space space = MSpace::kObject ) const;
// Methods for setting/getting Normals
///
MStatus getNormals( MFloatVectorArray& normals,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus getFaceVertexNormal( int faceIndex, int vertexIndex,
MVector & normal,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus getFaceVertexNormals( int faceIndex, MFloatVectorArray & normals,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus getFaceNormalIds( int faceIndex, MIntArray &normals ) const;
///
MStatus setFaceVertexNormal( MVector &normal,
int faceIndex, int vertexIndex,
MSpace::Space space = MSpace::kObject,
MDGModifier *modifier = NULL);
///
MStatus setVertexNormal( MVector &normal,
int vertexIndex,
MSpace::Space space = MSpace::kObject,
MDGModifier *modifier = NULL);
///
MStatus setFaceVertexNormals( MVectorArray & normalArray,
MIntArray & faceList, MIntArray & vertexList,
MSpace::Space space = MSpace::kObject );
///
MStatus setVertexNormals( MVectorArray & normalArray,
MIntArray & vertexList,
MSpace::Space space = MSpace::kObject );
///
MStatus getVertexNormal( int vertexId, MVector & normal,
MSpace::Space space = MSpace::kObject ) const;
///
MStatus getPolygonNormal( int polygonId, MVector & normal,
MSpace::Space space = MSpace::kObject ) const;
// Methods for getting tangents and binormals
///
MStatus getTangents( MFloatVectorArray& normals,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL) const;
///
MStatus getFaceVertexTangent( int faceIndex, int vertexIndex,
MVector & tangent,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL ) const;
///
MStatus getFaceVertexTangents( int faceIndex, MFloatVectorArray & tangents,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL ) const;
///
MStatus getBinormals( MFloatVectorArray& normals,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL ) const;
///
MStatus getFaceVertexBinormal( int faceIndex, int vertexIndex,
MVector & normal,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL) const;
///
MStatus getFaceVertexBinormals( int faceIndex, MFloatVectorArray & normals,
MSpace::Space space = MSpace::kObject,
const MString * uvSet = NULL) const;
// Edge info methods.
///
MStatus getEdgeVertices( int edgeId, int2 & vertexList ) const;
///
bool isEdgeSmooth( int edgeId, MStatus * ReturnStatus = NULL ) const;
///
MStatus setEdgeSmoothing( int edgeId, bool smooth = true );
///
MStatus cleanupEdgeSmoothing();
///
MStatus getCreaseEdges(MUintArray &edgeIds, MDoubleArray &creaseData) const;
///
MStatus setCreaseEdges(const MUintArray &edgeIds, const MDoubleArray &creaseData);
// UVs operators and methods.
///
int numUVSets( MStatus *ReturnStatus = NULL) const;
///
MStatus createUVSet(MString &uvSetName,
MDGModifier *modifier = NULL);
MStatus createUVSetDataMesh(MString &uvSetName);
///
MStatus copyUVSet(const MString &fromName, MString &toName,
MDGModifier *modifier = NULL);
///
MStatus renameUVSet(const MString &origName,
const MString &newName,
MDGModifier *modifier = NULL);
///
MStatus deleteUVSet(const MString &setName,
MDGModifier *modifier = NULL,
MSelectionList *currentSelection = NULL);
///
MStatus setCurrentUVSetName(const MString &setName,
MDGModifier *modifier = NULL,
MSelectionList *currentSelection = NULL);
///
MStatus getCurrentUVSetName(MString &setName) const;
///
MStatus getUVSetNames(MStringArray &setNames) const;
///
MStatus getFaceUVSetNames( int polygonId, MStringArray &setNames) const;
///
MStatus getAssociatedUVSetTextures(const MString uvSetName,
MObjectArray & textures) const;
///
MStatus setUVs( const MFloatArray& uArray, const MFloatArray& vArray,
const MString * uvSet = NULL );
///
MStatus setSomeUVs( const MIntArray & uvIds, const MFloatArray& uArray,
const MFloatArray& vArray, const MString * uvSet = NULL );
///
MStatus getUVs( MFloatArray& uArray, MFloatArray& vArray,
const MString * uvSet = NULL ) const;
///
MStatus setUV( int uvId, float u, float v,
const MString * uvSet = NULL );
///
MStatus getUV( int uvId, float & u, float & v,
const MString * uvSet = NULL ) const;
///
MStatus getPolygonUV( int polygonId, int vertexIndex,
float & u, float & v,
const MString * uvSet = NULL ) const;
///
MStatus getPolygonUVid( int polygonId, int vertexIndex,
int &uvId,
const MString * uvSet = NULL ) const;
///
MStatus assignUV( int polygonId, int vertexIndex, int uvId,
const MString * uvSet = NULL );
///
MStatus assignUVs( const MIntArray& uvCounts, const MIntArray& uvIds,
const MString * uvSet = NULL );
///
MStatus clearUVs( const MString * uvSet = NULL );
///
MStatus getAssignedUVs( MIntArray& uvCounts, MIntArray& uvIds,
const MString * uvSet = NULL ) const;
MStatus getUvShellsIds( MIntArray& uvShellIds,
unsigned int & nbUvShells,
const MString * uvSet = NULL ) const;
// Color Per Vertex Methods
///
int numColorSets( MStatus *ReturnStatus = NULL) const;
///
MStatus createColorSet(MString &colorSetName,
MDGModifier *modifier = NULL);
///
MStatus setCurrentColorSetName(const MString &setName,
MDGModifier *modifier = NULL,
MSelectionList *currentSelection = NULL);
///
MStatus getCurrentColorSetName(MString &setName) const;
///
MStatus getColorSetNames(MStringArray &setNames) const;
///
MStatus setFaceColor(MColor &color, int index);
///
MStatus setVertexColor(MColor &color, int index, MDGModifier *modifier = NULL);
///
MStatus setFaceVertexColor( MColor &color, int faceIndex,
int vertexIndex,
MDGModifier *modifier = NULL);
///
MStatus setFaceColors(MColorArray &colors, MIntArray &faceList);
///
MStatus setVertexColors(MColorArray &colors, MIntArray &vertexList,
MDGModifier *modifier = NULL);
///
MStatus setFaceVertexColors(MColorArray &colors,
MIntArray &faceList, MIntArray &vertexList,
MDGModifier *modifier = NULL);
///
MStatus removeFaceColors(MIntArray &faceList);
///
MStatus removeVertexColors(MIntArray &vertexList);
///
MStatus removeFaceVertexColors( MIntArray &faceList, MIntArray &vertexList);
///
MStatus getVertexColors(MColorArray &colors, const MString * colorSet = NULL);
///
MStatus getFaceVertexColors(MColorArray &colors, const MString *colorSet = NULL);
///
MStatus getFaceVertexColorIndex(int faceIndex, int localVertexIndex,
int &colorIndex, const MString * colorSet = NULL);
///
MStatus setColors( const MColorArray& colors, const MString* colorSet = NULL );
///
MStatus setSomeColors( const MIntArray& colorIds, const MColorArray& colors,
const MString* colorSet = NULL );
///
MStatus getColors( MColorArray& colors, const MString * colorSet = NULL ) const;
///
MStatus getColorIndex(int faceIndex, int localVertexIndex,
int &colorIndex, const MString *colorSet = NULL ) ;
///
MStatus setColor( int colorId, const MColor &color,
const MString * colorSet = NULL );
///
MStatus getColor( int colorId, MColor &color,
const MString * colorSet = NULL ) const;
///
MStatus assignColor( int polygonId, int vertexIndex, int colorId,
const MString* colorSet = NULL );
///
MStatus assignColors( const MIntArray& colorIds,
const MString* colorSet = NULL );
///
MStatus clearColors( const MString* colorSet = NULL );
// Polygon Hole Query Method
///
int getHoles( MIntArray& holeInfoArray,
MIntArray& holeVertexArray,
MStatus * ReturnStatus = NULL );
// Blind Data Query Methods
///
bool isBlindDataTypeUsed( int blindDataId,
MStatus * ReturnStatus = NULL ) const;
///
MStatus createBlindDataType( int blindDataId,
MStringArray longNames,
MStringArray shortNames,
MStringArray formatNames);
///
bool hasBlindData( int compID,
MFn::Type compType,
int blindDataId,
MStatus * ReturnStatus = NULL ) const;
///
bool hasBlindData( MFn::Type compType,
int blindDataId,
MStatus * ReturnStatus = NULL ) const;
///
bool hasBlindData( int compID,
MFn::Type compType,
MStatus * ReturnStatus = NULL ) const;
///
bool hasBlindData( MFn::Type compType,
MStatus * ReturnStatus = NULL ) const;
// Get Blind Data Methods.
///
MStatus getBlindDataTypes(MFn::Type compType,
MIntArray& blindDataIds ) const;
/// OBSOLETE
MStatus getBlindDataAttrNames(int blindDataId,
MStringArray& longNames,
MStringArray& shortNames) const;
///
MStatus getBlindDataAttrNames(int blindDataId,
MStringArray& longNames,
MStringArray& shortNames,
MStringArray& formatNames) const;
///
MStatus getIntBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
int &data) const;
///
MStatus getIntBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MIntArray& data) const;
///
MStatus getFloatBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
float &data) const;
///
MStatus getFloatBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MFloatArray& data) const;
///
MStatus getDoubleBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
double &data) const;
///
MStatus getDoubleBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MDoubleArray& data) const;
///
MStatus getBoolBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
bool &data) const;
///
MStatus getBoolBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MIntArray& data) const;
///
MStatus getStringBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
MString &data) const;
///
MStatus getStringBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MStringArray& data) const;
///
MStatus getBinaryBlindData( int compID, MFn::Type compType,
int blindDataId, MString attrName,
MString &data) const;
///
MStatus getBinaryBlindData( MFn::Type compType,
int blindDataId, MString attrName,
MIntArray& compIDs, MStringArray& data) const;
// Set Blind Data Methods
///
MStatus setIntBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
int data);
///
MStatus setIntBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
int data);
///
MStatus setIntBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MIntArray& data);
///
MStatus setFloatBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
float data);
///
MStatus setFloatBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
float data);
///
MStatus setFloatBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MFloatArray &data);
///
MStatus setDoubleBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
double data);
///
MStatus setDoubleBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
double data);
///
MStatus setDoubleBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MDoubleArray &data);
///
MStatus setBoolBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
bool data);
///
MStatus setBoolBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
bool data);
///
MStatus setBoolBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MIntArray& data);
///
MStatus setStringBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
MString data);
///
MStatus setStringBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MString data);
///
MStatus setStringBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MStringArray &data);
///
MStatus setBinaryBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
MString data);
///
MStatus setBinaryBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MString data);
///
MStatus setBinaryBlindData( MIntArray& compIDs, MFn::Type compType,
int blindDataId,
MString attrName,
MStringArray &data);
///
MStatus setBinaryBlindData( int compID, MFn::Type compType,
int blindDataId,
MString attrName,
char *data, int length);
///
MStatus clearBlindData(int compID, MFn::Type compType,
int blindDataId,
MString attrName);
///
MStatus clearBlindData(MFn::Type compType,
int blindDataId,
MString attrName);
///
MStatus clearBlindData(MFn::Type compType);
///
MStatus clearBlindData(int compID,
MFn::Type compType,
int blindDataId);
///
MStatus clearBlindData(MFn::Type compType,
int blindDataId);
///
void setCheckSamePointTwice( bool check = true );
///
bool getCheckSamePointTwice( void );
///
MStatus createInPlace( int numVertices,
int numPolygons,
const MFloatPointArray &vertexArray,
const MIntArray &polygonCounts,
const MIntArray &polygonConnects );
///
MStatus copyInPlace( const MObject& source );
protected:
virtual bool objectChanged( MFn::Type tp, MStatus * ReturnStatus );
bool getUVSetIndex( const MString * uvSetName,
int & uvSet) const;
bool getColorSetIndex( const MString * colorSetName,
int &colorSet) const;
bool getMeshForIntersection( MSpace::Space, MFloatPoint&, MFloatVector&,
void*&, MStatus* );
private:
// Private members
void *f_meshRef;
bool f_checkSamePoint;
};
// Class to define parameters for accelerated intersection operations.
// Use MFnMesh::uniformGridParams() or MFnMesh::autoUniformGridParams()
// to create one of these to pass into the allIntersections(),
// closestIntersection(), and anyIntersection() methods
//
class OPENMAYA_EXPORT MMeshIsectAccelParams
{
public:
MMeshIsectAccelParams();
private:
int type;
int xDiv;
int yDiv;
int zDiv;
bool verbose;
};
#ifdef _WIN32
#pragma warning(default: 4522)
#endif // _WIN32
// *****************************************************************************
#endif /* __cplusplus */
#endif /* _MFnMesh */