All great suggestions but when it comes down to a 3D game (at least of the nature that OP3's engine will work) the rules get thrown out and data is looked at completely differently.
First off, OP3 is not tile based (and yes, 3D games CAN be tile-based games, e.g., Warcraft 3, Age of Mythology, etc.) which makes pathfinding different.
Paths are looked at not through a grid but rather by traversing through the DotScene matrix through the use of directional vectors as well as point-to-point angle differences.
Basically, each point in the DotScene Matrix is a point in 3D space containint an X, Y and Z component describing its location.
As the scenes in OP3 are not heightfields but rather large, complex 3D Meshes (hence the intricate detail), the first pass in the pathfinding code will traverse through the world coordinates in the DotScene Matrix. It judges its next move (which point to move on to) by looking at a few things: the height of a potential next point in comparison to the current point. If the height is too different, it chooses another point and then continues from there (hence the modified A* style of pathfinding).
After the first pass has successfully found a viable path, the second pass comes into effect. The second pass creates a series of waypoints starting with the vehicles current position, where it needs to go and determines a viable path based on the first pass.
After the waypoints have been set in a vehicles path, a spline-interpolated path is calculated between all the points. This gives the vehicle a completely smooth and realistic motion. Its directional vector will be adjusted depending on the terrain's slope.
The pathfinders will be doing most of the work. The spline-interpolated paths are going to be the hardest and most expensive calculations to do so if there's a large group of units that have been assigned to the same end-point, the calculations will only be done once (through the 'lead' unit) and then similar paths will be given to the other units.
A note about 'lead' units, they are not explicitly assigned nor is a 'lead' unit any different than any other unit. What determines a 'lead' unit is generally the unit that is closest to the end-point but that's not a strict case. Basically it's just a temporary assignment to a particular unit in a group and is used to reduce the CPU's load for pathfinding calculations.