Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Protected Member Functions

MPxConstraint Class Reference

This reference page is linked to from the following overview topics: Dependency Graph Plug-in Basics, Parent class descriptions, MPxNode and its derived classes, Example C++ plug-in descriptions.


Search for all occurrences

Detailed Description

Proxy constraint node.

MPxConstraint is the parent class for user defined constraint nodes. Position, orientation or scale of an object can be constrained by other objects. This class works in conjunction with the MPxConstraintCommand class.

Examples:

geometrySurfaceConstraint.cpp, and geometrySurfaceConstraint.h.

#include <MPxConstraint.h>

Inheritance diagram for MPxConstraint:
Inheritance graph
[legend]

List of all members.

Public Types

enum  UpVectorType {
  kScene = 0, kObject, kObjectRotation, kVector,
  kLast
}
 

The type of up vector.

More...

Public Member Functions

 MPxConstraint ()
 Constructor.
virtual ~MPxConstraint ()
 Destructor.
virtual const MObject weightAttribute () const
 Returns the weight attribute for the constraint.
virtual const MObject targetAttribute () const
 Returns the target attribute for the constraint.
virtual const MObject constraintRotateOrderAttribute () const
 Returns the rotate order attribute for the constraint.

Static Public Member Functions

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

Static Public Attributes

static MObject enableRestPosition
 Node attribute: enableRestPosition/erp - boolean.
static MObject lockOutput
 Node attribute: lockOutput/lo - boolean.

Protected Member Functions

virtual const MObject passiveOutputAttribute () const
 Returns the passive output attribute for the constraint.
virtual void getOutputAttributes (MObjectArray &attributeArray)
 Returns output attributes for the constraint.
MStatus closestPoint (const MObject &dataGeometryObject, const MPoint &toThisPoint, MPoint &theClosestPoint) const
 Returns the closest point on this surface to the given point.
MStatus closestNormal (const MObject &dataGeometryObject, const MPoint &toThisPoint, MVector &theNormal) const
 Returns the closest normal on this surface to the given point.
MStatus closestTangent (const MObject &dataGeometryObject, const MPoint &toThisPoint, MVector &theTangent) const
 Returns the closest tangent on this surface to the given point.
MEulerRotation computeAim (const MMatrix &parentInverseMatrix, const MVector &targetVector, const MVector &aimVector, const MVector &upVector, const MVector &wupVector, MEulerRotation::RotationOrder order=MEulerRotation::kXYZ, const MQuaternion &jointOrient=MQuaternion::identity, MStatus *ResultStatus=NULL) const
 Returns the rotation which aligns the aimVector in local space with the targetVector in local space while keeping the upVector in local space and the wUpVector world space aligned as closely as possible.
MVector worldUpVector (MPxConstraint::UpVectorType upType, const MVector &upVector, const MMatrix &upMatrix, const MPoint &constrPoint, MStatus *ResultStatus=NULL) const
 Returns the world up vector based on the requested up type.
MPoint worldConstraintPoint (const MMatrix &parentInverseMatrix, const MVector &translate, const MVector &rotatePivot, const MVector &rotatePivotTranslate, MStatus *ResultStatus=NULL) const
 Returns the world constraint point.

Member Enumeration Documentation

The type of up vector.

Enumerator:
kScene 

Scene up vector.

kObject 

Object up vector.

kObjectRotation 

Object rotation up vector.

kVector 

Specified vector.

kLast 

Last value, used for counting.


Constructor & Destructor Documentation

Constructor.

The constructor should never call any methods from MPxConstraint or make any calls that require the existence of the MObject associated with the user defined node. The postConstructor method should be used to do any initialization of this kind.


Member Function Documentation

const MObject weightAttribute ( ) const [virtual]

Returns the weight attribute for the constraint.

Default implementation returns MObject::kNullObj.

Examples:
geometrySurfaceConstraint.h.
const MObject targetAttribute ( ) const [virtual]

Returns the target attribute for the constraint.

Default implementation returns MObject::kNullObj.

Examples:
geometrySurfaceConstraint.h.
const MObject constraintRotateOrderAttribute ( ) const [virtual]

Returns the rotate order attribute for the constraint.

