MFnBlendShapeDeformer Class Reference

#include <MFnBlendShapeDeformer.h>

Class Description

blend shape deformer function set

MFnBlendShapeDeformer is the function set for blend shape deformers. A blend shape deformer takes a base shape (polygonal surface, curve, surface, or lattice) and blends it with other target shapes based on weight values.

The blend shape deformer is actually a small network of dependency nodes in the dependency graph. This function set is provided to make manipulation of the network easier. The main deformer node should be given to this function set as its object.

There are three parts to a blend shape deformer. There are the base objects, the target objects, and the weight values.

The base objects are the shapes that are to be deformed. There must be at least one base object. The base objects will change form as the targets and deformation parameters are modified.

Each base object has a list of target objects that affect its shape. Each target is associated with one of the the deformer's weight values. When the weight value increases, the target has more influence on the base shape.

There is just one array of weight values between all of the base objects and targets. So, it is possible for targets of different base objects to share the same weight index. When the weight value changes, it will affect all of the base objects that have targets using that weight value.

It is also possible to chain together target shapes so that a base object will deform through each shape one at a time as the weight value increases. This is done by adding multiple targets to a base shape using the same weight index for all of them. When each target is added, a weight value is specified at which that target will be in full effect. Give each target a different full weight value.

For example, one could take a sphere and make it blend into a cone and then into a cylinder. One way to do this is to make sphere the base shape. Then, add the cone as a target for the sphere at weight index 0 with a full effect weight of 0.5. Next, add the cylinder as a second target for the sphere also at weight index 0, but with a full effect weight of 1.0. Now, as the weight goes from 0 to 1, the base shape will start as a sphere, morph into a cone, and then into a cylinder.

It is not necessary for the base shape and its targets to have identical vertex/CV counts, but the blend will be more effective if they do.

+ Inheritance diagram for MFnBlendShapeDeformer:

Public Types

enum  Origin { kLocalOrigin, kWorldOrigin }
 Specifies the space to use for the deformation origin. More...
 
enum  HistoryLocation { kFrontOfChain, kNormal, kPost, kOther }
 Specifies where in the shape's history to place the deformer (deformation order). More...
 
enum  TargetType { kObject, kTangent }
 TODO. More...
 
- Public Types inherited from MFnDependencyNode
enum  MAttrClass { kLocalDynamicAttr = 1, kNormalAttr, kExtensionAttr, kInvalidAttr }
 Specifies the scope of the attribute. More...
 
enum  MdgTimerState { kTimerOff, kTimerOn, kTimerUninitialized, kTimerInvalidState }
 Possible states for the node's timer. More...
 
enum  MdgTimerMetric {
  kTimerMetric_callback, kTimerMetric_compute, kTimerMetric_dirty, kTimerMetric_draw,
  kTimerMetric_fetch, kTimerMetric_callbackViaAPI, kTimerMetric_callbackNotViaAPI, kTimerMetric_computeDuringCallback,
  kTimerMetric_computeNotDuringCallback, kTimerMetrics
}
 The different timer metrics which can be queried. More...
 
enum  MdgTimerType { kTimerType_self, kTimerType_inclusive, kTimerType_count, kTimerTypes }
 The types of timers which can be queried. More...
 

Public Member Functions

virtual MFn::Type type () const
 Function set type.
 
