PathEngine uses a mesh data structure to define
areas of unobstructed ground on which agents can move.
The connectivity of the mesh disambiguates between overlapping geometry, and enables arbitrary 3d features (such as bridges, tunnels and multi-level buildings) to be represented and handled seamlessly.
A mesh for the ground surface of a room and part of a connecting corridor, as seen from above.
Meshes are created in three dimensional space - the position for each vertex of the mesh is specified in 3D coordinates.
Agents move on the surface of the mesh. When an agent moves through 'overlapping' 3d features (bridges, tunnels and so on) the movement of the agent over this surface determines the agent's final position.
There is no limit to the number of times a mesh can 'overlap' itself in this way.
A mesh may include arbitrary variations in height but PathEngine essentially deals with a 2d projection of that geometry onto the horizontal plane. Overlapping layers are disambiguated by the connectivity of the mesh. But this means that a mesh may not contain faces that are vertical or face downwards.
An illegal mesh.
A mesh may include three dimensional ground detail such as raised sections, steps, curved floors, and so on.
This kind of detail does not influence the paths chosen, and therefore does not affect run time performance for pathfinding or collision, but PathEngine also provides 'ground management' functionality for translating between positions in 3d and positions on a ground mesh that take this detail into account.
This can be used, for example, to resolve 3d positions for mouse-clicks to positions on the ground, and to agent height at a given ground position, for rendering.
In many cases, this 'ground management' functionality can make it unnecessary for ground surfaces to be represented explicitly by the client application.
PathEngine provides 2 distinct content processes for automating the generation of ground meshes.
Refer to this section of the documentation for a detailed explanation about the content processing functionality provided.
|Documentation for PathEngine release 6.04 - Copyright © 2002-2024 PathEngine