The OptiX intersection program for curves uses "optixGetObjectRayDirection" to get the ray direction in object space (which was inverse transformed with the current transformation matrix). OptiX does no additional operations on it, so if there is a scaling transform, the direction is not normalized. But the curve intersection routine expects that. In addition, the distances used in "optixGetRayTmax()" and "optixReportIntersection()" are in world space, so need to adjust them accordingly.