PathfindingService ignores parts with (scaled/non-brick) meshes

The PathfindingService (both ComputeRawPathAsync and ComputeSmoothPathAsync) ignores parts that have meshes. This appears to occur both in Studio and in game servers.

This includes:

  • CylinderMesh
  • BlockMesh if Scale is not (1, 1, 1) – bigger or smaller
  • SpecialMesh (Head)

I can’t think of a reason this would be desirable – it’s not the case that the pathfinding service evaluates things at all visually:

  • does acknowledge invisible parts
  • ignores opaque but CanCollide false parts

Currently it has the undesirable behavior of

  • ignores parts that appear smaller (with a BlockMesh)
  • ignores parts that appear bigger (with a BlockMesh)

This is unfortunately sort of by design :frowning:

Pathfinding - same as the lighting system - is using the spatial acceleration structure the physics engine uses to gather parts for voxelization. If the part physical extents mismatches the visual extents we can’t find it by visual extents, so we choose to just ignore this. We could still voxelize it if the scale reduced the visual representation, but we can’t do it if the scale is more than 1.

Why do you need to use the aforementioned meshes? You could always use blocks instead of block meshes and cylinders instead of cylinder meshes?