Houdini 20.5 Nodes Dynamics nodes

Crowd Object dynamics node

Creates a crowd object with required agent attributes to be used in the crowd simulation.

On this page
Since 14.5

The result is ready for use by the Crowd Solver.

Parameters

Creation Frame Specifies Simulation Frame

When turned off, the creation frame refers to global Houdini frames ($F). When turned on, the creation frame refers to simulation specific frames ($SF).

The simulation specific frames are affected by the offset time and scale time at the DOP network level.

Creation Frame

The frame number on which the object is created. The object is created only when the current frame number is equal to this value. This means the DOP network must evaluate a timestep at the specified frame, or the object will not be created.

Solve On Creation Frame

When turned on, newly created objects are solved by the solver on the timestep in which it was created.

This parameter is usually turned on if this node is creating objects in the middle of a simulation rather than creating objects for the initial state of the simulation.

Object Name

The name for the created object. This is the name that shows up in the details view, and is used to reference this object externally.

Note

It is possible to have many objects with the same name, but this complicates writing references, so it is recommended to use something like $OBJID in the name.

Display Geometry

When turned on, the agents are displayed in the viewport. You may want to turn this off if Show Guide Geometry is on, so that the collision shapes (from Show Guide Geometry) are not hidden by the agents' skin geometry.

Enable Ragdoll Data

When turned on, creates the point attributes required for solving the agent with the Bullet solver.

Crowd

Initial Geometry

Source

The source of the Initial Geometry. This may be a SOP path or a SOP connected to one of the DOP network’s inputs.

Initial Geometry

The path to a SOP containing the initial geometry for the crowd object.

Use Object Transform

When turned on, the transform of the object containing the Initial Geometry is applied to the geometry.

Attributes

Add ID Attributes

When turned on, assigns a value to each agent for the id point attribute, and updates the nextid detail attribute.

Life Expectancy

The life expectancy of the agent, in seconds. This is used when Reap Particles on the Crowd Solver DOP is turned on.

Clip Transition Graph

Source

The source of the Clip Transition Graph geometry. This may be a SOP path or a SOP connected to one of the DOP network’s inputs.

Clip Transition Graph

The path to a SOP containing geometry that describes how clips are allowed to transition to each other. If the clip transition graph geometry is not explicitly provided, it is loaded from the agent definition.

Clip Properties

Source

The source of the Clip Properties geometry. This may be a SOP path or a SOP connected to one of the DOP network’s inputs.

Clip Properties

The path to a SOP containing geometry that describes advanced options for how clips should be played back.

Target Geometry

Source

The source of the Target Geometry. This may be a SOP path or a SOP connected to one of the DOP network’s inputs.

Target Geometry

The path to a SOP containing the target geometry for agents whose crowdanimated point attribute is non-zero.

Use Object Transform

When turned on, the transform of the object containing the Target Geometry is applied to the geometry.

Bullet Data

Show Guide Geometry

When turned on, displays a visualization of the object’s collision shape, including the Collision Padding. This is useful for debugging issues with collision detection, but is typically slower than only displaying the object’s geometry.

Color

The color of the guide geometry.

Deactivated Color

The color of the guide geometry if the object is not moving and has been deactivated by the Bullet Solver.

Geometry Representation

The shape used by the Bullet engine to represent the object. The Show Guide Geometry parameter can be used to visualize this collision shape.

Convex Hull

The default shape for the object. The Bullet Solver creates a collision shape from the convex hull of the geometry points.

Concave

The Bullet Solver converts the geometry to polygons and creates a concave collision shape from the resulting triangles. This shape is useful when simulating concave objects such as a torus or a hollow tube. However, it is recommended to only use the concave representation when necessary, since the convex hull representation typically provides better performance.

Box

The bounding box of the object.

Capsule

The bounding capsule of the object.

Cylinder

The bounding cylinder of the object.

Compound

Creates a complex shape consisting of Bullet primitives (including boxes, spheres, and cylinders). You will need to use the Bake ODE SOP.

Sphere

The bounding sphere of the object.

Plane

