class MPxGeometryData

Jump to documentation

: public MPxData Base Class for User-defined Dependency Graph Geometry Data Types. (OpenMaya) (OpenMayaMPx.py)

Inheritance:

MPxGeometryData < MPxData

public members:

MPxGeometryData ()
virtual ~MPxGeometryData ()
virtual MPxGeometryIterator * iterator ( MObjectArray & componentList, MObject & component, bool useComponents)
virtual MPxGeometryIterator * iterator ( MObjectArray & componentList, MObject & component, bool useComponents, bool world) const
virtual bool updateCompleteVertexGroup ( MObject & component ) const
virtual bool deleteComponent ( const MObjectArray & compList )
virtual bool deleteComponentsFromGroups ( const MObjectArray & compList, MIntArray & groupIdArray, MObjectArray & groupComponentArray )
virtual void smartCopy ( const MPxGeometryData *srcGeom )
virtual void copy ( const MPxData & src )
virtual MTypeId typeId () const
virtual MString name () const
void setMatrix (const MMatrix &)
const MMatrix &matrix () const
bool matrix ( MMatrix &) const

Inherited from MPxData:

public members:

enum Type
kData
kGeometryData
kLast
virtual MStatus readASCII ( const MArgList & argList, unsigned int& endOfTheLastParsedElement )
virtual MStatus readBinary ( std::istream& in, unsigned int length )
virtual MStatus writeASCII ( std::ostream& out )
virtual MStatus writeBinary ( std::ostream& out )
virtual void copy ( const MPxData & src)
virtual MTypeId typeId () const
virtual MString name () const

Documentation

Description

This class is used to provide a wrapper or container for some arbitrary geometry type that you have defined. This allows your data type to exist as typed attributes on dependency nodes and to be passed through dependency graph connections.

MPxGeometryData is similar to MPxData but includes methods to support sets (also known as groups) and component iteration.

For user defined shapes (MPxSurfaceShape derived classes), in order to support maya's deformers you must declare an MPxGeometryData class as well as a geometry iterator (MPxGeometryIterator).

To register geometry data use MFnPlugin::registerData with the type argument equal to MPxData::kGeometryData.

Functions

MPxGeometryData:: MPxGeometryData ()

Description

Class Constructor

MPxGeometryData:: ~MPxGeometryData ()

Description

Class Destructor

MPxGeometryIterator * MPxGeometryData:: iterator ( MObjectArray & componentList, MObject & component, bool useComponents)

Description

Associates a control point based geometry iterator with this data. This method is used in conjunction with MPxSurfaceShape and should be overridden if your shape is to support maya's deformations.

The useComponents argument specifies whether the iteration is over the given componentList or the component.

Arguments

  • componentList a list of components that are to be iterated over
  • component a component to be iterator over
  • useComponents if true then componentList is to be iterated over, otherwise the iteration is on component.

Return Value

  • A pointer to an iterator for your geometry

MPxGeometryIterator * MPxGeometryData:: iterator ( MObjectArray & componentList, MObject & component, bool useComponents, bool world) const

Description

Associates a control point based geometry iterator with this data. This method is used in conjunction with MPxSurfaceShape and should be overridden if your shape is to support maya's deformations.

The useComponents argument specifies whether the iteration is over the given componentList or the component.

This iterator method is called when the iteration is for read only purposes.

Arguments

  • componentList a list of components that are to be iterated over
  • component a component to be iterator over
  • useComponents if true then componentList is to be iterated over, otherwise the iteration is on component.
  • world specifies whether the iteration is for world space data

Return Value

  • A pointer to an iterator for your geometry

bool MPxGeometryData:: updateCompleteVertexGroup ( MObject & component ) const

Description

This method is used in conjunction with MPxSurfaceShape classes which support maya's deformations.

This method should make sure that complete vertex group data is up-to-date. If the given component is not complete (i.e. it represents all elements of your geometry) then you must mark is as complete using the methods of MFnComponent and return true if the component was updated, false if it was already complete.

This method is used by deformers when deforming the "whole" object and not just selected components.

Arguments

  • component the component to test

Return Value

  • returns true if the component was updated, false if it was already complete

bool MPxGeometryData:: deleteComponent ( const MObjectArray & compList )

Description

This method should be overridden if this data is to support component deletion. For user defined shapes (MPxSurfaceShape) which support components, this method must be overridden if component deletion is to be supported when the shape has history.

Arguments

  • compList a list of components that are to be deleted

Return Value

  • true if the deletion was successfull, false otherwise

bool MPxGeometryData:: deleteComponentsFromGroups ( const MObjectArray & compList, MIntArray & groupIdArray, MObjectArray & groupComponentArray )

Description

This method should be overridden to modify the groups that flows along with the geometry, as part of the data, based on the components being deleted. It should intelligently update the groups based on what gets deleted. The class MFnGeometryData can be used to access and modify grouping information for data.

The groupIdArray and groupComponentArray should contain the updated grouping information after the deletion has occurred.

Arguments

  • compList a list of components that are to be deleted
  • groupIdArray array of group id's
  • groupComponentArray array of updated components, one for each group id

Return Value

  • true if the deletion was successfull, false otherwise

void MPxGeometryData:: smartCopy ( const MPxGeometryData *srcGeom )

Description

This method is used in conjunction with MPxSurfaceShape classes which support maya's deformations.

This method is used to prvoide maya with an efficient way to copy the source data into the memory of this data with as little memory allocation as possible.

This method is not mandatory and only needs to be overridden to improve performance of deformations on shapes.

Arguments

  • srcGeom a pointer to the data to be copied

void MPxGeometryData:: setMatrix (const MMatrix & m)

Description

Store the matrix associated to MPxGeometryData. The matrix transformation will take place when the data is used, for example in deformer.

Arguments

  • m the matrix to transfer a point from local object space to world space.

const MMatrix & MPxGeometryData:: matrix () const

Description

Return the matrix associated to MPxGeometryData.

Return Value

  • MMatrix that takes a point from local object space to world space

bool MPxGeometryData:: matrix ( MMatrix & m) const

Description

Return the matrix associated to MPxGeometryData.

Arguments

  • m the returned matrix that takes a point from local object space to world space.

Return Value

  • true if m is not an identity matrix, false otherwise

void MPxGeometryData:: copy ( const MPxData & src )

Description

This method initializes an instance of an MPxGeometryData derived class from another existing instance. This method can be thought of as the second half of a copy constructor for the class. The default constructor has already been called for the instance, and this method is used to set the private data by copying the values from an existing instance. This is a pure virtual method, and must be overridden in derived classes.

Arguments

  • src The object from which to copy the private data

Return Value

  • Nil

Status Codes

  • Nil

MTypeId MPxGeometryData:: typeId () const

Description

Determines the type id of the Data object. This is a pure virtual method, and must be overridden in derived classes.

Arguments

  • Nil

Return Value

  • Type id of the Data object

Status Codes

  • Nil

MString MPxGeometryData:: name () const

Description

Determines the type name of the Data object. This is a pure virtual method, and must be overridden in derived classes.

Arguments

  • Nil

Return Value

  • Type name of the Data object

Status Codes

  • Nil

This class has no child classes.


Autodesk® Maya® 2008 © 1997-2007 Autodesk, Inc. All rights reserved. doc++ Copyright