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

MPxConstraint Class Reference

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] attributeArray Array 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] dataGeometryObject surface
[in] toThisPoint the point to evaluate from
[out] theClosestPoint the 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] dataGeometryObject surface
[in] toThisPoint the point to evaluate from
[out] theNormal the 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] dataGeometryObject surface
[in] toThisPoint the point to evaluate from
[out] theTangent the 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