Goal: Render distance lines between two points on the surface of a mesh-based primitive (i.e. sphere, cube, etc).
Current Solution: Iteratively traverse distance line between two end points and "reverse" raycast through this point somehow. Since the distance line directly connects both vertices through the mesh, the according points on the mesh surface are required.
Ray ray = new Ray();
RaycastHit raycastHit;
ray.origin = posOnDistanceLine;
ray.direction = raycastNormal.normalized;
// Reverse ray since we can't raycast from inside the mesh
ray.origin = ray.GetPoint(1);
ray.direction = -ray.direction;
Lines are then drawn using Unity's LineRenderer
which is being populated with positions of vertices whenever a change in normals (to previous raycast) is identified.
Issues:
Horrible performance (as 100 rays are cast whenever the end points move).
Solution doesn't always work and produces unexpected, jagged lines / points.
Question: Is there a better approach to implement this?