Constraints Editor

Control the behavior and relationships between multiple objects in a scene with the new Constraint Editor. Design intricate and dynamic animations and interactions without the need for programming expertise. Create a position, orientation, aim, or parent constraint, then drag and drop nodes you want constrained from the Scenegraph or their corresponding modules into the Constraint Editor.

learnMore icon For additional information on constraints, see the following:

The Constraint Editor consists of the following:

1 A menu bar for finding tools to export evaluation sequences and create, edit, and select constraints.

2 A toolbar for quickly accessing frequently used tools.

3 A basic search and filtering for quickly locating specific content.

4 A Constraint Lister for a way to visually organize and navigate constraint content. Expand and collapse nodes to find a specific item quickly. Use the Constraint Lister dropdown with the basic search and filtering to further refine a search. And, for quick and convenient access to tools, use the right-click context menu.

5 An Attributes panel for activating/deactivating a constraint, adding a description, showing or hiding a constraint in the viewport, setting weights, and more. See Attributes for additional information on these.

Constraint Editor

Tip:

To see how constraints work and are set up, check out the example scene file at File > Open Examples, open constraint_example.vpb, then select Animation > Timeline to display the animation timeline and press the Play button.

Creating a Constraint

Use Create icon and choose the type of constraint to create. When a constraint is created, it is added to the Constraint Lister and its attributes, which can be adjusted, are loaded into the panel to the right. Drag nodes from the Scenegraph or other editors onto the target and constrained nodes to create constaint relationships.

  1. Click Create icon and choose the type of constraint to create.

  2. In the Constraint Lister, expand the new constraint.

  3. Drag one or more nodes from the Scenegraph or other editors onto the Target Nodes node to create a target object. Drag another node onto the Constrained Nodes node to create a constrained object.

    Node dragged onto Target Nodes

    Now, if you move the target object (the red lever), the constrained object(s) follow.

    Gif of the process

  4. (Optional) In the Constraint Lister, select the parent of the Target and Constrained Nodes to modify its settings. It can be set as active or not, renamed, and a description can be added. Determine whether the constraint handles are visible and their size. Select the dragged object node to make changes to the weighting.

Selecting a Constraint

The constraint handle can be selected in the viewport using Shift + LMB, but it must be visible and large enough to select. You can also right-click the constraint node and select Select Objects In > Scenegraph from the context menu. When a constraint handle is selected, its targets are selected and highlighted yellow in the viewport. In the Scenegraph and Constraint Editor (if open), their nodes will be selected and highlighted blue.

  1. In the toolbar, ensure Transform and Boundings are enabled.

  2. In the Constraint Editor, expand the parent node and select a constraint node. In the example, the Arrows folder was expanded and Orientation Constraint node is selected.

    Expanded parent constraint node

  3. Ensure Show Constraint is checked and increase Scale to a larger value, such as 300, to easily see and select the constraint handle.

    Scale = 100 Scale = 300
    Scale = 100 Scale = 300
  4. Now, either Shift + LMB the constraint handle to select it or right-click the constraint node and select Select Objects In > Scenegraph.

Saving a Constraint

When constraints are created and the scene is saved as a .vpb, using File > Save or Save As, they are preserved in geometry assets and work as expected when reloaded into a scene.

Constraining a Clipping Plane

To set up a constrained and movable clipping plane, use a World-to-Local approach. This calculates the world transformation, yet applies the constraint locally to the clipping plane. This ensures the clipping plane is constrained to another node, using a parent constraint, and can move.

  1. In the Constraint Editor, once a constraint is created, expand it to expose the Constrained Nodes node.

  2. In the Scenegraph, drag and drop a clipping plane onto Constrained Nodes in the Constraint Editor.

  3. In the Constraint Editor, select the clipping plane, then in the Apply Transformation attributes section, set From Target to World and To Constrained to Object.

    Apply Transformation section in the Attributes panel

Undoing Constraint Creation and Deletion

Through the UI, a constraint cannot be uncreated or undeleted. However, using Python, constraints can be uncreated and undeleted with vrConstraintService.

Exporting an Evaluation Sequence

Export all constraints applied to scene to a single constraints file, using Export Evaluation Sequence. Use this file, for example, to share, reorder, and enable/disable constaints within a constraint set. This file can be shared with others.

  1. Select File > Export Evaluation Sequence.
  2. In the browser, set where the evaluation sequence file (.tgf) will be stored.
  3. Click Save.

Setting Limits

We've added Translation, Rotation, and Scaling Limits to the Transform Editor for aiming constraints and Translation Limits and Rotation Limits to the Camera Editor > Camera Settings > Viewing section for limiting the movement of cameras. These enable limits to be set on the movement, rotation, and scaling of a target, restricting its transformation to the ranges set. Though you can use these alongside constraints, they are not mandatory to restrict the target or constraint node. Quickly limit the translation, rotation, and scaling along the X, Y, and Z axes by defining these with the From/To limits. Red is X, green is Y, and blue is Z.

Tip:

In the Scenegraph, use the Expansion Column to identify nodes with limits (Limits icon).

Expansion Column to identify nodes with limits

Double-clicking the icon opens the Transform Editor with the node selected and the limits section visible.

Tranform Editor with limit and node selected

To Limit an Object Node

  1. In the Scenegraph, select the node to limit.

  2. In the Quick Access Bar, select Transform to open the Transform Editor.

  3. With the node selected in the Transform Editor, in the Basic tab of the Attributes, expand the section to limit transformations. For example, expand the Translation section.

  4. Click the box in front of the limits section to enable it, then expand the section and set the limits.

    Click the box in front of the limits section to enable it

To Limit a Camera Node

  1. In the Scenegraph, select the camera node to limit.
  2. In the Quick Access Bar, select Cameras to open the Camera Editor.
  3. With the camera node selected in the Camera Editor, in the Camera Settings tab of the Attributes, expand the Viewing section to access the Translation and Rotations Limits sections.
  4. Click the box in front of these section to enable them, then expand the sections and set the limits.