Just looked at my old code. It basically finds the point on the triangle closest to the sphere, computes the distance between them, and if an intersection has occurred ()ie. the distance is smaller than the sphere's radius) computes the normal like this: new_contact->normal = closest - sphere_pos; BTW, yes, my tris were very large. -- gl