Behavior Tree#

Overview#

The Behavior Tree extension provides a hierarchical, node-based decision-making framework for Omniverse. Trees are composed of reusable nodes, authored as USD prims, and execute on the simulation timeline. Use the Tree Editor to author and debug trees in the stage. The extension stack uses the omni.behavior.tree.* namespace; in the UI and in some host applications it may appear as Behavior.

Key Features#

  • Node-Based Architecture: Compose behaviors from action nodes, composite nodes, and modifiers.

  • USD Integration: Trees persist as USD prims with attributes for collaboration and scene-level authoring.

  • Custom Node Libraries: Define action and composite nodes in Python or C++ via a declarative API.

  • Blackboard System: Share data between nodes using a typed key-value store.

  • Modifier Attachments: Attach conditions and decorators to nodes without changing tree structure.

  • Runtime Ticking: Trees execute automatically on the simulation timeline with delta-time support.

Extension Components#

  • omni.behavior.tree.core — Core C++ engine with Python bindings: tree execution, node libraries, blackboards, serialization.

  • omni.behavior.tree.ui — Tree Editor window, node catalog, property panels, debug visualization.

  • omni.behavior.tree.schema — USD schema definitions (BehaviorTreeAPI, BehaviorTreeNodeLibrary, BehaviorTreeBlackboard).

  • omni.behavior.tree.example — Example node libraries and sample scenes.

Enable omni.behavior.tree.core in the Extension Manager to use the Behavior Tree system. For the visual editor, also enable omni.behavior.tree.ui. Open the Tree Editor via Window (or Behavior menu) — Toggle Behavior Tree.

Documentation#

Character Animation Nodes#

The behavior simulation node library (omni.anim.behavior.tree) provides action nodes and modifiers for driving human behavior agents from a behavior tree. See the Behavior Simulation documentation.