Houdini 20.0 Crowd simulations

Motion path attributes

Attributes for SOP crowd motion paths.

On this page


Each motion path is a polyline representing the path of an agent over time, where each point is a time sample. At each point on the path, there are attributes that:

  • Describe the position and overall orientation of the agent.

  • Determine a particular sample of a clip to be played back.

  • Describe how to compute the agent’s pose by blending between multiple clips.

Some of the Crowd MotionPath tools manipulate the clip attributes, position attributes, or both.

Motion path attributes

Name Class Type Description
P point vector

The agent’s overall position at the time sample.

transform point matrix3

The agent’s overall transform at the time sample.

time point float

The time (in seconds) that the sample corresponds to.

custompose point group

Indicates that the agent’s pose should not be evaluated from the clip-related attributes such as clipnames. Instead, the agent’s original pose is left unchanged and only the agent’s primitive transform is updated.

This is intended for editing the paths of animated agents (for example, the output of a crowd simulation) while preserving custom poses produced by tools such as inverse kinematics or ragdoll simulation.

clipnames point string[]

The list of animation clips to blend between when evaluating the agent’s pose at the time sample.

cliptimes point float[]

The clip time to evaluate each animation clip at. This should match the length of the clipnames attribute.

clipweights point float[]

The blend weights to use for the animation clips. This should match the length of the clipnames attribute.

cliploops point int[]

Tracks the number of loops that have occurred for each animation clip. This should match the length of the clipnames attribute.

Layered animation attributes

The following attributes extend the basic animation blending model to describe a tree structure for layering and blending animation clips. These attributes correspond to the primitive intrinsics for layered animation clips.

Name Class Type Description
cliptransformgroups point string[]

The name of the transform group to use for each clip. This is used to apply a clip to a subset of the transforms or channels in the skeleton.

cliplayerids point int[]

The layer index (into cliplayermodes) that each clip is an input for.

cliplayermodes point int[]

Specifies the blend mode for each layer (the length of this list controls the number of layers in the hierarchy). The valid values are 0 (the default interpolate blend mode) and 1 (additive blend mode). The additive blend mode applies a percentage of the other clips' translations and rotations (controlled by the blend weight) to the first input clip, rather than interpolating between the inputs.

cliplayerweights point float[]

Specifies the blend weight for each layer. Like clipweights, this is used when the layer’s output is another layer’s input. The weight is unused for the topmost layer.

cliplayerparents point int[]

Similar to cliplayerids, specifies the layer index that the layer is an input for. The topmost layer has a parent index of -1.

Crowd simulations

Getting started

  • Basics

    An overview of Houdini crowd simulation concepts.

  • Setup

    How to set up and edit a crowd simulation.

The moving parts

  • Agents

    About agents, the moving actors that make up a crowd simulation.

  • States

    About agent states, the virtual mood of each agent that controls the agent’s animation and the behaviors it runs.

  • Triggers

    How to specify conditions that cause agents to change from one state to another.

  • Caches

    Tips for efficiently caching and loading crowd sims.

SOP crowds



  • Diversity

    How to create a more realistic crowd by making agents look and act differently.

  • Attaching cloth

    You can add and constrain vellum cloth as part of agent shape geometry, and then simulate the cloth based on agent movements.


  • Foot planting

    How to set up agents to adapt their animation to terrain and prevent skating.

  • Terrain

    How to specify terrain geometry for agents to walk across.

  • Obstacles

    How to set up obstacles for agents to avoid.