A static ground plane.

Create Convex Hull per Set of Connected Primitives

When turned on, and Geometry Representation is set to Convex Hull, the Bullet Solver creates a compound shape that contains a separate convex hull collision shape for each set of connected primitives in the geometry.

AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry

When turned on, the object’s Geometry subdata is analyzed instead of using the Position, Rotation, Box Size, Radius, and Length values.

When Geometry Representation is set to Box, Capsule, Cylinder, Sphere, or Plane, use the geometry bounds to create the shape.

Position

The position of the object shape in the Bullet world. This parameter is available when Geometry Representation is set to Box, Sphere, Capsule, Cylinder, or Plane, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.

Rotation

The orientation of the object shape in the Bullet world. This parameter is available when Geometry Representation is set to Box, Capsule, Cylinder, or Plane, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.

Box Size

The half extents of the box shape. This parameter is available when Geometry Representation is set to Box, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.

Radius

The radius of the sphere shape. This parameter is available when Geometry Representation is set to Sphere, Capsule, or Cylinder, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.

Length

The length of the capsule or cylinder in the Y direction. This parameter is available when Geometry Representation is set to Capsule or Cylinder, and AutoFit Primitive Boxes, Capsules, Cylinders, Spheres, or Planes to Geometry is turned off.

Collision Padding

A padding distance between shapes, which is used by the Bullet engine to improve the reliability and performance of the collision detection. You may need to scale this value depending on the scale of your scene. This padding increases the size of the collision shape, so it is recommended to turn on Shrink Collision Geometry to prevent the collision shape from growing.

This parameter is not available when Geometry Representation is set to Plane.

Shrink Collision Geometry

When turned on, shrinks the collision geometry to prevent the Collision Padding from increasing the effective size of the object.

This can improve the simulation’s performance by preventing initially closely-packed collision shapes from interpenetrating, and also removes the gap between objects caused by the Collision Padding.

When Geometry Representation is set to Box, Capsule, Cylinder, Compound, or Sphere, the radius and/or length of each primitive is reduced by Shrink Amount.

When Geometry Representation is set to Convex Hull, each polygon in the representation geometry is shifted inward by Shrink Amount.

This parameter is not available when Geometry Representation is set to Concave or Plane.

Shrink Amount

The amount of resizing done by Shrink Collision Geometry. By default, this value is equal to the Collision Padding so that the resulting size of the collision shape (including the Collision Padding) is the same size as the object’s geometry.

This parameter is not available when Geometry Representation is set to Concave or Plane.

Add Impact Data

When turned on, any impacts that occur during the simulation is recorded in the Impacts or Feedback data. Turning on this option may cause the simulation time and memory usage to increase.

The Impacts and Feedback data are added as subdata on the DOP object. You can see them in the details view when there is at least one impact during the timestep.

The Feedback data is essentially the same as the Impacts data, but is used when there is mutual interaction in the DOP network between multiple objects that are being solved by different solvers. For example, for an RBD object and FLIP fluid object to mutually interact, the DOP network runs multiple feedback loops to resolve the interactions, and the Feedback data is used to pass impact data between the solvers.

Enable Sleeping

When turned on, disables simulation of a non-moving object until the object moves again. The linear and angular speed thresholds are used to determine whether the object is non-moving. If Display Geometry is turned off, you will see the color of the guide geometry change from the Color to the Deactivated Color.

Linear Threshold

The sleeping threshold for the object’s linear velocity. If the object’s linear speed is below this threshold for a period of time, the object may be treated as non-moving.

Angular Threshold

The sleeping threshold for the object’s angular velocity. If the object’s angular speed is below this threshold for a period of time, the object may be treated as non-moving.

Physical

Density

The density of the object. The mass of an object is its volume times its density.

Rotational Stiffness

When an object receives a glancing blow, it often acquires a spin. The amount of spin depends on the shape and mass distribution of the object, known as the inertial tensor. Rotational Stiffness is a scale factor applied to this spin. A higher stiffness makes the object less liable to spinning, and a lower value makes it more ready to spin.

