Hi there, I wanna create a Mesh at runtime from x,y,z coordinates which I read from a file. I read all the float point into an Vector Array and then I maked a VERTICE Array like "vertices = new Vector3(x, y, z);" The next work is to make the triangles like this: var tri: int[] = new int[18]; tri[0] = 0; tri[1] = 2; tri[2] = 1; tri[3] = 2; tri[4] = 3; tri[5] = 1; tri[6] = 1; tri[7] = 3; tri[8] = 4; tri[9] = 3; tri[10] = 5; tri[11] = 4; And that is the position I'm a little bit confused how to make this Array in a FOR i ..... I attached a file where I draw what I mean. This concept function but to get this in a FOR ...NEXT I should have continued numbers, but only the beginning is for me confused. Have someone some infos or a tut which better explain how to make a mesh from coordinates x,y,z
I usually do it this way Code (csharp): int numberOfQuads = ...; var indices = new List<int>(); for (int i = 0; i < numberOfQuads; i++) { indices.Add(i * 2 + 0); indices.Add(i * 2 + 1); indices.Add(i * 2 + 2); indices.Add(i * 2 + 2); indices.Add(i * 2 + 1); indices.Add(i * 2 + 3); } or Code (csharp): int numberOfQuads = ...; var indices = new int[numberOfQuads * 6]; for (int i = 0; i < numberOfQuads; i++) { indices[i * 6 + 0] = i * 2 + 0; indices[i * 6 + 1] = i * 2 + 1; indices[i * 6 + 2] = i * 2 + 2; indices[i * 6 + 3] = i * 2 + 2; indices[i * 6 + 4] = i * 2 + 1; indices[i * 6 + 5] = i * 2 + 3; }
Thanks, better structered code, but one problem I have, cause the first 6 triangles must I declare manuel out of the FOR.... cause If I take yours my meshes lays down in the x-z axis. So if I take this manually like above, my mesh lay in the x-y or z-y axis....see screenshot. So I wondering how to find out how I start with the Triangles. I have all the Points from your picture i xyz-coordinates, 1 = (0,1,0) 3 = (3,2,2) 5 = (5,1,3) and so on...but I don't know the 2,4,6,8..... I wanna make the mesh in x-y / z-y The vertices I set so: // Set first 4 Vectors manually, I don't know why.... vertices[0] = new Vector3(GPS_daten[0].x * 1,0,GPS_daten[0].z * 1); vertices[1] = new Vector3(GPS_daten[1].x * 1,0,GPS_daten[1].z * 1); vertices[2] = GPS_daten[0]; vertices[3] = GPS_daten[1]; for (var j : int = 4; j < MaxVertices+1; j++) { vertices[j] = new Vector3(GPS_daten[j/2].x * 1,0,GPS_daten[j/2].z * 1); j++; vertices[j] = GPS_daten[(j-1)/2]; } mesh.vertices = vertices; That gives my screenshot I attached. Do you have some more informations on create meshes at runtime, a tutorial or something else an example? I think the first definition of the vertices and then the triangle gives the orientation of the mesh, I think..
You can easily skip first 3 quads if you want: Code (csharp): int numberOfQuads = ...; var indices = new List<int>(); // add first 3 quads manually for (int i = 3; i < numberOfQuads; i++) { indices.Add(i * 2 + 0); indices.Add(i * 2 + 1); indices.Add(i * 2 + 2); indices.Add(i * 2 + 2); indices.Add(i * 2 + 1); indices.Add(i * 2 + 3); } Code (csharp): int numberOfQuads = ...; var indices = new int[numberOfQuads * 6]; // add first 3 quads manually for (int i = 3; i < numberOfQuads; i++) { indices[i * 6 + 0] = i * 2 + 0; indices[i * 6 + 1] = i * 2 + 1; indices[i * 6 + 2] = i * 2 + 2; indices[i * 6 + 3] = i * 2 + 2; indices[i * 6 + 4] = i * 2 + 1; indices[i * 6 + 5] = i * 2 + 3; }
Hi alexzzzz, Many thanks, i also find your way to create the mesh logical and I think its the better way. but in my scene it isn't functioned, so that I might set the first two triangles to tri[0] = 0; tri[1] = 2; tri[2] = 1; tri[3] = 2; tri[4] = 3; tri[5] = 1; tri[6] = 1; tri[7] = 3; tri[8] = 4; tri[9] = 3; tri[10] = 5; tri[11] = 4; not 0,1,2 and so on.....cause when I take 0,1,2.....then all my meshes lays down in the x-z axis. So now it function with my method above but Ican't figure out why. I think I should look at this detail in a few days. My brain is full of code and other thinks so maybe i can't see the other better solution.
Are the vertices #1 and #2 on the picture attached to the first post are swapped on purpose or by accident?
Hi alex, no not really an accident. Its on purpose I changed the triangles cause if i don't do that I get meshes that layed dawn in the x-z axis. if I don't do this like i decriped I get this: see screenshot. And that is I wonder why. To understand create meshes at runtime I can't find any tut which explain me how to make correct way. I make an empty gameobject in the scene and attached my Java script Principle if I was UNITY I should ask one question: In which direction should I begin to draw the meshes of my user at the emptyGameObject.