Houdini 20.0 Nodes Dynamics nodes

Crowd State 3.0 dynamics node

Defines a Crowd State

Since 15.5

Crowd State defines the current agent state. By default, the node/state name is used for the clip animation that is played while the agent is in that state. The clip name can be overridden, which allows for sharing of animation clips between states. This node also sets animation parameters for the clips that it uses (retiming of the clips is based on those values).

Parameters

State Name

A name for this crowd state, for example, walking or attacking. The default ($OS) uses the node name as the state name. This value is used, for example, to show the current state in a readout, or to let you choose a state from a list.

RBD Ragdoll

Specifies whether agents are simulated “ragdoll” in this state.

Active

The Bullet solver simulates the agents as active RBD objects (ragdolls). You can use the Partial Ragdoll controls to simulate part of the character as ragdoll, and have part of the character follow an animation clip.

Animated Static

The Bullet solver treats the agents as animated static objects, meaning the agent will affect rigid bodies (for example, other objects will bounce off the agent), but simulated objects will not affect the agent.

Ignore

The Bullet solver ignores the agents and no RBD objects will collide against them.

Stiffness

Stiffness (section)

When turned on, stiffness adds a certain resistance to the solver’s attempts to move joints from their current orientation to the “target” (animated or simulated) orientation.

Group

A named transform group specifying the joints that should become stiff. You can create joint groups in the agent setup network with the Agent Transform Group SOP.

Stiffness Value

When set to Constant, the stiffness is the same for the duration of the state. When set to Ramp, you can change the stiffness on a ramp based on how long the agent has been in this state.

Stiffness

When Stiffness Value is set to Constant, this specifies how much to resist changes to the current joint rotations. A value between 0.2 (the default) and 0.5 read as “stiff but not too stiff”. Values of 1 or more will be very stiff.

Time Range

When Stiffness Value is set to Ramp, this is the start and end times (in seconds) corresponding to the start and end of the ramp. For example, if you set Time Range to 0.0 and 5.0, the ramp lets you control the stiffness over the first 5 seconds the agent is in this state. Outside this range, the ramp extends the first and last values.

Stiffness Scale

When Stiffness Value is set to Ramp, this is a scale on the value of the Stiffness Ramp.

Stiffness Ramp

When Stiffness Value is set to Ramp, this sets the stiffness at each point in the Time Range. Outside this range, the ramp extends the first and last values.

Constraint Force Mixing

Increasing this value makes the motor component of the constraint softer. A small positive value can increase the stability of the simulation.

Partial Ragdoll

Partial Ragdoll

When turned on, makes some joints on the agent become simulated (ragdoll), while others parts of the agent follow an animation clip. For example, you can have the lower body animated by a walking clip, but the upper body can be a ragdoll and react to hits from simulated objects.

Active Group

A named transform group specifying the joints you want to be simulated (ragdoll). Joints that are not in this group will follow the animation clip specified in Clip Name. You can create joint groups in the agent setup network with the Agent Transform Group SOP.

Motors

Motors

When turned on, spends a certain amount of effort to make joints follow the animation clip. However, the joints are still simulated, and simulated forces can modify or overcome the motor effect.

Group

A named transform group specifying the joints that should be (partially) animated by the clip. You can create joint groups in the agent setup network with the Agent Transform Group SOP.

Strength Value

When set to Constant, the motor strength is the same for the duration of the state. When set to Ramp, you can change the motor strength on a ramp based on how long the agent has been in this state.

Motor Strength

When Strength Value is set to Constant, this is the amount of effort to make the joints follow the clip. The default value of 10 is enough to overcome gravity, but still allow collisions to overcome the motor. You can play with increasing or decreasing this value to get the effect you want.

Time Range

When Strength Value is set to Ramp, this is the start and end times (in seconds) corresponding to the start and end of the ramp. For example, if you set Time Range to 0.0 and 5.0, the ramp lets you control the motor strength over the first 5 seconds the agent is in this state. Outside this range, the ramp extends the first and last values.

Strength Scale

When Strength Value is set to Ramp, this is a scale on the value of the Strength Ramp.

Strength Ramp

When Strength Value is set to Ramp, this sets the motor strength at each point in the Time Range. Outside this range, the ramp extends the first and last values.

Correction Time

The length of time (in seconds) it takes the solver to correct deviations from the target joint rotations (such as after a collision). Lower values make the agent “recover” from impacts quickly, while higher values make impacts affect the agent for longer.

Constraint Force Mixing

Increasing this value makes the motor component of the constraint softer. A small positive value can increase the stability of the simulation.

Sticky Collisions

Group

A named transform group specifying the joints that the sticky collision settings should apply to. You can create joint groups in the agent setup network with the Agent Transform Group SOP.