Bounce

The elasticity of the object. If two objects with a Bounce of 1.0 collide, they will rebound without losing energy. If two objects with a Bounce 0.0 collide, they will come to a standstill.

Friction

The coefficient of friction of the object. If Friction has a value of 0, the object is frictionless.

Outputs

Output

The simulation object created by this node is sent through this single output.

Locals

ST

The simulation time for which the node is being evaluated.

Depending on the settings of the DOP Network Offset Time and Scale Time parameters, this value may not be equal to the current Houdini time represented by the variable T.

ST is guaranteed to have a value of zero at the start of a simulation, so when testing for the first timestep of a simulation, it is best to use a test like $ST == 0, rather than $T == 0 or $FF == 1.

SF

The simulation frame (or more accurately, the simulation time step number) for which the node is being evaluated.

Depending on the settings of the DOP Network parameters, this value may not be equal to the current Houdini frame number represented by the variable F. Instead, it is equal to the simulation time (ST) divided by the simulation timestep size (TIMESTEP).

TIMESTEP

The size of a simulation timestep. This value is useful for scaling values that are expressed in units per second, but are applied on each timestep.

SFPS

The inverse of the TIMESTEP value. It is the number of timesteps per second of simulation time.

SNOBJ

The number of objects in the simulation. For nodes that create objects such as the Empty Object DOP, SNOBJ increases for each object that is evaluated.

A good way to guarantee unique object names is to use an expression like object_$SNOBJ.

NOBJ

The number of objects that are evaluated by the current node during this timestep. This value is often different from SNOBJ, as many nodes do not process all the objects in a simulation.

NOBJ may return 0 if the node does not process each object sequentially (such as the Group DOP).

OBJ

The index of the specific object being processed by the node. This value always runs from zero to NOBJ-1 in a given timestep. It does not identify the current object within the simulation like OBJID or OBJNAME; it only identifies the object’s position in the current order of processing.

This value is useful for generating a random number for each object, or simply splitting the objects into two or more groups to be processed in different ways. This value is -1 if the node does not process objects sequentially (such as the Group DOP).

OBJID

The unique identifier for the object being processed. Every object is assigned an integer value that is unique among all objects in the simulation for all time. Even if an object is deleted, its identifier is never reused. This is very useful in situations where each object needs to be treated differently, for example, to produce a unique random number for each object.

This value is also the best way to look up information on an object using the dopfield expression function.

OBJID is -1 if the node does not process objects sequentially (such as the Group DOP).

ALLOBJIDS

This string contains a space-separated list of the unique object identifiers for every object being processed by the current node.

ALLOBJNAMES

This string contains a space-separated list of the names of every object being processed by the current node.

OBJCT

The simulation time (see variable ST) at which the current object was created.

To check if an object was created on the current timestep, the expression $ST == $OBJCT should always be used.

This value is zero if the node does not process objects sequentially (such as the Group DOP).

OBJCF

The simulation frame (see variable SF) at which the current object was created. It is equivalent to using the dopsttoframe expression on the OBJCT variable.

This value is zero if the node does not process objects sequentially (such as the Group DOP).

OBJNAME

A string value containing the name of the object being processed.

Object names are not guaranteed to be unique within a simulation. However, if you name your objects carefully so that they are unique, the object name can be a much easier way to identify an object than the unique object identifier, OBJID.

The object name can also be used to treat a number of similar objects (with the same name) as a virtual group. If there are 20 objects named “myobject”, specifying strcmp($OBJNAME, "myobject") == 0 in the activation field of a DOP will cause that DOP to operate on only those 20 objects.

This value is the empty string if the node does not process objects sequentially (such as the Group DOP).

DOPNET

A string value containing the full path of the current DOP network. This value is most useful in DOP subnet digital assets where you want to know the path to the DOP network that contains the node.

Note

Most dynamics nodes have local variables with the same names as the node’s parameters. For example, in a Position DOP, you could write the expression:

$tx + 0.1

…to make the object move 0.1 units along the X axis at each timestep.

See also

Dynamics nodes