Having trouble creating mesh indicies.

I’m trying to create a mesh based off of an array of points. For each point 4 verticies generated. Then the indicies of triangle are created. And that’s where I begin to have problems, I’m having trouble correctly creating the indicies of each triangle.

my first attempt only worked for the first point and didn’t work for any point after that

first attempt:

        for(int i=0; i<points.Count-1; i+=3){
            //left face
            triangles.Add(i+4);
            triangles.Add(i+1);
            triangles.Add(i);
           
            triangles.Add(i+1);
            triangles.Add(i+4);
            triangles.Add(i+5);
           
            //top face
            triangles.Add(i+5);
            triangles.Add(i+2);
            triangles.Add(i+1);
           
            triangles.Add(i+2);
            triangles.Add(i+5);
            triangles.Add(i+6);
           
            //right face
            triangles.Add(i+2);
            triangles.Add(i+6);
            triangles.Add(i+7);
           
            triangles.Add(i+7);
            triangles.Add(i+3);
            triangles.Add(i+2);
           
            //bottom face
            triangles.Add(i+0);
            triangles.Add(i+3);
            triangles.Add(i+4);
           
            triangles.Add(i+4);
            triangles.Add(i+3);
            triangles.Add(i+7);
           
        }

My current attempt won’t show any triangles;

current:

List<Vector3> vertices = new List<Vector3>();
        List<int> triangles = new List<int>();
        for (int i = 0; i < points.Count - 1; i++)
        {
            Vector3 forward = -(points[i] - points[i + 1]).normalized;
            Quaternion rotation = Quaternion.LookRotation(forward);
           
            //bottom left
            vertices.Add(transform.InverseTransformPoint(points[i] + rotation * (-transform.up - transform.right)));
            //top left
            vertices.Add(transform.InverseTransformPoint(points[i] + rotation * (transform.up - transform.right)));
            //top right
            vertices.Add(transform.InverseTransformPoint(points[i] + rotation * (transform.up + transform.right)));
            //bottom right

            vertices.Add(transform.InverseTransformPoint(points[i] + rotation * (-transform.up + transform.right)));
        }
       
        for(int i=0; i<points.Count-1; i++){
            //left face
            triangles.Add((i*3)+4);
            triangles.Add((i*3)+1);
            triangles.Add((i*3));
           
            triangles.Add((i*3)+1);
            triangles.Add((i*3)+4);
            triangles.Add((i*3)+5);
           
            //top face
            triangles.Add((i*3)+5);
            triangles.Add((i*3)+2);
            triangles.Add((i*3)+1);
           
            triangles.Add((i*3)+2);
            triangles.Add((i*3)+5);
            triangles.Add((i*3)+6);
           
            //right face
            triangles.Add((i*3)+2);
            triangles.Add((i*3)+6);
            triangles.Add((i*3)+7);
           
            triangles.Add((i*3)+7);
            triangles.Add((i*3)+3);
            triangles.Add((i*3)+2);
           
            //bottom face
            triangles.Add((i*3)+0);
            triangles.Add((i*3)+3);
            triangles.Add((i*3)+4);
           
            triangles.Add((i*3)+4);
            triangles.Add((i*3)+3);
            triangles.Add((i*3)+7);
           
        }
        mesh.Clear();
        mesh.vertices = vertices.ToArray();
        mesh.triangles = triangles.ToArray();
        mesh.RecalculateNormals();

Any help is appreciated.

The question, as posed, could be read about how to determine the indices while making triangles from a set of randomly-positioned vertices which are stored in an array. That is a much more challenging question to answer.

If you’re just looking to create some triangles from a grid of vertices, then I point you to Procedural Grid, a Unity C# Tutorial where Jasper details how to create triangles for a grid of vertices.

I am not attempting to make a grid of triangles form verities nor make triangles from randomly positioned vertices. I am attempting to make triangles from vertices that are generated from an array of points into squares at each point 4 vertices are created and are positioned to face the next point in the array. What I would like to know is how would I create triangles for all of these verticies so that they create a conjoined box.

Sorry I should have been clearer in my first post about what I wanted help with.
here is a picture of the first attempt.
3173085--241764--upload_2017-8-5_11-38-47.jpg
each colored ball is vertex.