PathEngine home previous: Obstaclesnext: Representing Positions on the Ground
Contents, Overview, Fundamental Concepts, The PathEngine Movement Model

The PathEngine Movement Model

Together with a set of placed agents and obstructions PathEngine ground meshes form the basis of a well defined movement model (also referred to as 'collision model').
Collision and pathfinding queries are then both provided against this single model.

Agent shape

Agents are assigned a shape for collision against their environment.
As the agent moves around, this shape translates relative to the agent's local origin.

Shapes must be convex polygons, and must contain the agent's local origin.
Shape Validation discusses the constraints on agent shapes in more detail.

The agent is obstructed for any position in the mesh where the agent's shape overlaps an external edge or an obstacle.

Collision is not 'inclusive' - an agent is not obstructed in the case where their collision shape exactly touches the edge of the mesh or an obstruction.

The agent is unobstructed at this position.

At this position the agent is obstructed by the edge of the mesh.

When the agent's shape exactly touches an external edge the agent is unobstructed.

Line collision

An agent can move along a line if the area swept out by their shape as they move along that line is contained within the mesh or exactly touches the edge.

Movement along this line is unobstructed.

Movement along this line is obstructed by the edge of the mesh.

Collision with obstacles

The agent is not obstructed at this position.

At this position, the agent is obstructed by the obstacle in yellow.

How it works - points against expanded shapes

The collision checks are actually implemented internally by expanding the shapes of obstructions outwards by the shape of the agent being tested for collision.
This enables collision queries to be made very fast.

Testing line collision against an expanded boundary.

Overlapping obstacles

Obstacles may be placed arbitrarily overlapping the edge of the mesh, as long as the obstacle's origin is within the mesh.

In this case the influence of the obstacle for collision is limited to parts of the mesh that are reachable within the expanded shape of the obstacle.
You can think of this in terms of a flood fill operation starting at the obstacle's origin and propagating through the mesh with the expanded obstacle shape as a bound.

The agent is not obstructed by this obstacle because the influence of the obstacle does not reach the corridor

You can think of the obstacle as a piece of overlapping geometry that goes under or over the part of the mesh that represents the corridor.

At this position the obstacle does obstruct the agent because the influence of the obstacle reaches the corridor through the doorway.

Documentation for PathEngine release 6.03 - Copyright © 2002-2021 PathEnginenext: Representing Positions on the Ground