Export() public method

public Export ( ) : Mesh
return Mesh
Exemplo n.º 1
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(0,0,200,50), "FaceSplit")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);

            foreach (var f in hMesh.GetFaces()){
                f.Split();
            }

            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(200,0,200,50), "EdgeFlip")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet<Halfedge> isFlipped = new HashSet<Halfedge>();
            foreach (var h in hMesh.GetHalfedges()){
                if (!h.IsBoundary() && !isFlipped.Contains(h)){
                    Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
                    h.Flip();
                    isFlipped.Add(h.opp);
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(400,0,200,50), "EdgeSplit")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet<Halfedge> isSplit = new HashSet<Halfedge>();
            foreach (var h in hMesh.GetHalfedges()){
                if (!h.IsBoundary() && !isSplit.Contains(h)){
                    Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
                    isSplit.Add(h.opp);
                    h.Split();
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(600,0,200,50), "CollapseEdge")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();
            foreach (var h in hMesh.GetHalfedges()){
                if (!h.IsBoundary()){
                    if (!h.vert.IsBoundary() && !h.prev.vert.IsBoundary() && !isCollapsed.Contains(h)){
                        Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
                        isCollapsed.Add(h.opp);
                        h.Collapse();
                        break;
                    }
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }

        if (GUI.Button(new Rect(0,50,200,50), "CirculateRndVertex")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var vertices = new List<Vertex>(hMesh.GetVertices());
            var vertex = vertices[1];//Random.Range(0,vertices.Count-1)];
            foreach (var h in vertex.Circulate()){
                Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
            }
            Debug.Log("Circulate vertex: "+vertex.Circulate().Count);
        }
        if (GUI.Button(new Rect(200,50,200,50), "CirculateOppRndVertex")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            //HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var vertices = new List<Vertex>(hMesh.GetVertices());
            var vertex = vertices[1];//Random.Range(0,vertices.Count-1)];
            foreach (var h in vertex.CirculateOpp()){
                Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
            }
            Debug.Log("Circulate vertex: "+vertex.Circulate().Count);
        }
        if (GUI.Button(new Rect(400,50,200,50), "Circulate1RingRndVertex")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            // HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var vertices = new List<Vertex>(hMesh.GetVertices());
            var vertex = vertices[Random.Range(0,vertices.Count-1)];
            foreach (var h in vertex.CirculateOneRing()){
                Debug.DrawLine(h.vert.position, h.prev.vert.position,Color.cyan,5);
            }
            Debug.Log("Circulate 1-ring: "+vertex.CirculateOneRing().Count);
        }
        if (GUI.Button(new Rect(600,50,200,50), "CirculateRndFace")){
            HMesh hMesh = new HMesh();
            var mf = GetComponent<MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var faces = new List<Face>(hMesh.GetFaces());
            var face = faces[Random.Range(0,faces.Count-1)];
            foreach (var h in face.Circulate()){
                Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
            }
            Debug.Log("Circulate face: "+face.Circulate().Count);
        }
    }
Exemplo n.º 2
0
    void OnGUI()
    {
        if (GUI.Button(new Rect(0, 0, 200, 50), "FaceSplit"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);

            foreach (var f in hMesh.GetFaces())
            {
                f.Split();
            }

            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(200, 0, 200, 50), "EdgeFlip"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet <Halfedge> isFlipped = new HashSet <Halfedge>();
            foreach (var h in hMesh.GetHalfedges())
            {
                if (!h.IsBoundary() && !isFlipped.Contains(h))
                {
                    Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
                    h.Flip();
                    isFlipped.Add(h.opp);
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(400, 0, 200, 50), "EdgeSplit"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet <Halfedge> isSplit = new HashSet <Halfedge>();
            foreach (var h in hMesh.GetHalfedges())
            {
                if (!h.IsBoundary() && !isSplit.Contains(h))
                {
                    Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
                    isSplit.Add(h.opp);
                    h.Split();
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }
        if (GUI.Button(new Rect(600, 0, 200, 50), "CollapseEdge"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet <Halfedge> isCollapsed = new HashSet <Halfedge>();
            foreach (var h in hMesh.GetHalfedges())
            {
                if (!h.IsBoundary())
                {
                    if (!h.vert.IsBoundary() && !h.prev.vert.IsBoundary() && !isCollapsed.Contains(h))
                    {
                        Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
                        isCollapsed.Add(h.opp);
                        h.Collapse();
                        break;
                    }
                }
            }
            var mesh = hMesh.Export();
            mesh.RecalculateNormals();
            mf.mesh = mesh;
        }

        if (GUI.Button(new Rect(0, 50, 200, 50), "CirculateRndVertex"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet <Halfedge> isCollapsed = new HashSet <Halfedge>();

            var vertices = new List <Vertex>(hMesh.GetVertices());
            var vertex   = vertices[1];          //Random.Range(0,vertices.Count-1)];
            foreach (var h in vertex.Circulate())
            {
                Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
            }
            Debug.Log("Circulate vertex: " + vertex.Circulate().Count);
        }
        if (GUI.Button(new Rect(200, 50, 200, 50), "CirculateOppRndVertex"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            //HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var vertices = new List <Vertex>(hMesh.GetVertices());
            var vertex   = vertices[1];          //Random.Range(0,vertices.Count-1)];
            foreach (var h in vertex.CirculateOpp())
            {
                Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
            }
            Debug.Log("Circulate vertex: " + vertex.Circulate().Count);
        }
        if (GUI.Button(new Rect(400, 50, 200, 50), "Circulate1RingRndVertex"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            // HashSet<Halfedge> isCollapsed = new HashSet<Halfedge>();

            var vertices = new List <Vertex>(hMesh.GetVertices());
            var vertex   = vertices[Random.Range(0, vertices.Count - 1)];
            foreach (var h in vertex.CirculateOneRing())
            {
                Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
            }
            Debug.Log("Circulate 1-ring: " + vertex.CirculateOneRing().Count);
        }
        if (GUI.Button(new Rect(600, 50, 200, 50), "CirculateRndFace"))
        {
            HMesh hMesh = new HMesh();
            var   mf    = GetComponent <MeshFilter>();
            hMesh.Build(mf.mesh);
            HashSet <Halfedge> isCollapsed = new HashSet <Halfedge>();

            var faces = new List <Face>(hMesh.GetFaces());
            var face  = faces[Random.Range(0, faces.Count - 1)];
            foreach (var h in face.Circulate())
            {
                Debug.DrawLine(h.vert.position, h.prev.vert.position, Color.cyan, 5);
            }
            Debug.Log("Circulate face: " + face.Circulate().Count);
        }
    }