Constraints (Alpha)


A constraint is an entity that binds several objects in the scene, allowing one of them to control the positions of the other. Such a feature can be especially useful when you are creating animations that involve additional objects such as tools or weapons.


Currently, you can only apply one constraint to one object.
This feature is currently under development. It can be used in production, but keep in mind that it has limitations

There is a total of three types of constraints:

Constrain additional is used for binding several Additional Point Controllers to each other.
Constrain points attaches selected Point Controllers to a transform object (i.e. an object that has position, rotation and scale parameters): a joint, a mesh, a locator, or a group.
Constrain transform binds one transform object to another.

Here, we’ll be taking a look at each one of these constraints, how they are applied and purposes they are used for.

Constrain Points

If you’d like to attach one or more Point Controllers to a transform object, use this option.

1. Select Point Controller(s)
2. Select a transform object.
A transform object is an object that has transform parameters - coordinates, rotations and scale - attached to it. A Mesh, for example, is a transform object, while a Point Controller is not (as it lacks both rotations and scale).
3. Select Rig additional → Constrain points from the Commands menu:

Now, the constraint should be created. However, it won’t have any effect by default. To use the newly created constraint, you’ll have to enable it.

f you select a constrained point, you’ll see several new options under the Point ik fk settings tab on the Object Properties panel:

This Constraint behavior, as its name suggests, controls the newly created constraint. There is a total of three options:

Constraint index
Used for switching between multiple constraints.

Constraint enabled
If this is turned on, the constraint is applied to the constrained object.
This parameter should be activated for the constraint to work (whether or not it is actually taken into account is determined by the Constraint active parameter described above).

<object name> fk root index
The index of the transform object used as a constraint.
If a point is constrained to several objects at once, this parameter can be used to switch between constraints.

When you constrain Directional Controllers, the settings for the constraint are added to a different behavior called Limb direction data:

To activate the constraint:

1. On the Timeline, select an interval to which you’d like to apply the constraint.

2. Turn on the Constraint enabled parameter.

Active constraints are marked with red circles in the Viewport:

Constrain Transform

For the cases when you need to associate objects that are not Point Controllers, you should use this option:

1. Select both objects

2. Select Rig additional → Constrain transform from the Commands menu:

3. The Transform window will appear:

4. In this window, set the ‘main’ object. it will control the other object.

Now, each one of the objects should have a Constraint behavior attached to it. This one is a little different from the behavior used with Point Controllers:

Constraint active
Same as in the behavior for Point Controllers (see above).

Constraint enabled on frame
Same as in the behavior for Point Controllers (see above).

Constraint rotation
This option defines how the rotation of the constrained object is affected when the object it is constrained to is rotated.

There are three possible values.

Compensate means the position of the constrained object is affected by the rotation of the object it is constrained to, but its global rotation is not affected:

Full means rotation is copied completely:

Off means rotation is not taken into account:

Constrain position
If this is enabled, the constrained object’s position is affected when the object it is constrained to is moving.

Just like in the previous case, these constraints can be switched on and off individually for each frame and interval

Constrain Additional

Finally, there is a way to link one part of the rig to another.
This option is useful for constraining long body parts: spines, tails and such.

1. Select several Additional Controllers.
You’ll need at least 3 consecutive Additional Points (the Rigid Bodies associated with these points should form a chain).

2. Select Rig additionals → Constrain additional from the Commands menu:

3. After this, the constraint should be created. Enable it the usual way, and everything should work as intended.


The video below shows how constraints can be used to improve animation:

Root Controller

Using Constraints, you can easily create a Root Controller: a tool that can be used to easily position the character as a whole.

Creating a Root Controller

To create a Root Controller, follow these steps:

1. Create a cube or any other transform object.
If you are creating a cube, for example, use Add → Cube from the Commands menu.

It is recommended to put this object on a separate Animation Track to make working with it more convenient.
To do this:

2. Select the object and click the Add track button at the bottom left corner of the Timeline:

It is also recommended to give this Track an unique name (such as Root).

The next step is to bind the character to the root object.

3. Select all the points of the rig.

4. Add the root object to the selection.

5. Select Constrain points from the Commands → Rig additional menu to create a constraint:

And with this, a Root Controller is created.

Using a Root Controller

Like any other constraint, once the controller is ready, it should be activated so it could be used to adjust the character’s position.

If you select any of the Point Controllers, you’ll see that they now have a new options in the Point ik fk settings behavior on the Object Properties panel:

To activate the constraint, we'll need to turn on the Constraint enabled parameter.
This parameter is animatable, which means it has a separate value for each frame; so to enable it on an interval, we'll need to enable it for each of the frames that make this interval.
This can be done manually, but there is also a more convenient way:

1. Select the part of the Timeline on which you want to enable the constraint.

2. Select the Point Controllers to apply the constraint to.

3. On the Object Properties panel, switch the mode to Apply on selected interval:

4. Turn on the Constraint enabled option.

And with this, everything is set. Now you should be able to move the character by moving the root object.

Was this article useful to you?