You can constrain an axis of a deformer to always point in a certain direction as defined by a global position, an object, or an actor's goal. This axis of the constrained deformer always faces the defined target, thus affecting the deformer's orientation, the same as a typical direction constraint.
For example, you can constrain the actors' heads so that they all keep their eye on the ball at a tennis match, or have their arms constrained to point toward some object.
The hierarchy of the rig proxy matters when you want to constrain multiple deformers in a branch, such as an arm, leg, or the upper body. Make sure that the deformers are parented correctly in the rig proxy, then you can constrain the parent deformer to affect that branch. See Modifying the Actor's Rig for more information.
Looking at Objects or Positions
Using the Crowd Look At Constraint compound, you can constrain the orientation of a deformer in an actor's rig proxy to point at a position: this can be an object or simply a position in global space.
In the image below, the actors' heads are constrained to follow the red ball as it bounces around the stadium.
In the simulation point cloud's Skeleton Simulation ICE tree, get a Crowd Look At Constraint compound and plug it into an ICETree port below the Set Locomotion or Set Stadium Animation node.
In a Get Data node, set the reference to the deformer you want to constrain.
This is usually the head bone, but you can use any other deformer (including a parent deformer) such as the spine deformer to rotate the actor's torso.
You can display the rig proxy as described in Modifying the Actor's Rig to help you find the correct deformer.
Plug the Get Data node's Out Name output into the Proxy Deformer Name port of the Crowd Look At Constraint compound.
If you are constraining a parent deformer, make sure that the Child Compensation Transformation option is off in the Crowd Look At Constraint compound's property editor so that the child deformers are also affected by the constraint.
In another Get Data node, specify the position that you want to use as the constrainer for the deformer. For example, you could set the global position for an object (for example, ball.kine.global.pos).
Plug this node's Value output into the Target Position port of the Crowd Look At Constraint compound.
If you want to simply use a global position with no object, enter the XYZ values as the Target Position in the constraint compound's property editor.
Set the XYZ value for the Local Vector to the deformer's axis that you want to point to the target position.
You can check to see which vector is axis forward this by selecting the deformer in the rig proxy in a 3D view and activating the Translate tool in Local mode. In the image below, the Z axis is used as the local vector.
Using the Crowd Look At Goal compound, you can constrain the orientation of a deformer in an actor's rig proxy to point at the actor's current goal. This is usually a goal object, but it may also be an interim goal, such as a wall exit point.
In the image below, the actors initially turn their heads toward the first goal. After they pass within the goal's radius, they turn their heads toward the next goal.
The procedure for constraining a deformer to a goal is almost the same as for constraining to an object or position (see above), except that the actor's current goal is automatically used - there's no need to define it.
In the simulation point cloud's Skeleton Simulation ICE tree, get a Crowd Look At Goal compound and plug it into an ICETree port below Set Locomotion.
In a Get Data node, set the reference to the deformer you want to constrain.
This is usually the head bone, but you can use any other deformer, including a parent deformer.
Plug the Get Data node's Out Name output into the In Proxy Deformer Name port of the Crowd Look At Goal compound.
If you are constraining a parent deformer, make sure that the Child Compensation Transformation option is off in the Crowd Look At Goal compound's property editor so that the child deformers are also affected by the constraint.
Set the XYZ value for the Local Vector to the deformer's axis that you want to point to the goal.
You can also set a rotation limit for the deformer with the Max Angle, such as to prevent actors' heads from spinning completely around, unless this is something you want to do!