//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ protected void Build(GameObject pParent) { vParent = pParent; Background = new GameObject("Background"); Background.transform.SetParent(pParent.transform, false); Background.AddComponent <MeshRenderer>(); BackgroundMesh = Background.AddComponent <MeshFilter>().mesh; BackgroundMesh.MarkDynamic(); Edge = new GameObject("Edge"); Edge.transform.SetParent(pParent.transform, false); Edge.AddComponent <MeshRenderer>(); EdgeMesh = Edge.AddComponent <MeshFilter>().mesh; EdgeMesh.MarkDynamic(); Highlight = new GameObject("Highlight"); Highlight.transform.SetParent(pParent.transform, false); Highlight.AddComponent <MeshRenderer>(); HighlightMesh = Highlight.AddComponent <MeshFilter>().mesh; HighlightMesh.MarkDynamic(); Select = new GameObject("Select"); Select.transform.SetParent(pParent.transform, false); Select.AddComponent <MeshRenderer>(); SelectMesh = Select.AddComponent <MeshFilter>().mesh; SelectMesh.MarkDynamic(); BackgroundColor = Color.clear; EdgeColor = Color.clear; SelectColor = Color.clear; HighlightColor = Color.clear; UpdateAfterResize(); }
/// <summary> /// Отрисовываем рёбра /// </summary> private void ViewEdges() { for (int i = 0; i < Graph.Instance.Points.Count; i++) { point0 = Graph.Instance.Points[i].Point; for (int j = 0; j < Graph.Instance.Points[i].Edges.Count; j++) { newEdgeMesh = new EdgeMesh(); point1 = Graph.Instance.Points[i].Edges[j].PointEdge; int _weight = Graph.Instance.Points[i].Edges[j].Weight; distanceBetweenPoints = (point0.transform.position - point1.transform.position).magnitude; PointOnSegment(point0.transform.position, point1.transform.position, 0.5f); GameObject newEdge = Instantiate(prefabEdge, editorVector, Quaternion.identity, parentEdges); newEdge.transform.LookAt(point1.transform); newEdge.name = "Edge_" + point0.name + "_" + point1.name; editorVector = newEdge.transform.localScale; editorVector.z = distanceBetweenPoints; newEdge.transform.localScale = editorVector; newEdgeMesh.Mesh.Add(newEdge.GetComponent <MeshRenderer>()); newEdgeMesh.NameEdge = point0.name + "-" + point1.name; ViewArrow(); ViewWeights(_weight); edgeMeshs.Add(newEdgeMesh); } } }
public static void CreateHighResolutionGeometry(GameObject asset) { var paths = AssetTools.FindAssetPaths(asset); var original = AssetDatabase.LoadAssetAtPath(paths.file + ".obj", typeof(Mesh)) as Mesh; var deformable = AssetDatabase.LoadAssetAtPath(paths.file + "DeformableMesh.asset", typeof(Mesh)) as Mesh; if (deformable == null) { deformable = new Mesh(); AssetDatabase.CreateAsset(deformable, paths.file + "DeformableMesh.asset"); } EdgeMesh edgemesh = new EdgeMesh(); edgemesh.Build(original); edgemesh.RefineMesh(0.25f); edgemesh.BakeMesh(deformable); AssetDatabase.SaveAssets(); asset.GetComponentInChildren <MeshFilter>().sharedMesh = deformable; }
public void Reset() { Mesh = new EdgeMesh(); Mesh.Build(GetComponentInChildren <MeshFilter>().sharedMesh); }
void Awake() { curve = GetComponent <BezierSpline> (); mesh = GetComponent <EdgeMesh> (); }