Default implementation returns MObject::kNullObj.

If is only necessary to override this method if the constraint will control rotation.

const char * className ( ) [static]

Returns the name of this class.

Returns:
The name of this class.

Reimplemented from MPxNode.

const MObject passiveOutputAttribute ( ) const [protected, virtual]

Returns the passive output attribute for the constraint.

Default implementation returns MObject::kNullObj.

Passive output attributes do not prevent value modifications to the destination attribute when connected.

void getOutputAttributes ( MObjectArray attributeArray) [protected, virtual]

Returns output attributes for the constraint.

Default implementation clears the input attributeArray and returns.

Parameters:
[out]attributeArrayArray of output attributes.
Examples:
geometrySurfaceConstraint.h.
MStatus closestPoint ( const MObject dataGeometryObject,
const MPoint toThisPoint,
MPoint theClosestPoint 
) const [protected]

Returns the closest point on this surface to the given point.

Parameters:
[in]dataGeometryObjectsurface
[in]toThisPointthe point to evaluate from
[out]theClosestPointthe calculated closest point
Returns:
Status code
Status Codes:
MStatus closestNormal ( const MObject dataGeometryObject,
const MPoint toThisPoint,
MVector theNormal 
) const [protected]

Returns the closest normal on this surface to the given point.

Parameters:
[in]dataGeometryObjectsurface
[in]toThisPointthe point to evaluate from
[out]theNormalthe calculated closest normal
Returns:
Status code
Status Codes:
MStatus closestTangent ( const MObject dataGeometryObject,
const MPoint toThisPoint,
MVector theTangent 
) const [protected]

Returns the closest tangent on this surface to the given point.

Parameters:
[in]dataGeometryObjectsurface
[in]toThisPointthe point to evaluate from
[out]theTangentthe calculated closest tangent
Returns:
Status code
Status Codes:
MEulerRotation computeAim ( const MMatrix parentInverseMatrix,
const MVector targetVector,
const MVector aimVector,
const MVector upVector,
const MVector wUpVector,
MEulerRotation::RotationOrder  order = MEulerRotation::kXYZ,
const MQuaternion jointOrient = MQuaternion::identity,
MStatus ResultStatus = NULL 
) const [protected]

Returns the rotation which aligns the aimVector in local space with the targetVector in local space while keeping the upVector in local space and the wUpVector world space aligned as closely as possible.

Parameters:
[in]parentInverseMatrix
[in]targetVector
[in]aimVector
[in]upVector
[in]wUpVector
[in]order
[in]jointOrient
[out]ResultStatus
Returns:
Aim rotation.
Status Codes:
MVector worldUpVector ( MPxConstraint::UpVectorType  upType,
const MVector upVector,
const MMatrix upMatrix,
const MPoint constrPoint,
MStatus ResultStatus = NULL 
) const [protected]

Returns the world up vector based on the requested up type.

Parameters:
[in]upType
[in]upVector
[in]upMatrix
[in]constrPoint
[out]ResultStatus
Returns:
World up vector.
Status Codes:
MPoint worldConstraintPoint ( const MMatrix parentInverseMatrix,
const MVector translate,
const MVector rotatePivot,
const MVector rotatePivotTranslate,
MStatus ResultStatus = NULL 
) const [protected]

Returns the world constraint point.

Parameters:
[in]parentInverseMatrix
[in]translate
[in]rotatePivot
[in]rotatePivotTranslate
[out]ResultStatus
Returns:
World constraint point.
Status Codes:

Member Data Documentation

Node attribute: enableRestPosition/erp - boolean.

This attribute defines the constraint behavior when all weights are at zero.

If true, the constraint goes to the restTranslate position when all weights are zero. If false, the constraint output is not computed when all weights are zero.

MObject lockOutput [static]

Node attribute: lockOutput/lo - boolean.

When enabled, the constrained object cannot be moved away from its constrained location, and a pairBlend will not be inserted if the user tries to keyframe the constrained attributes.

This allows for the pre-5.0 behavior of constraints. When disabled, the constrained object can be moved away from the constraint and a pairBlend will be inserted if the object is keyframed and the animation blending preference specifies that blending is enabled.


MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint
MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint MPxConstraint