Mode: Object and Pose modes
Panel: Constraints (Object context, Object sub-context, F7)
Constraints are object features, i.e. they control in various fashions the objects’ transform properties (position, rotation and scale). This is why you will find their dedicated Constraints panel in the Object context, Object sub-context (F7). In fact, constraints are in a way the object counterpart of the modifiers, which work on the object data (i.e. meshes, curves, etc.).
All constraints share a basic common interface, again with many similarities with the modifiers’ one.
Use of constraints
Even though constraints might be very useful in static scenes (as they can help to automatically position/rotate/scale objects), they were first designed for animation, as they allow you to limit/control the freedom of an object, either in absolute (i.e. in global space), or relatively to other objects.
Also note that constraints internally work using 4x4 transformation matrices only. When you use settings for specific rotation or scaling constraining, this information is being derived from the matrix only, not from settings in a Bone or Object. Especially for combining rotations with non-uniform or negative scaling this can lead to unpredictable behavior.
Finally, there is a great rigging feature in Blender: in Pose mode, each bone of an armature behaves a bit like a standard object, and, as such, can be constrained! Most constraints work well with both objects and bones, but there are a few exceptions, that will be noted in the relevant constraints pages.
To learn more:
- read about using constraints in object animation in the Animation chapter
- read about using constraints in rigging in the Rigging chapter
There are several types of constraints. We can classify them in three families:
There are constraints that works with their owner object and others that need a second object (the target) to work, sometimes of a specific type (e.g. a curve). In this case targeted constraints are shown as a dark blue dashed line drawn in the 3D view between the owner and target objects.
These constraints directly control/limit the transform properties of its owner, either absolutely or relatively in terms of its target properties.
|Copy Location||Copies the location of the target (with an optional offset) to the owner, so that both move together.|
|Copy Rotation||Copies the rotation of the target (with an optional offset) to the owner, so that both rotate together.|
|Copy Scale||Copies the scale of the target (with an optional offset) to the owner, so that both scale together.|
|Limit Distance||Limits the position of the owner, so that it is nearer/farer/exactly at the specified distance from the target.|
|Limit Location||Limits the owner’s location inside a given range.|
|Limit Rotation||Limits the owner’s rotation inside a given range.|
|Limit Scale||Limits the owner’s scale inside a given range.|
|Transformation||Uses a property of the target (location, rotation or scale), to control a property (the same or a different one) of the owner.|
These constraints try, in various ways, to adjust their owner’s properties so that it “points at” or “follows” the target.
|Clamp To||Clamps the owner to a given curve target.|
|IK Solver||Bones only. Creates a chain of bones controlled by the target, using inverse kinematics.|
|Locked Track||The owner is tracked to the given target, but with a given axis’ orientation locked.|
|Stretch To||Stretch the owner to the given target.|
|Track To||The owner is tracked to the given target.|
These are “misc” constraints.
|Action||The owner executes an action, controlled by the target (driver).|
|Child Of||Allows a selective application of the effects of parenting to another object.|
|Floor||Uses the target’s position (and optionally rotation) to define a “wall” or “floor” that the owner won’t be able to cross.|
|Follow Path||The owner moves along the curve target.|
|Null||An old, useless thing, that does nothing…|
|Rigid Body Joint||Creates a rigid joint (like hinge…) between the owner and the “target” (child object).|
|Script||Uses a Python script as constraint.|
|Shrinkwrap||Limits the location of the owner at the surface (among other options) of the target.|
See this BSoD tutorial for descriptions of most available constraints.