my invertion of mesh.triangles is not working correctly, any idea why?
Hi all,
i tried to build a mesh without back culling, to have a closed area of triangles without holes.
So in the first step i created a mesh, saved it, fliped the mesh and saved the new mesh again. The code for this process is at the end of this post.
Both Mesh.triangles are looking good, so the rotation of the triangles was successfull:
First three entries of mesh.triangle
0|1|2- 0|1|25766 - 0|24116|25766
First three entries of mesh.triangle reversed
2|1|0 - 25766|1|0 - 25766|24116|0
Now my problem is: When i display both meshes, they looked identical.
I excpected to have a overlay of both meshes, so that i can look from the "bottom" or the "top" without any holes.
Even when i just display one of the meshes, they look identical.
i would be very happy if somenone can show me my error, or give me hint to solve this problem.
GameObject triangleMesh = new GameObject("Triangle");
triangleMesh .AddComponent<MeshFilter>();
triangleMesh .AddComponent<MeshRenderer>();
triangleMesh .GetComponent<Renderer>().material = matVertex;
***// Within the Method createMesh() a txt file will be read for the triangle construction***
triangleMesh .GetComponent<MeshFilter>().mesh = createMesh();
***// Save the Mesh as Asset***
UnityEditor.AssetDatabase.CreateAsset(triangleMesh .GetComponent<MeshFilter>().mesh, "Assets/Resources/TriangleMeshes/" + group + ".asset");
UnityEditor.AssetDatabase.SaveAssets();
UnityEditor.AssetDatabase.Refresh();
Now for the reversion
***// Like the original Mesh***
GameObject triangleMeshReverse= new GameObject("TriangleRev");
triangleMeshReverse.AddComponent<MeshFilter>();
triangleMeshReverse.AddComponent<MeshRenderer>();
triangleMeshReverse.GetComponent<Renderer>().material = matVertex;
***// Instead of reading a txt i tried to copy and flip the original mesh***
Mesh reverseMesh = triangleMesh .GetComponent<MeshFilter>().mesh;
***// Switching the rotation of the triangles***
var triangles = reverseMesh.triangles;
for (var i = 0; i < triangles3.Length; i = i + 3)
{
var tmp = triangles[i];
triangles[i] = triangles[i + 2];
triangles[i + 2] = tmp;
}
reverseMesh.triangles = triangles;
***// Save the Mesh as Asset***
UnityEditor.AssetDatabase.CreateAsset(triangleMeshReverse .GetComponent<MeshFilter>().mesh, "Assets/Resources/TriangleMeshes/" + group + "_rev" + ".asset");
UnityEditor.AssetDatabase.SaveAssets();
UnityEditor.AssetDatabase.Refresh();