Converting sprite to mesh. "lighting information" not converted upon convertion

I am trying to convert a sprite to a mesh because I want my mesh to have the shape and texture of the sprite.

When I do this (see code below) the new mesh has the mesh, orientation and texture of the original sprite but that what holds the information of the lighting effects (such as light bounce and shadows) are still that of the original mesh. I have a directional light shining like a sun over the scene but only when I rotate the object perpendicular to the directional light, I see light bounce. So for the object, it’s like the light is coming from the side instead of above the object (see images). So something is not carried over to the new mesh.

I am bit of a noob. So if anything is unclear or if I am asking in the wrong place. Please let me know!!

Image 1: Track after conversion perpendicular original rotation hosted at ImgBB — ImgBB
Image 2: Track after conversion horizontal rotation hosted at ImgBB — ImgBB

Mesh SpriteToMesh(Sprite sprite)
    {
        Mesh mesh = new Mesh();
        mesh.vertices = Array.ConvertAll(sprite.vertices, i => (Vector3)i);
        mesh.uv = sprite.uv;
        mesh.triangles = Array.ConvertAll(sprite.triangles, i => (int)i);

        return mesh;
    }

Hello again!

I decided to read up on meshes and I found a solution. I had to recalculate the bounds and normals.

Mesh SpriteToMesh(Sprite sprite)
    {
        Mesh mesh = new Mesh();
        mesh.vertices = Array.ConvertAll(sprite.vertices, i => (Vector3)i);
        mesh.uv = sprite.uv;
        mesh.triangles = Array.ConvertAll(sprite.triangles, i => (int)i);
        mesh.RecalculateBounds();
        mesh.RecalculateNormals();

        return mesh;
    }