On this page |
Overview
Agents are character skeletons with skin geometry and animation, each related to a particle-like point in a DOP simulation. Agents have a current state. A state corresponds to a clip that animates the agent while it’s in that state. A state also contains behavior nodes that modify the agent, such as DOP particle forces that move the agent’s point. At each simulation step, Houdini evaluates triggers for each agent. If a trigger matches for an agent, it activates a transition node that gives the agent a new current state.
For example, to have a crowd mill about, you could have some agents in a walk
state and some in an idle
state. The walk state would have behavior nodes inside to move the point of an agent in that state. A trigger could check if each agent has been in its current state for longer than a certain period. The trigger could lead to two transition nodes (walk → idle and idle → walk) to flip the state of each matching agent.
Crowds are created from points in a geometry network, where you can use the full power of Houdini' geometry nodes and create agent positions from existing models such as terrain. The actual crowd simulation runs in a simulation network, where the agents can interact with other dynamic elements.
See how to set up a crowd simulation for information on how to use the shelf tools and the network editor to create a basic crowd simulation.
Concepts
The "source" for a crowd simulation is points in a geometry network, representing the starting location of the agents in the simulation.
However, if you don’t give it source points, the Crowd Source surface node will randomly scatter a certain number of points over a given area automatically.
Agents are the "actors" of the crowd simulation, for example individual people in a crowd scene. An agent gets its look from a Houdini object subnet or asset containing the agent’s skeleton and geometry. Before you can use a piece of character animation you must bake the animation to disk.
Each agent is created from a source point, defining the agent’s initial location. The Crowd Source node converts points to special agent primitives, with primitive attributes containing information used by the crowd solver. The agent’s baked geometry is loaded as a packed primitive, so displaying and rendering large number of agents is still fast.
See setup for how to create an initial crowd simulation.
At any given time, every agent is in a certain state, for example "walk", "idle", "attack", or "run_to_goal". The state encapsulates behavior nodes. These nodes affect the agent primitive, such as moving it around or changing its attributes. How the forces inside the state are actually applied to agents in that state depends on weights.
Houdini animates agents in a given state using an animation clip with the same name as the state.
After each state, you can add particle DOP nodes to move agents in the state.
Houdini includes many "steering force" nodes that implement useful crowd behaviors such as "move toward a point" and "follow a path". These are very similar to DOP particle nodes, and in fact you can use particle forces to affect agents as well, although plain particle forces do not have the concept of weights.
Clips are bits of animation that an agent replays when in a certain state. Houdini will look for an animation clip with the same name as the state and apply it to any agents in that state.
Even while agents are running pre-made animation, the simulation can add procedural changes on top, for terrain adaptation, "look at", and so on. You can also transition from animation to ragdoll simulation.
Houdini requires that you "bake out" the animation to files on disk for performance. Each time you add or change a clip, you should go to this node and re-save the animations to disk.
At each step in the simulation, Houdini looks at each agent and checks a series of trigger nodes (for example "distance to target > 2"). A logic node is available to combine triggers. If a trigger applies, Houdini checks for a transition attached to the trigger to change the agent to a new state (for example, "walk" → "run"). Transitions can have a duration during which Houdini will automatically blend the animation clips of the old and new states.
You can specify static DOP objects for agents to avoid using a behavior. You can put this behavior before the behavior merge node
Houdini currently supports a single terrain object (a static RBD object). Agents will follow the terrain, with optional IK foot adaptation.