API Guide > Manipulators >

# Base manipulators

The OpenMaya API supports 10 base manipulator classes that can be combined to form a composite manipulator.

The following lists these base manipulators and the C++ function sets that correspond to them:

- FreePointTriadManip: MFnFreePointTriadManip
- DirectionManip: MFnDirectionManip
- DistanceManip: MFnDistanceManip
- PointOnCurveManip: MFnPointOnCurveManip
- PointOnSurfaceManip: MFnPointOnSurfaceManip
- DiscManip: MFnDiscManip
- CircleSweepManip: MFnCircleSweepManip
- ToggleManip: MFnToggleManip
- StateManip: MFnStateManip
- CurveSegmentManip: MFnCurveSegmentManip
- RotateManip: MFnRotateManip
- ScaleManip: MFnScaleManip

FreePointTriadManip

The FreePointTriadManip provides a moveable point which can be moved anywhere. It has axes for constrained x, y, and z movement and obeys grid snapping, point snapping, and curve snapping. The FreePointTriadManip generates the 3D position of the point. It is useful for specifying the position of an object in space.

Note

The FreePointTriadManip is a subset of the moveManip in Maya.

DirectionManip

The DirectionManip lets you specify a direction as defined by the vector from the start point to the manipulator position. It uses a FreePointTriadManip to specify the end point of a vector relative to a given start point. This manipulator generates a vector from the start point to the end point.

DistanceManip

The DistanceManip lets you manipulate a point that is constrained to move along a line. The distance value is calculated from the start point of the line to the manipulated point. This manipulator generates a single floating point value. Scaling factors can be used to determine how long the manipulator appears when it is drawn.

PointOnCurveManip

The PointOnCurveManip lets you manipulate a point constrained to move along a curve, in order to specify the "u" curve parameter value. This manipulator generates a single floating point value corresponding to the curve parameter.

PointOnSurfaceManip

The PointOnSurfaceManip lets you manipulate a point constrained to move along a surface, in order to specify the (u, v) surface parameter values. This manipulator generates two floating point values corresponding to the surface (u, v) parameters.

DiscManip

The DiscManip lets you rotate a disc in order to specify a rotation about an axis. This manipulator generates a single floating point value corresponding to the rotation.

CircleSweepManip

The CircleSweepManip lets you manipulate a point constrained to move around a circle, in order to specify a sweep angle. This manipulator generates a single floating point value corresponding to the sweep angle.

ToggleManip

The ToggleManip lets you switch between two modes or some on/off state. It is drawn as a circle with or without a dot. When the mode is on, the dot is drawn in the circle; when the mode is off, the circle is drawn without the dot. This manipulator generates a boolean value corresponding to whether or not the mode is on or off.

StateManip

The StateManip lets you switch between multiple states. It is drawn as a circle with a notch. Each click on the circle increments the value of the state (modulo the maximum number of states). This manipulator generates an integer value corresponding to the state of the manip.

CurveSegmentManip

The CurveSegmentManip lets you manipulate two points on a curve to specify a curve segment. This manipulator generates two floating point values, which correspond to the parameters of the start and end of the curve segment.

RotateManip

The RotateManip allows you to manipulate a 3d rotation vector. It supports the 3 rotation modes of the built-in rotate manipulator (object space, global, gimbal) and allows constrained rotation on the x, y, z and viewing axes. The vector generated by the manipulator is an Euler rotation that is suitable for input to a rotation plug.

ScaleManip

The ScaleManip lets you manipulate relative x, y, and z scaling values. The scale manipulator provides a central handle for proportional scaling, as well as x, y, and z axis handles for non-proportional scaling on each axis. The vector generated by the manipulator is a relative scaling vector that is suitable for input to a scale plug.