private void OnDrawGizmos() { if (meshUtility == null) { return; } meshUtility.DrawMeshGizmos(transform.position); }
//public void Step2() //{ // MeshUtility temp = new MeshUtility(); // int i = 0; // //Parcours tout les triangles et les faces // foreach (Triangle triangle in util.Triangles) // { // List<Vertex> vertices = new List<Vertex>(); // foreach (Edge edge in triangle.Edges) // { // vertices.Add(edge.Vertices[0]); // Vertex v = Vertex.Average(new List<Vertex> { edge.Vertices[0], edge.Vertices[1] }); // vertices.Add(v); // vertices.Add(edge.Vertices[1]); // temp.FindOrCreateVertex(edge.Vertices[0]); // temp.FindOrCreateVertex(v); // temp.FindOrCreateVertex(edge.Vertices[1]); // temp.FindOrCreateEdge(edge.Vertices[0], v); // temp.FindOrCreateEdge(v, edge.Vertices[1]); // } // if (i < 6) // { // if (i % 2 == 0) // { // temp.CreateTriangle(vertices[0], vertices[1], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[2], vertices[4]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[4], vertices[5], vertices[7]); // } // else // { // temp.CreateTriangle(vertices[0], vertices[4], vertices[1]); // temp.CreateTriangle(vertices[4], vertices[5], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[7], vertices[2]); // } // } // else if (i >= 8) // { // if (i % 2 == 0) // { // temp.CreateTriangle(vertices[1], vertices[4], vertices[0]); // temp.CreateTriangle(vertices[1], vertices[2], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[4], vertices[3], vertices[7]); // } // else // { // temp.CreateTriangle(vertices[0], vertices[4], vertices[1]); // temp.CreateTriangle(vertices[4], vertices[3], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[7], vertices[2]); // } // } // else // { // if (i % 2 == 0) // { // temp.CreateTriangle(vertices[0], vertices[1], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[2], vertices[4]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[4], vertices[3], vertices[7]); // } // else // { // temp.CreateTriangle(vertices[0], vertices[4], vertices[1]); // temp.CreateTriangle(vertices[4], vertices[5], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[4], vertices[7]); // temp.CreateTriangle(vertices[1], vertices[7], vertices[2]); // } // } // vertices.Clear(); // i++; // if (i > exec) // break; // } // Debug.Log(temp.Vertices.Count); // Debug.Log(temp.Edges.Count); // Debug.Log(util.Edges.Count); // util = temp ; // DebugGraph.meshUtility = util; // filter.sharedMesh = util.ToMesh(); //} //public void Step1() //{ // //For each triangle, split it into three triangle at their middle // MeshUtility temp = new MeshUtility(GetComponent<MeshFilter>().sharedMesh); // temp.triangles.Clear(); // temp.edges.Clear(); // temp.vertices.Clear(); // for (int i = 0; i < 1; i++) // { // List<Vertex> vs = new List<Vertex>(); // vs.Add(util.triangles[i].GetVertices()[0]); // vs.Add(util.triangles[i].GetVertices()[1]); // vs.Add(util.triangles[i].GetVertices()[2]); // Vertex v1 = new Vertex(new Vector3(vs[0].position.x - vs[1].position.x, vs[0].position.y - vs[1].position.y)); // vs.Add(v1); // //vs.Add(util.triangles[i+1].GetVertices()[2]); // temp.vertices.Add(vs[0]); // temp.vertices.Add(vs[1]); // temp.vertices.Add(vs[2]); // temp.vertices.Add(vs[3]); // //temp.vertices.Add(Vertex.Average(vs)); // Edge e1 = new Edge(vs[0], vs[1]); // Edge e2 = new Edge(vs[1], vs[2]); // Edge e3 = new Edge(vs[0], vs[2]); // //Edge e4 = new Edge(vs[0], vs[3]); // //Edge e5 = new Edge(vs[2], vs[3]); // temp.edges.Add(e1); // temp.edges.Add(e2); // temp.edges.Add(e3); // //temp.edges.Add(e4); // //temp.edges.Add(e5); // Triangle t1 = new Triangle(e2, e1, e3); // //Triangle t2 = new Triangle(e4, e5, e3); // temp.triangles.Add(t1); // //temp.triangles.Add(t2); // temp.edges[i].color = Color.green; // } // //for (int i = 0; i < util.triangles.Count; i++) // //{ // // List<Vertex> vs = new List<Vertex>(); // // vs.Add(util.triangles[i].GetVertices()[0]); // // vs.Add(util.triangles[i].GetVertices()[1]); // // vs.Add(util.triangles[i].GetVertices()[2]); // // //vs.Add(util.triangles[i+1].GetVertices()[2]); // // temp.vertices.Add(vs[0]); // // temp.vertices.Add(vs[1]); // // temp.vertices.Add(vs[2]); // // //temp.vertices.Add(vs[3]); // // temp.vertices.Add(Vertex.Average(vs)); // // Edge e1 = new Edge(vs[0], vs[1]); // // Edge e2 = new Edge(vs[1], vs[2]); // // Edge e3 = new Edge(vs[0], vs[2]); // // //Edge e4 = new Edge(vs[0], vs[3]); // // //Edge e5 = new Edge(vs[2], vs[3]); // // temp.edges.Add(e1); // // temp.edges.Add(e2); // // temp.edges.Add(e3); // // //temp.edges.Add(e4); // // //temp.edges.Add(e5); // // Triangle t1 = new Triangle(e2, e1, e3); // // //Triangle t2 = new Triangle(e4, e5, e3); // // temp.triangles.Add(t1); // // //temp.triangles.Add(t2); // // temp.edges[i * 2 + 1].color = Color.green; // //} // //foreach(Triangle t in util.triangles) // //{ // // //Centers // // temp.vertices.Add(Vertex.Average(t.GetVertices().OfType<Vertex>().ToList())); // // if (temp.vertices.Count >= 3) // // break; // //} // //for (int i = 0; i < util.triangles.Count; i+=3) // //{ // // Edge e1 = new Edge(temp.vertices[i], temp.vertices[i + 1]); // // Edge e2 = new Edge(temp.vertices[i+1], temp.vertices[i + 2]); // // Edge e3 = new Edge(temp.vertices[i+2], temp.vertices[i]); // // temp.edges.Add(e1); // // temp.edges.Add(e2); // // temp.edges.Add(e3); // // Triangle triangle = new Triangle(e1, e2, e3); // // temp.triangles.Add(triangle); // // if (temp.triangles.Count >= 1) // // break; // //} // Debug.Log(temp.vertices.Count); // Debug.Log(temp.edges.Count); // util = temp; // GetComponent<MeshFilter>().sharedMesh = util.ToMesh(); // DebugGraph.meshUtility = util; //} private void OnDrawGizmos() { if (util == null) { return; } util.DrawMeshGizmos(transform.position); }
private void OnDrawGizmos() { if (meshUtility == null) { return; } meshUtility.DrawMeshGizmos(transform.position + new Vector3(1.1f, 0, 0)); if (newMeshUtility == null) { return; } newMeshUtility.DrawMeshGizmos(transform.position); foreach (Vector3 p in gizmoPointsToDraw) { Gizmos.color = Color.blue; Gizmos.DrawWireSphere(p + new Vector3(1.1f, 0, 0), 0.01f); } }