Min Collision Impulse

The minimum impulse from a collision that will cause this object to stick to another object. This value must be greater or equal to 0 for the objects to stick.

Max Collision Objects per Shape

The maximum number of other objects that this object can be stuck to. A value less than or equal to 0 allows this object to be stuck to any number of other objects.

Max Collision Points

The maximum number of anchor points (constraints) that can be used to stick this object to another object.

Collision Ignore

Sticky collisions will not occur when colliding with any objects that match this pattern. The pattern uses the same syntax as the collisionignore attribute.

Animation clip controls

These controls are available when RBD Ragdoll is set to Ignore or Animated Static. They are also available for ragdolls (RBD Ragdoll set to Active) when Partial Ragdoll or Motors is turned on, allowing you to set the animation clip that controls the animated joints.

Clips

Clip Assignment

Specifies whether a particular clip or random distribution of clips should be assigned to the agent when it enters this state. The clip assignment can occur at the beginning of the simulation (if Set Initial Clip Name is turned on), or when a transition to a new state occurs. If no clips are assigned, the agent’s current clip is preserved when entering this state.

The clip can also be explicitly changed using the Output Clip parameter on the Crowd Transition DOP.

Clip Name

When Clip Assignment is set to Single Clip, this is the name of the animation clip to play in the current state.

Random Seed

When Clip Assignment is set to Random Distribution, this seed is used when randomly selecting clips.

Clip Groups

When Clip Assignment is set to Random Distribution, this is the number of groups of clips in the custom distribution.

Clip Names

When Clip Assignment is set to Random Distribution, this is 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

When Clip Assignment is set to Random Distribution, this specifies how likely the clips are to be selected.

Set Initial Clip Name

When turned on, overrides the agent’s initial clip using the Clip Assignment parameter.

Initial Clip Time

When turned on, sets the initial clip time (in seconds) for all agents in this state.

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.

Random Seed

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

Apply Locomotion Orientation

When the Clip Playback Type is set to Locomotive, this specifies whether the agent should be rotated according to the clip’s locomotion data when Set Initial Clip Time is turned on.

Clip Playback

Type

The type of animation used for the state.

In-Place

The animation is stationary, and the agent’s movement is entirely driven by its particle.

Locomotive

The source animation moves in world space, and the agent’s movement is guided by the clip’s locomotion data. When baking the animation clip, the Convert to In-Place Animation parameter on the Agent ROP or Agent SOP should be turned on.

Clip Speed Multiplier

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

Locomotion Speed Multiplier

When Type is set to Locomotive, this is a multiplier for how fast the locomotion channel of the animation clip is played back.

Variance (%)

The percentage that the Clip Speed Multiplier can be randomly increased or decreased by. For example, if the Clip Speed Multiplier is 0.7 and the Variance is 10%, the agents' clip speed multipliers will be random values between 0.63 and 0.77.

Random Seed

When Variance is turned on, this seed is used when randomly varying clip speeds.

Last Frame Matches First Frame

This parameter is available when Type is set to Locomotive. For locomotive clips that are designed for looping, a common workflow is to have an extra frame at the end of the clip that matches the first frame’s pose. The final frame of the clip is used by the crowd solver to determine the correct locomotive motion when moving from the final pose back to the initial pose. The final frame is skipped when advancing the clip time to avoid having the same pose for two consecutive frames or having the agent suddenly jump backwards.

Enable Looping

When turned on, the clip playback continues looping after reaching the end of the clip’s loop range. This can be overridden per clip using the clip properties.

Retime Clip to Match Particle Speed

When RBD Ragdoll is set to Animated Static or Ignore, and Type is set to In-Place, turning this on adjusts the clip’s playback speed based on the Gait Speed and the particle’s velocity.

Gait Speed

Specifies how fast the agent is moving in the in-place animation.

This parameter is available when RBD Ragdoll is set to Animated Static or Ignore, Type is set to In-Place, and Retime Clip to Match Particle Speed is turned on.

Allowed Variance (%)

Specifies how much the clip is allowed to be retimed by.

This parameter is available when RBD Ragdoll is set to Animated Static or Ignore, Type is set to In-Place, and Retime Clip to Match Particle Speed is turned on.

Limit Particle Speed to Gait Speed Range

When turned on, forces the particle speed to fall within the range specified by Gait Speed and Allowed Variance.

This parameter is available when RBD Ragdoll is set to Animated Static or Ignore, Type is set to In-Place, and Retime Clip to Match Particle Speed is turned on.

Use VEXpressions

When turned on, uses a local expression to override the Clip Speed Multiplier and Variance for each agent. Select Pass Through from the drop-down menu on the right to see the variables that you can modify.

See also

Dynamics nodes