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.