virtual ~MFnBlendShapeDeformer ()
 Destructor.
 
 MFnBlendShapeDeformer ()
 Default constructor.
 
 MFnBlendShapeDeformer (MObject &object, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
MObject create (MObject baseObject, Origin originSpace=kLocalOrigin, MStatus *ReturnStatus=NULL)
 Creates a new blend shape deformer in the dependency graph with the specified shape as the baseObject. More...
 
MObject create (const MObjectArray &baseObjects, Origin originSpace=kLocalOrigin, HistoryLocation=kNormal, MStatus *ReturnStatus=NULL)
 Creates a new blend shape deformer in the dependency graph. More...
 
MStatus addBaseObject (MObject &object)
 Adds a new base object to the deformer. More...
 
MStatus getBaseObjects (MObjectArray &objects) const
 Get a list of all of the base objects for this deformer. More...
 
MStatus addTarget (const MObject &baseObject, int weightIndex, const MObject &newTarget, double fullWeight, TargetType targetType=kObject)
 Adds a new target object for the given base object. More...
 
MStatus addTarget (const MObject &baseObject, int weightIndex, double fullWeight, TargetType targetType=kObject)
 Adds a new delta target object for the given base object. More...
 
MStatus removeTarget (const MObject &baseObject, int weightIndex, const MObject &target, double fullWeight)
 Remove a target object for the given base object. More...
 
MStatus getTargets (MObject baseObject, int weightIndex, MObjectArray &targetObjects) const
 Get a list of all of the target objects for the given base object that affect it based on the given weight index. More...
 
unsigned int numWeights (MStatus *ReturnStatus=NULL) const
 Return the number of weight values that this blend shape deformer has. More...
 
MStatus weightIndexList (MIntArray &indexList) const
 Return the array index numbers corresponding to the targets. More...
 
MStatus targetItemIndexList (unsigned int weightIndex, MObject baseObject, MIntArray &targetItemIndices) const
 A base object may have more than one target using the same element of the blendShape's 'weights' array. More...
 
float weight (unsigned int index, MStatus *ReturnStatus=NULL) const
 Get the weight value at the given index. More...
 
MStatus setWeight (unsigned int index, float weight)
 Set the weight value at the given index. More...
 
float envelope (MStatus *ReturnStatus=NULL) const
 Gets the envelope value of the deformer. More...
 
MStatus setEnvelope (float envelope)
 Sets the envelope value of the deformer. More...
 
Origin origin (MStatus *ReturnStatus=NULL) const
 Gets the origin space. More...
 
MStatus setOrigin (Origin space)
 Sets the origin space. More...
 
HistoryLocation historyLocation (MStatus *ReturnStatus=NULL) const
 Gets the history location (deformation order). More...
 
 MFnBlendShapeDeformer (const MObject &object, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
- Public Member Functions inherited from MFnDependencyNode
virtual ~MFnDependencyNode ()
 Destructor.
 
 MFnDependencyNode ()
 Default constructor.
 
 MFnDependencyNode (MObject &object, MStatus *ReturnStatus=NULL)
 Constructor. More...
 
MObject create (const MTypeId &typeId, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type tag. More...
 
MObject create (const MTypeId &typeId, const MString &name, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type tag. More...
 
MObject create (const MString &type, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type. More...
 
MObject create (const MString &type, const MString &name, MStatus *ReturnStatus=NULL)
 Creates a new dependency node with the given type. More...
 
MTypeId typeId (MStatus *ReturnStatus=NULL) const
 Returns the type id of this node. More...
 
MString typeName (MStatus *ReturnStatus=NULL) const
 Returns the type name of this node. More...
 
MString name (MStatus *ReturnStatus=NULL) const
 Returns the name of this node. More...
 
MString absoluteName (MStatus *ReturnStatus=NULL) const
 Returns the absolute name of this node. More...
 
MString pluginName (MStatus *ReturnStatus=NULL) const
 Returns the name of the plug-in this MFnDependendencyNode was defined in. More...
 
MString setName (const MString &name, bool createNamespace=false, MStatus *ReturnStatus=NULL)
 Sets the name of this node. More...
 
MUuid uuid (MStatus *ReturnStatus=NULL) const
 Returns the node's UUID. More...
 
void setUuid (const MUuid &uuid, MStatus *ReturnStatus=NULL)
 Sets the node's UUID. More...
 
MStatus getConnections (MPlugArray &array) const
 Get all of the current connections to this node as an array of plugs. More...
 
unsigned int attributeCount (MStatus *ReturnStatus=NULL) const
 Returns the number of attributes that this node has. More...
 
MObject attribute (unsigned int index, MStatus *ReturnStatus=NULL) const
 Finds the attribute of this node at the given index. More...
 
MObject reorderedAttribute (unsigned int index, MStatus *ReturnStatus=NULL) const
 Some nodes, such as the various animCurve nodes, require that their attributes be set in a specific order for proper operation. More...
 
MObject attribute (const MString &attrName, MStatus *ReturnStatus=NULL) const
 Finds the attribute of this node that has the given name. More...
 
MAttrClass attributeClass (const MObject &attr, MStatus *ReturnStatus=NULL) const
 Returns the class (normal, dynamic, extension) of the specified attribute. More...
 
MStatus getAffectedAttributes (const MObject &attr, MObjectArray &affectedAttributes) const
 Returns an array of attributes that are affected by the attribute passed in. More...
 
MStatus getAffectedByAttributes (const MObject &attr, MObjectArray &affectedByAttributes) const
 Returns an array of attributes that affect the attribute passed in, attr. More...
 
MPlug findPlug (const MObject &attr, bool wantNetworkedPlug, MStatus *ReturnStatus=NULL) const
 Attempt to find a plug for the given attribute. More...
 
MPlug findPlug (const MString &attrName, bool wantNetworkedPlug, MStatus *ReturnStatus=NULL) const
 Attempt to find a plug for the given attribute. More...
 
MPlug findPlug (const MObject &attr, MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MPlug findPlug (const MString &attrName, MStatus *ReturnStatus=NULL) const
 This method is obsolete. More...
 
MStatus addAttribute (const MObject &attr)
 Add a new dynamic attibute to this node. More...
 
MStatus removeAttribute (const MObject &attr)
 Remove a dynamic attribute from a node. More...
 
MPxNodeuserNode (MStatus *ReturnStatus=NULL) const
 If the function set's node is a plug-in node, then this method will extract the MPxNode pointer from it. More...
 
bool isFromReferencedFile (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node came from a referenced file. More...
 
bool isShared (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node is shared. More...
 
bool isTrackingEdits (MStatus *ReturnStatus=NULL) const
 Returns whether or not edits on the given node are being tracked by the generalized edit system. More...
 
bool hasUniqueName (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node's name is unique within the scene. More...
 
MString parentNamespace (MStatus *ReturnStatus=NULL) const
 Returns the name of the namespace in which this node resides. More...
 
bool isLocked (MStatus *ReturnStatus=NULL) const
 Indicates whether or not this node is locked. More...
 
MStatus setLocked (bool locked)
 Locks or unlocks this node. More...
 
bool isNewAttribute (const MObject &attr, MStatus *ReturnStatus=NULL) const
 Indicates whether or not the specified attribute was added to this node within the current scene. More...
 
MStatus setFlag (unsigned int flag, bool state)
 Sets the state of the specified flag for the node. More...
 
bool isFlagSet (unsigned int flag, MStatus *ReturnStatus=NULL) const
 Retrieves the current state of the specified flag for a node. More...
 
bool isDefaultNode (MStatus *ReturnStatus=NULL) const
 Returns true if the node is a default node. More...
 
MStatus setDoNotWrite (bool flag)
 Use this method to mark the "do not write" state of this node. More...
 
bool canBeWritten (MStatus *ReturnStatus=NULL) const
 Returns the do not write state of the node. More...
 
bool hasAttribute (const MString &name, MStatus *ReturnStatus=NULL) const
 Returns true if the node already has an attribute with the given name. More...
 
MObject getAliasAttr (bool force, MStatus *ReturnStatus=NULL)
 Returns the node's alias attribute, which is a special attribute used to store information about the node's attribute aliases. More...
 
bool setAlias (const MString &alias, const MString &name, const MPlug &plug, bool add=true, MStatus *ReturnStatus=NULL)
 Sets or removes an alias (i.e. More...
 
bool findAlias (const MString &alias, MObject &attrObj, MStatus *ReturnStatus=NULL) const
 Retrieves the attribute with the given alias. More...
 
bool getAliasList (MStringArray &strArray, MStatus *ReturnStatus=NULL)
 Returns a list of all attribute aliases for this node. More...
 
MString plugsAlias (const MPlug &plug, MStatus *ReturnStatus=NULL)
 Returns the alias for the plug's attribute or the empty string if that attribute has no alias. More...
 
MStatus setIcon (const MString &filename)
 Associates a custom icon with the node for display in the Maya UI. More...
 
MString icon (MStatus *ReturnStatus=NULL) const
 Returns the custom icon filename associated with the node. More...
 
MStatus getExternalContent (MExternalContentInfoTable &table) const
 Returns the external content (files) that this node depends on. More...
 
MStatus addExternalContentForFileAttr (MExternalContentInfoTable &table, const MObject &attr) const
 Adds content info to the specified table from a file path attribute. More...
 
MStatus setExternalContentForFileAttr (const MObject &attr, const MExternalContentLocationTable &table)
 Sets content info in the specified attribute from the table. More...
 
MStatus setExternalContent (const MExternalContentLocationTable &table)
 Changes the location of external content. More...
 
MString setName (const MString &name, MStatus *ReturnStatus)
 OBSOLETE FUNCTION, NO SCRIPT SUPPORT. More...
 
 MFnDependencyNode (const MObject &object, MStatus *ReturnStatus=NULL)
 NO SCRIPT SUPPORT. More...
 
bool getPlugsAlias (const MPlug &plug, MString &aliasName, MStatus *ReturnStatus=NULL)
 NO SCRIPT SUPPORT. More...
 
virtual const adsk::Data::Associationsmetadata (MStatus *ReturnStatus=NULL) const
 This method is not available in Python. More...
 
virtual MStatus setMetadata (const adsk::Data::Associations &)
 This method is not available in Python. More...
 
virtual MStatus deleteMetadata ()
 This method is not available in Python. More...
 
virtual MStatus validateMetadata (MString &errors) const
 This method is not available in Python. More...
 
MStatus dgTimerOn ()
 Indicates that this node should collect DG timing data whenever DG timing is enabled. More...
 
MStatus dgTimerOff ()
 Indicates that this node should no longer collect DG timing data when DG timing is enabled. More...
 
MdgTimerState dgTimerQueryState (MStatus *ReturnStatus=NULL)
 The function returns the current on/off state of the node's timer. More...
 
MStatus dgTimerReset ()
 The function resets the dependency graph timers and counters for this node to zero. More...
 
double dgTimer (const MdgTimerMetric timerMetric, const MdgTimerType timerType, MStatus *ReturnStatus=NULL) const
 The function returns the specified timer value for the current node. More...
 
MStatus dgCallbacks (const MdgTimerType type, MStringArray &callbackName, MDoubleArray &value)
 Node callbacks that occur when timing is enabled get logged with the node and can be queried via this method. More...
 
MStatus dgCallbackIds (const MdgTimerType type, const MString &callbackName, MCallbackIdArray &callbackId, MDoubleArray &value)
 This method provides a further breakdown of the per-callback time returned via dgCallbacks() by returning the data on a per-callbackId basis. More...
 
MStatus addAttribute (const MObject &attr, MAttrClass type)
 This method is obsolete. More...
 
MStatus removeAttribute (const MObject &attr, MAttrClass type)
 This method is obsolete. More...
 
- Public Member Functions inherited from MFnBase
virtual ~MFnBase ()
 Class Destructor. More...
 
bool hasObj (MFn::Type) const
 Determines whether or not the Function Set is compatible with the specified Maya Object within the API RTTI system. More...
 
bool hasObj (const MObject &) const
 Determines whether or not the Function Set is compatible with the specified Maya Object within the API RTTI system. More...
 
MObject object (MStatus *ReturnStatus=NULL) const
 Returns the MObject that is attached to the Function Set. More...
 
virtual MStatus setObject (MObject &object)
 Attaches the Function Set to the specified Maya Object. More...
 
virtual MStatus setObject (const MObject &object)
 NO SCRIPT SUPPORT. More...
 

Protected Member Functions

virtual const char * className () const
 Class name.
 

Additional Inherited Members

- Static Public Member Functions inherited from MFnDependencyNode
static MString classification (const MString &nodeTypeName)
 Retrieves the classification string for a node type. More...
 
static unsigned int allocateFlag (const MString pluginName, MStatus *ReturnStatus=NULL)
 Allocates a node flag for sole use by the caller. More...
 
static MStatus deallocateFlag (const MString pluginName, unsigned int flag)
 Deallocates a node flag which was previously allocated by a call to allocateFlag. More...
 
static MStatus deallocateAllFlags (const MString pluginName)
 Deallocates all of the node flags which are currently allocated to the specified plugin. More...
 
static void enableDGTiming (bool enable)
 Globally enables or disables the DG node timing mechanism. More...
 
- Static Public Member Functions inherited from MFnBase
static const char * className ()
 Returns the name of this class. More...
 

Member Enumeration Documentation

enum Origin

Specifies the space to use for the deformation origin.

Enumerator
kLocalOrigin 

 

kWorldOrigin 

 

Specifies where in the shape's history to place the deformer (deformation order).

Enumerator
kFrontOfChain 

Pre-Defromation.

kNormal 

Automatic deformation order.

kPost 

Post-Deformation.

kOther 

Other deformation order.

enum TargetType

TODO.

Enumerator
kObject 

 

kTangent 

 

Constructor & Destructor Documentation

MFnBlendShapeDeformer ( MObject object,
MStatus ReturnStatus = NULL 
)

Constructor.

Class constructor that initializes the function set to the given MObject.

Parameters
[in]objectThe MObject to attach the function set to
[out]ReturnStatusthe return status
Status Codes:
  • MS::kSuccess if the function set is successfully attached
  • MS::kInvalidParameter if the MObject does not represent a valid Maya object or if the function set is not allowed to attach to this MObject
MFnBlendShapeDeformer ( const MObject object,
MStatus ReturnStatus = NULL 
)

Constructor.

Class constructor that initializes the function set to the given MObject.

Parameters
[in]objectThe MObject to attach the function set to
[out]ReturnStatusthe return status
Status Codes:
  • MS::kSuccess if the function set is successfully attached
  • MS::kInvalidParameter if the MObject does not represent a valid Maya object or if the function set is not allowed to attach to this MObject

Member Function Documentation

MObject create ( MObject  baseObject,
Origin  originSpace = kLocalOrigin,
MStatus ReturnStatus = NULL 
)

Creates a new blend shape deformer in the dependency graph with the specified shape as the baseObject.

Parameters
[in]baseObjecta base object for the deformer
[in]originSpaceorigin about which to deform
[out]ReturnStatusreturn status
Returns
A handle to the new deformer
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object is null or is not of the correct type
  • MS::kLicenseFailure application not licensed for attempted operation
  • MS::kInsufficientMemory out of memory
  • MS::kFailure unexpected failure
MObject create ( const MObjectArray baseObjects,
Origin  originSpace = kLocalOrigin,
HistoryLocation  historyLoc = kNormal,
MStatus ReturnStatus = NULL 
)

Creates a new blend shape deformer in the dependency graph.

This method differs from the other MFnBlendShapeDeformer::create in that it allows multiple base shapes to be supplied at create time and it allows the use of the front-of-chain history location, which puts the blendShape ahead of other deformers such as skinning deformers.

Parameters
[in]baseObjectsbase object(s) for the deformer
[in]originSpaceorigin about which to deform
[in]historyLocwhere in the shape's history to place the deformer
[out]ReturnStatusreturn status
Returns
A handle to the new deformer
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object is not of the correct type
  • MS::kLicenseFailure application not licensed for attempted operation
  • MS::kInsufficientMemory out of memory
  • MS::kFailure unexpected failure
MStatus addBaseObject ( MObject object)

Adds a new base object to the deformer.

This object will be deformed as targets are added for it and the deformation parameters change.

Parameters
[in]objectnew base object
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object is null or is not of the correct type
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
MStatus getBaseObjects ( MObjectArray objects) const

Get a list of all of the base objects for this deformer.

The objects returned will be the deformed versions of the base objects.

Parameters
[out]objectsstorage for the array of base objects
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object is null or is not of the correct type
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
MStatus addTarget ( const MObject baseObject,
int  weightIndex,
const MObject newTarget,
double  fullWeight,
TargetType  targetType = kObject 
)

Adds a new target object for the given base object.

The weight index says which of the deformer's weight values will control this target's affects on the base object. The full weight argument determines at what weight the target is in full effect. If a base object has no other targets and the weight is set to the 'full weight', then the base object will look just like the target object.

Parameters
[in]baseObjectbase object for the target
[in]weightIndexweight index to use for target's effect
[in]newTargetnew target object for the given base
[in]fullWeightweight value at which the target is in full effect
[in]targetTypetarget type for the target
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object or target object is null or is not of the correct type
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
MStatus addTarget ( const MObject baseObject,
int  weightIndex,
double  fullWeight,
TargetType  targetType = kObject 
)

Adds a new delta target object for the given base object.

The weight index says which of the deformer's weight values will control this target's affects on the base object. The full weight argument determines at what weight the target is in full effect. If a base object has no other targets and the weight is set to the 'full weight', then the base object will look just like the target object.

Parameters
[in]baseObjectbase object for the target
[in]weightIndexweight index to use for target's effect
[in]fullWeightweight value at which the target is in full effect
[in]targetTypetarget type for the target
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object or target object is null or is not of the correct type
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
MStatus removeTarget ( const MObject baseObject,
int  weightIndex,
const MObject target,
double  fullWeight 
)

Remove a target object for the given base object.

The weight index specifies the index at which target is connected. The full weight argument specifies at what weight the target is in full effect.

Parameters
[in]baseObjectbase object for the target
[in]weightIndexweight index corresponding to the target
[in]targettarget object for the given base to be removed
[in]fullWeightweight value at which the target is in full effect
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object or target object is null or is not of the correct type
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
MStatus getTargets ( MObject  baseObject,
int  weightIndex,
MObjectArray targetObjects 
) const

Get a list of all of the target objects for the given base object that affect it based on the given weight index.

Parameters
[in]baseObjectThe base shape of interest.
[in]weightIndexThe index of the weight attribute. Since the weight indices may be sparse, the weightIndexList method should be used to find the weight indices used by a given blendShape.
[out]targetObjectsStorage for the returned array of target objects.
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter base object is null or is not of the correct type, or the weightIndex is invalid.
  • MS::kInsufficientMemory out of memory
  • MS::kFailure this function set does not have a valid attribute object
unsigned int numWeights ( MStatus ReturnStatus = NULL) const

Return the number of weight values that this blend shape deformer has.

The number of weight values is equal to the number of targets. Targets are either shapes in the dag or baked data on the blendShape node (when a target shape is deleted).

Parameters
[out]ReturnStatusreturn status
Returns
The number of weight indices
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MStatus weightIndexList ( MIntArray indexList) const

Return the array index numbers corresponding to the targets.

The resulting index list will be the length of MFnBlendShape::numWeights. This method exists because the indices of the targets can be sparse. For example, if a target has been removed using Deform -> Edit BlendShape -> Remove.

Parameters
[out]indexListthe array index numbers for the blendShape targets
Returns
The return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MStatus targetItemIndexList ( unsigned int  weightIndex,
MObject  baseObject,
MIntArray targetItemIndices 
) const

A base object may have more than one target using the same element of the blendShape's 'weights' array.

We refer to these as the base object's "target items" for that weight index.

Each target item should have a different 'fullWeight' value at which it takes full effect. As the value of the weights array element approaches the lowest of those 'fullWeight' values the associated target item has an increasing effect on the shape of the base object. As the value of the weights array element passes that first 'fullWeight' value and starts to approach the next higher 'fullWeight' value, the next target item starts to gain influence and the influence of the previous one drops off.

In this way, as the weight value increases, influence passes from one target item to another, allowing the target object to morph through a sequence of different target shapes.

Each target item is connected to an element of the blendShape deformer's 'inputTargetItem' array for that base object and weights array index. The inputTargetItem array index is calculated as follows: index = fullWeight * 1000 + 5000.

For example, if a base object has three different targetItems for a given weights array element, having fullWeight values of 0.5, 1.0 and 2.0, they will be connected to inputTargetItem array indices 5500, 6000 and 7000, respectively.

This method returns an array containing the inputTargetItem array indices of all the target items of a given base object which use the specified weight index.

Parameters
[in]weightIndex'weights' array index.
[in]baseObjectThe deformed object of interest
[out]targetItemIndices'inputTargetItem' array indices of the requested target items.
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
  • MS::kInvalidIndex no target exists at the specified target index
float weight ( unsigned int  index,
MStatus ReturnStatus = NULL 
) const

Get the weight value at the given index.

To be valid, a weight value should only be requested at index values returned by MFnBlendShapeDeformer::weightIndexList.

Parameters
[in]indexindex of weight value
[out]ReturnStatusreturn status
Returns
The weight value
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter the weightIndex is invalid.
  • MS::kFailure function set does not have a valid object
MStatus setWeight ( unsigned int  index,
float  weight 
)

Set the weight value at the given index.

Parameters
[in]indexindex of weight value
[in]weightnew weight value
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kInvalidParameter the weightIndex is invalid.
  • MS::kFailure function set does not have a valid object
float envelope ( MStatus ReturnStatus = NULL) const

Gets the envelope value of the deformer.

The envelope is a global scale factor that is applied to all of the weight values in the deformer. The envelope can be used increase or decrease the effects of all of the targets at the same time.

Parameters
[out]ReturnStatusreturn status
Returns
Envelope value
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MStatus setEnvelope ( float  envelope)

Sets the envelope value of the deformer.

The envelope is a global scale factor that is applied to all of the weight values in the deformer. The envelope can be used increase or decrease the effects of all of the targets at the same time.

Parameters
[in]envelopeenvelope value
Returns
Return status
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MFnBlendShapeDeformer::Origin origin ( MStatus ReturnStatus = NULL) const

Gets the origin space.

It defines the point around which the differences in the geometry are calculated.

Parameters
[out]ReturnStatusreturn status
Returns
The origin space
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MStatus setOrigin ( Origin  space)

Sets the origin space.

It defines the point around which the differences in the geometry are calculated.

Parameters
[in]spaceorigin space
Returns
The origin space
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object
MFnBlendShapeDeformer::HistoryLocation historyLocation ( MStatus ReturnStatus = NULL) const

Gets the history location (deformation order).

It defines where to place the deformer node in the chain.

Parameters
[out]ReturnStatusreturn status
Returns
The history location (deformation order)
Status Codes:
  • MS::kSuccess operation successful
  • MS::kFailure function set does not have a valid object

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