Houdini 20.5 Nodes Geometry nodes

Crowd MotionPath geometry node

Creates motion paths from a crowd’s animation clips or a simulation.

On this page
Since 20.0

This SOP creates geometry representing the motion of each agent over a time range, which can be manipulated to direct the agent’s path or skeletal animation (for example, using Crowd MotionPath Follow or Crowd MotionPath Transition).

The Crowd MotionPath Evaluate SOP applies animation to agent primitives by evaluating the motion paths' point attributes.

See SOP motion paths for more information on the SOP Crowds MotionPath toolset.

Parameters

Source Mode

Specifies how the motion paths are constructed from the input agents.

Clip

Creates the motion paths by evaluating the input agents' assigned clips over the frame range. The paths' point transforms are set from the clips' locomotion transforms at each time sample.

Simulation

Creates the motion paths by cooking the input geometry over the frame range. The paths' point transforms are set from the agent primitives' transforms at each time sample. This mode should be used when the input geometry is time-dependent, such as from the output of a crowd simulation.

Start/End/Inc

The frame range of the motion paths. Each path contains a point for each sample in the frame range.

Transfer Attributes

Transfers attributes from the input agents to the motion paths.

Transfer Groups

Transfers groups from the input agents to the motion paths.

Clip Assignment

Assigns initial clips to the agents, overriding the input agents' clip assignments.

Number of Assignments

The number of agent groups with clips assigned to them.

Group

The group of agents to assign a clip to.

Group Type

Specifies whether the Group is a point or primitive group.

Random Seed

The seed for randomly selecting clips when there are multiple Clip Groups, or when Clip Names is a list of clip names.

Clip Groups

A weighted random distribution of clips to assign to the agents in the group.

Clip Names

A string pattern that specifies one or more clip names. The pattern follows the same syntax as the match VEX function. The Weight value for the group is divided evenly between the matching clips.

Weight

Specifies how likely the clips are to be selected.

Initial Clip Time

When turned on, sets the initial clip time (in the Clip Time Units, relative to the clip’s start time) for all agents in the group.

Clip Time Units

This drop-down menu specifies the units of the Initial Clip Time and Random Clip Offset.

Seconds

The clip time is specified in seconds, relative to the clip’s start time.

Phase

The clip time is specified as a normalized phase, where 0 is the beginning of the clip, and 1 is the end of the clip. This can be simpler to use when working with clips of different lengths.

Random Clip Offset

When Initial Clip Time is turned on, this randomly shifts the initial clip time forward for each agent by up to the specified number of seconds.

Clip Offset Seed

When Random Clip Offset is turned on, this seed is used when randomly varying clip times.

Clip Speed

A multiplier for how fast the animation clip is played back.

Clip Speed Mode

This drop-down menu controls whether the clip speed is randomized or overridden by a point attribute on the input agents.

Set Uniform

Each agent’s clip speed is set to the Clip Speed.

Set Varying

Each agent’s clip speed is randomized according to the Variance (%) and Variance Seed.

Use Attribute

Each agent’s clip speed is set from a point attribute on the input geometry.

Variance (%)

When the Clip Speed Mode is set to Set Varying, this is the percentage that the Clip Speed can be randomly increased or decreased by. For example, if the Clip Speed is 0.7 and the Variance is 10%, the agents' clip speeds will be random values between 0.63 and 0.77.

Variance Seed

When the Clip Speed Mode is set to Set Varying, this seed is used when randomly varying clip speeds.

Clip Speed Attribute

When the Clip Speed Mode is set to Use Attribute, this is the name of a float point attribute to set the clip speed from.

Attributes

Each motion path is a polyline representing the path of an agent over time, where each point is a time sample.

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.

Inputs

Agents

A crowd of agents whose motion is represented by the Motion Paths.

Outputs

Motion Paths

Polyline curves representing the paths of the agents over a time range.

Agents

A crowd of agents whose motion is represented by the Motion Paths.

Examples

RagdollFromMotionPaths

This examples demonstrates how to bring agents following SOP-level animation into the crowd solver. These agents can be used for avoidance with simulated agents, or turned into ragdolls.

EditMotionPathsFromSim

This examples demonstrates how to generate motion paths from a simulated crowd, and use Crowd MotionPath Edit to interactively adjust the paths of specific agents.

MotionPathAvoidanceFiltering

This example demonstrates how the Crowd MotionPath Avoid SOP can be used to apply avoidance between neighboring agents and against obstacles, and also uses the collisionignore attribute to build more complex avoidance rules and collision filtering between different groups of agents.

MotionPathFollowCurve

This examples demonstrates how to deform motion paths to follow guiding curves, along with more advanced options such as following closed loops and using attributes to control which curves are followed by each agent.

MotionPathLayerClip

This example demonstrates how to use the Crowd MotionPath Layer SOP to layer a clip onto the upper body of an agent. The clip is activated when the agent is inside a bounding object.

MotionPathTransitionClips

This example demonstrates how to use the Crowd MotionPath Transition SOP to blend between animation clips, including intermediate transition clips defined by a clip transition graph

See also

Geometry nodes