On this page

The most common way to create constraints is using the Constraint shelf tools. These tools will create a constraint network where you can constrain objects to each other in the scene view.

You can also access the tools on the Constraint shelf by using the Rigging radial menu.

  1. Select Rigging from the radial menu dropdown list.

  2. Press C in the viewport.

  3. Hover over Constraints and select one of the tools.

Using the constraint shelf tools

  • Clicking a shelf tool will start a picking session. The first pick is always to select the object on which you want to create the constraint (the object you want to modify).

  • If you select multiple objects at the same time on this first pick session, a new constraint will be created on each object.

  • If you already have a selection when you trigger a shelf tool, these objects will be used as the first pick session.

  • If you used the Constraints drop down button, the first pick session is filled automatically by nodes selected in the parameter panel.

  • Some shelf tools, such as Look At and Follow Path, have optional picking sessions. You can simply press Enter to continue to the next session.

  • The shelf tools always append new nodes after the node with the Output flag.

  • All shelf tools have a Keep Position mode where the constraint is applied in such a way that the object doesn’t move on creation. See Object Offset for more information.

  • Check the Constraint shelf tools Toolbox parameters for more options, such as the blend mask controls, blend mode, weight, keep position, and add keyframe.

  • If the Constraint Path is empty when a constraint is first created, a constraints CHOP network is created and a Get World Space CHOP node is created inside.

Creating an empty constraint

Select an object and use the tab menu to create a Constraints Network. If the object node already has a valid Constraints Network, the network editor syncs to the node with the Output Flag.

Useful CHOPs

  • Get Local Space CHOP to access local transformations on objects.

  • Transform CHOP nodes to apply local transformation on top of an existing constraint.

  • Simple Blend CHOP isolates the blending of transform in those nodes.

  • Object(Constraints) CHOP to pull a transform from an external object.

  • Pose CHOP to capture/lock a transform in a pose and use it later. This can also be used to lock a rig controller like a twist affector in world space.

  • Null CHOP nodes as markers in your Network.

  • Fetch CHOP nodes to carefully query another constraint network marker instead of fetching the final transform. This is really important to avoid introducing evaluation cycles when you start stacking constraints on multiple objects. For example, first a hand picks a prop and then you want the prop to drive the hand.


Make use of the secondary inputs such as Lookat, Up, and Pivot to create procedural setups.


You can use more than one surface constraint, and mix the results together to get an average position.

Using Constraints with locked digital assets

You can still apply object constraint to object nodes that are part of a locked digital asset. If the default constraint path points to a locked digital asset, a CHOP network named after the digital asset will be created to hold constraints for object nodes. An Export CHOP constraint is created next to the usual CHOP constraint nodes and uses CHOP exports to override the Enable Constraints toggle and the Constraints path parameter inside of the digital asset.


Export CHOPs can override parameter values inside locked HDAs.

If the object node inside of the digital asset already has a constraint network, a new constraints network will also be created, but it will start with a Fetch CHOP rather than a Get World Space CHOP node. This way, if the constraint inside of the rig changes, the external constraint will pick the change and continue to work.

Tips and Notes

  • The Channel Wrangle CHOP gives you a quick way to write custom constraints in VEX.

  • By default, constraints nodes are created in Use Current Frame mode, which makes the node evaluate a single frame at a time. In some situations you may want to switch the nodes to Full Animation Range mode and apply time based CHOP effects, such as Filter CHOP or Lag CHOP to smooth animation paths or save animation clips to file.

  • By default, constraints nodes are created using a sampling rate that matches the current FPS of the Global Animation Range. It’s important to correctly set the sampling rate if you want motion blur to work properly at render time. For example, set it to 240 instead of 24.

Object-level characters