public static void GenerateRightMesh(MeshFilter _oldMeshF, MeshRenderer _oldMeshR, SliceData _dataPlane) { GameObject newMesh; CustomMesh mesh = new CustomMesh(out newMesh, "right Mesh", _oldMeshF.transform, _oldMeshR.material); int vertexID = 0; for (int faceID = 1; faceID < _dataPlane.Faces.Count; faceID += 2) { if (!_dataPlane.Faces.ContainsKey(faceID)) { continue; } foreach (Edge e in _dataPlane.Faces[faceID].Edges) { foreach (Vector3 p in _dataPlane.Faces[faceID].GetDistinctsPoints()) { Vector3 vertexPos = _oldMeshF.transform.InverseTransformPoint(p); mesh.vertices.Add(vertexPos); mesh.triangles.Add(vertexID); vertexID++; } } } /*Debug.Log("nb vertices " + mesh.vertices.Count); * Debug.Log("nb triangles " + mesh.triangles.Count);*/ mesh.Recalculate(); mesh.AssignToMesh(newMesh.GetComponent <MeshFilter>()); mesh.AssignToSharedMesh(newMesh.GetComponent <MeshCollider>()); }