Exemplo n.º 1
0
 def plot(self):
     from compas.plotters import MeshPlotter
     plotter = MeshPlotter(self)
     plotter.draw_vertices()
     plotter.draw_edges()
     plotter.draw_faces()
     plotter.show()
Exemplo n.º 2
0
 def plot(self):
     from compas.plotters import MeshPlotter
     plotter = MeshPlotter(self, figsize=(12, 8), tight=True)
     vertexcolor = {}
     vertexcolor.update({
         key: '#00ff00'
         for key in self.vertices_where({'is_fixed': True})
     })
     vertexcolor.update({
         key: '#0000ff'
         for key in self.vertices_where({'is_external': True})
     })
     vertexcolor.update({
         key: '#ff0000'
         for key in self.vertices_where({'is_anchor': True})
     })
     plotter.draw_vertices(facecolor=vertexcolor)
     plotter.draw_edges(keys=list(self.edges_where({'is_edge': True})))
     plotter.draw_faces(keys=list(self.faces_where({'is_loaded': True})))
     plotter.show()
Exemplo n.º 3
0
                u, v = v, u
            edgecolor[(u, v)] = '#ff0000'
            edgewidth[(u, v)] = 5.0

        for path in paths[1:]:
            parent = predecessors[path[0]]
            for u, v in pairwise([parent] + path):
                if not mesh.has_edge(u, v):
                    u, v = v, u
                edgecolor[(u, v)] = '#00ff00'
                edgewidth[(u, v)] = 5.0

        plotter = MeshPlotter(mesh, figsize=(10, 7))

        plotter.draw_vertices(text='key',
                              facecolor={key: '#ff0000'
                                         for key in (root, )},
                              radius=0.2)
        plotter.draw_edges(color=edgecolor, width=edgewidth)

        plotter.show()

    # dynamic traversal to visualize the difference
    # between DFS and BFS

    # ==========================================================================
    # testrun 2
    # ==========================================================================

    if testrun == 2:
        import compas
Exemplo n.º 4
0
# Main
# ==============================================================================

if __name__ == "__main__":

    import compas
    from compas.datastructures import Mesh
    from compas.plotters import MeshPlotter
    from compas.topology import mesh_quads_to_triangles

    mesh = Mesh.from_obj(compas.get('faces.obj'))

    mesh_quads_to_triangles(mesh)

    split = mesh.split_edge_tri(15, 20)

    facecolor = {
        key: '#cccccc' if key != split else '#ff0000'
        for key in mesh.vertices()
    }

    plotter = MeshPlotter(mesh, figsize=(10, 7))

    plotter.draw_vertices(text={key: key
                                for key in mesh.vertices()},
                          radius=0.2,
                          facecolor=facecolor)
    plotter.draw_faces(text={fkey: fkey for fkey in mesh.faces()})

    plotter.show()
Exemplo n.º 5
0
trimesh_remesh(delaunay, 1.0, allow_boundary_split=True)

points = [delaunay.vertex_coordinates(key) for key in delaunay.vertices()]
faces = delaunay_from_points(points)
delaunay = Mesh.from_vertices_and_faces(points, faces)

voronoi = voronoi_from_delaunay(delaunay)

lines = []
for u, v in voronoi.edges():
    lines.append({
        'start': voronoi.vertex_coordinates(u, 'xy'),
        'end': voronoi.vertex_coordinates(v, 'xy'),
        'width': 1.0
    })

plotter = MeshPlotter(delaunay, figsize=(10, 6))

plotter.draw_lines(lines)

plotter.draw_vertices(radius=0.075,
                      facecolor={
                          key: '#0092d2'
                          for key in delaunay.vertices()
                          if key not in delaunay.vertices_on_boundary()
                      })

plotter.draw_edges(color='#cccccc')

plotter.show()
Exemplo n.º 6
0
    from compas.datastructures import Mesh
    from compas.plotters import MeshPlotter
    from compas.utilities import i_to_rgb

    mesh = Mesh.from_obj(compas.get('hypar.obj'))

    for key, attr in mesh.vertices(True):
        attr['is_fixed'] = mesh.vertex_degree(key) == 2

    fixed = [key for key in mesh.vertices_where({'is_fixed': True})]
    radius = {key: (0.05 if key in fixed else 0.01) for key in mesh.vertices()}

    plotter = MeshPlotter(mesh, figsize=(10, 7))

    plotter.draw_vertices(radius=radius)
    plotter.draw_faces()
    plotter.draw_edges()

    def callback(k, args):
        print(k)

        if k % 100 == 0:
            dev = mesh_flatness(mesh, maxdev=0.02)

            plotter.update_vertices(radius=radius)
            plotter.update_faces(
                facecolor={fkey: i_to_rgb(dev[fkey])
                           for fkey in mesh.faces()})
            plotter.update_edges()
            plotter.update()
Exemplo n.º 7
0
lines = []
for u, v in mesh.edges():
    lines.append({
        'start': mesh.vertex_coordinates(u, 'xy'),
        'end': mesh.vertex_coordinates(v, 'xy'),
        'color': '#cccccc',
        'width': 0.5
    })

plotter.draw_lines(lines)

# draw the vertices and edges in the starting configuration
# and pause for a second before starting the dynamic visualization

plotter.draw_vertices(facecolor={
    key: '#000000'
    for key in mesh.vertices() if mesh.vertex_degree(key) == 2
})
plotter.draw_edges()

plotter.update(pause=0.5)

# run the smoother

xyz = smooth_centroid_cpp(vertices,
                          adjacency,
                          fixed,
                          kmax=kmax,
                          callback=callback)

# keep the plot alive
Exemplo n.º 8
0
import compas
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

mesh = Mesh.from_obj(compas.get('faces.obj'))

plotter = MeshPlotter(mesh)

plotter.draw_vertices(text='key', radius=0.15)
plotter.draw_edges()
plotter.draw_faces()

plotter.show()
Exemplo n.º 9
0
 def plot(self):
     from compas.plotters import MeshPlotter
     plotter = MeshPlotter(self, figsize=(12, 8), tight=True)
     plotter.draw_vertices(radius=0.05)
     plotter.draw_edges()
     plotter.show()
import compas
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

mesh = Mesh.from_obj(compas.get('faces.obj'))

k_a = {key: mesh.vertex_area(key) for key in mesh.vertices()}

plotter = MeshPlotter(mesh)
plotter.draw_vertices(
    radius=0.2,
    text={key: '{:.1f}'.format(k_a[key]) for key in mesh.vertices()}
)
plotter.draw_faces()
plotter.draw_edges()
plotter.show()
Exemplo n.º 11
0
force = ForceDiagram.from_formdiagram(form)

horizontal(form, force, alpha=100)
scale = vertical_from_zmax(form, 3.0)

# ==============================================================================
# visualise
# ==============================================================================

z = form.get_vertices_attribute('z')
zmin = min(z)
zmax = max(z)

plotter = MeshPlotter(form, figsize=(12, 8), tight=True)

plotter.draw_vertices(
    keys=list(form.vertices_where({'is_external': False})),
    facecolor={key: i_to_black((attr['z'] - zmin) / (zmax - zmin)) for key, attr in form.vertices_where({'is_external': False}, True)},
    radius=0.1
)

plotter.draw_edges(
    keys=list(form.edges_where({'is_edge': True})),
    color={key: '#00ff00' for key in form.edges_where({'is_external': True})},
    width={key: 2.0 for key in form.edges_where({'is_external': True})}
)

plotter.draw_faces(keys=list(form.faces_where({'is_loaded': True})))

plotter.show()
mesh = Mesh.from_obj(compas.get('faces.obj'))

edges = list(mesh.edges())

root = mesh.get_any_vertex()

ordering, predecessors, paths = depth_first_tree(mesh.adjacency, root)

edgecolor = {}
edgewidth = {}

for u, v in pairwise(paths[0]):
    if not mesh.has_edge(u, v):
        u, v = v, u
    edgecolor[(u, v)] = '#ff0000'
    edgewidth[(u, v)] = 3.0

for path in paths[1:]:
    parent = predecessors[path[0]]
    for u, v in pairwise([parent] + path):
        if not mesh.has_edge(u, v):
            u, v = v, u
        edgecolor[(u, v)] = '#00ff00'
        edgewidth[(u, v)] = 3.0

plotter = MeshPlotter(mesh, figsize=(10, 7))

plotter.draw_vertices(text='key', facecolor={root: '#ff0000'}, radius=0.2)
plotter.draw_edges(color=edgecolor, width=edgewidth)

plotter.show()
Exemplo n.º 13
0
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

# ==============================================================================
# construct a mesh from OBJ

mesh = Mesh.from_obj(compas.get('faces.obj'))

# ==============================================================================
# visualise the result with a plotter

plotter = MeshPlotter(mesh, figsize=(10, 7))

plotter.draw_vertices(
    text={key: key
          for key in mesh.vertices_where({
              'x': (2, 8),
              'y': (2, 8)
          })},
    radius={
        key: 0.2
        for key in mesh.vertices_where({
            'x': (2, 8),
            'y': (2, 8)
        })
    })
plotter.draw_edges()
plotter.draw_faces()

plotter.show()
Exemplo n.º 14
0
                [18.929227828979492, 16.271940231323242, 0.0],
                [7.34525203704834, 12.111981391906738, 0.0],
                [13.31309986114502, 14.699410438537598, 0.0],
                [18.699434280395508, 19.613750457763672, 0.0],
                [11.913931846618652, 10.593378067016602, 0.0],
                [17.163223266601563, 26.870658874511719, 0.0],
                [26.110898971557617, 26.634754180908203, 0.0],
                [22.851469039916992, 9.81414794921875, 0.0],
                [21.051292419433594, 7.556171894073486, 0.0],
                [22.1370792388916, 19.089054107666016, 0.0]]
    faces = [[15, 5, 0, 4], [0, 9, 12, 4], [9, 11, 14, 12], [14, 1, 8, 12],
             [1, 18, 17, 8], [17, 2, 7, 8], [2, 6, 16, 7], [16, 15, 4, 7],
             [13, 19, 7, 4], [19, 10, 8, 7], [10, 3, 12, 8], [3, 13, 4, 12]]

    mesh = CoarseQuadMesh.from_vertices_and_faces(vertices, faces)

    mesh.collect_strip_edge_attribute()
    mesh.density_target_length(2)
    dense_mesh = densify_quad_mesh(mesh)

    plotter = MeshPlotter(dense_mesh, figsize=(10, 6))

    plotter.draw_vertices(text='key', radius=0.2, picker=10)

    for text in plotter.axes.texts:
        text.set_visible(False)

    plotter.draw_edges()
    plotter.draw_faces()
    plotter.show()
from compas.datastructures import Mesh
from compas.topology import mesh_subdivide_catmullclark
from compas.plotters import MeshPlotter

vertices = [[0., 0., 0.], [1., 0., 0.], [1., 1., 0.], [0., 1.0, 0.]]
faces = [
    [0, 1, 2, 3],
]

mesh = Mesh.from_vertices_and_faces(vertices, faces)
subd = mesh_subdivide_catmullclark(mesh, k=3, fixed=None)

plotter = MeshPlotter(subd)

plotter.draw_vertices(facecolor={key: '#ff0000'
                                 for key in mesh.vertices()},
                      radius=0.01)
plotter.draw_faces()

plotter.show()
Exemplo n.º 16
0
    points = [mesh.vertex_coordinates(key) for key in mesh.vertices()]
    faces = delaunay_from_points(points)
    mesh = Mesh.from_vertices_and_faces(points, faces)

    dual = mesh_dual(mesh)

    # network = FaceNetwork.from_vertices_and_faces(points, faces)
    # network_find_faces(network)
    # dual = network_dual(network)

    lines = []
    for u, v in mesh.edges():
        lines.append({
            'start': mesh.vertex_coordinates(u, 'xy'),
            'end': mesh.vertex_coordinates(v, 'xy'),
            'color': '#cccccc',
            'width': 0.5
        })

    plotter = MeshPlotter(dual, figsize=(10, 7))

    plotter.draw_lines(lines)
    plotter.draw_vertices(facecolor='#eeeeee',
                          edgecolor='#000000',
                          radius=0.05)
    plotter.draw_faces(facecolor='#eeeeee', edgecolor='#eeeeee', text='key')
    plotter.draw_edges()

    plotter.show()
Exemplo n.º 17
0
    for u, v in mesh.edges():
        lines.append({
            'start': mesh.vertex_coordinates(u, 'xy'),
            'end': mesh.vertex_coordinates(v, 'xy'),
            'color': '#cccccc',
            'width': 1.0,
        })

    smooth_centerofmass(vertices, adjacency, fixed=fixed, kmax=100)

    for key, attr in mesh.vertices(True):
        attr['x'] = vertices[key][0]
        attr['y'] = vertices[key][1]
        attr['z'] = vertices[key][2]

    plotter = MeshPlotter(mesh)

    plotter.draw_lines(lines)
    plotter.draw_vertices(
        text={key: mesh.vertex_degree(key)
              for key in mesh.vertices()},
        facecolor={key: '#ff0000'
                   for key in fixed})
    plotter.draw_edges()
    plotter.draw_faces(text={
        key: "{:.1f}".format(mesh.face_area(key))
        for key in mesh.faces()
    })

    plotter.show()
Exemplo n.º 18
0
import compas
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

mesh = Mesh.from_obj(compas.get('faces.obj'))

key = 17
nbrs = mesh.vertex_neighbors(key, ordered=True)

plotter = MeshPlotter(mesh)

color = {nbr: '#cccccc' for nbr in nbrs}
color[key] = '#ff0000'

text = {nbr: str(index) for index, nbr in enumerate(nbrs)}
text[key] = str(key)

plotter.draw_vertices(text=text, facecolor=color)
plotter.draw_faces()
plotter.draw_edges()

plotter.show()
Exemplo n.º 19
0
    # mesh = Mesh.from_obj(compas.get('faces.obj'))
    # mesh_quads_to_triangles(mesh)

    # mesh = Mesh.from_polyhedron(12)
    # mesh_quads_to_triangles(mesh)

    index_key = mesh.index_key()

    sources = [0]

    d = mesh_geodesic_distances(mesh, sources, m=1.0).tolist()

    dmin = min(d)
    dmax = max(d)
    drange = dmax - dmin

    plotter = MeshPlotter(mesh, figsize=(10, 7))

    facecolor = {key: i_to_blue(1 - (d[i] - dmin) / drange) for i, key in enumerate(mesh.vertices())}
    for i in sources:
        facecolor[index_key[i]] = '#ff0000'

    plotter.draw_vertices(
        facecolor=facecolor,
        radius=0.05
    )
    # plotter.draw_edges()
    plotter.draw_faces()

    plotter.show()
Exemplo n.º 20
0
import compas
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

mesh = Mesh.from_obj(compas.get('faces.obj'))

key = 17
nbrs = mesh.vertex_faces(key, ordered=True)

plotter = MeshPlotter(mesh)

plotter.draw_vertices(
    text={17: '17'},
    facecolor={17: '#ff0000'},
    radius=0.2
)
plotter.draw_faces(
    text={nbr: str(index) for index, nbr in enumerate(nbrs)},
    facecolor={nbr: '#cccccc' for nbr in nbrs}
)
plotter.draw_edges()
plotter.show()
Exemplo n.º 21
0
def update_plot(k, args):
    plotter.update_vertices()
    plotter.update_edges()
    plotter.update_faces()
    plotter.update(pause=0.001)


# path to the sample file
DATA = os.path.join(os.path.dirname(__file__), '..', 'data')
FILE = os.path.join(DATA, 'faces.obj')

# make a mesh
mesh = Mesh.from_obj(FILE)

# identify fixed points
fixed = list(mesh.vertices_where({'vertex_degree': 2}))

# make a plotter
plotter = MeshPlotter(mesh, figsize=(10, 7))

# draw the original configuration
plotter.draw_vertices(facecolor={key: '#ff0000' for key in fixed})
plotter.draw_edges()
plotter.draw_faces()

# smooth with dynamic viz
mesh_smooth_centroid(mesh, fixed=fixed, kmax=100, callback=update_plot)

# keep plot alive
plotter.show()
Exemplo n.º 22
0
def plot_form(form, radius=0.1, fix_width=False, max_width=10, simple=False):
    """ Extended load-path plotting of a FormDiagram

    Parameters
    ----------
    form : obj
        FormDiagram to plot.
    radius : float
        Radius of vertex markers.
    fix_width : bool
        Fix edge widths as constant.
    max_width : float
        Maximum edge width.
    simple : bool
        Simple red and blue colour plotting.

    Returns
    -------
    obj
        Plotter object.

    """

    q = [attr['q'] for u, v, attr in form.edges(True)]
    qmax = max(abs(array(q)))
    lines = []

    for u, v in form.edges():
        qi = form.get_edge_attribute((u, v), 'q')

        if simple:
            if qi > 0:
                colour = ['ff', '00', '00']
            elif qi < 0:
                colour = ['00', '00', 'ff']
            else:
                colour = ['aa', 'aa', 'aa']

        else:
            colour = ['00', '00', '00']
            if qi > 0:
                colour[0] = 'ff'
            if form.get_edge_attribute((u, v), 'is_symmetry'):
                colour[1] = 'cc'
            if form.get_edge_attribute((u, v), 'is_ind'):
                colour[2] = 'ff'

        width = max_width if fix_width else (qi / qmax) * max_width

        lines.append({
            'start': form.vertex_coordinates(u),
            'end': form.vertex_coordinates(v),
            'color': ''.join(colour),
            'width': width,
        })

    plotter = MeshPlotter(form, figsize=(10, 10))
    if radius:
        plotter.draw_vertices(facecolor={
            i: '#aaaaaa'
            for i in form.vertices_where({'is_fixed': True})
        },
                              radius=radius)
    plotter.draw_lines(lines)

    return plotter
Exemplo n.º 23
0
    loads = mesh.get_vertices_attributes(('px', 'py', 'pz'))
    q     = mesh.get_edges_attribute('q')
    fixed = mesh.vertices_where({'is_anchor': True})
    fixed = [k_i[k] for k in fixed]
    edges = [(k_i[u], k_i[v]) for u, v in mesh.edges()]

    # compute equilibrium
    # update the mesh geometry

    xyz, q, f, l, r = fd_numpy(xyz, edges, fixed, q, loads)

    for key, attr in mesh.vertices(True):
        index = k_i[key]
        attr['x'] = xyz[index, 0]
        attr['y'] = xyz[index, 1]
        attr['z'] = xyz[index, 2]

    # visualisae the result
    # color the vertices according to their elevation

    plotter = MeshPlotter(mesh)

    zmax = max(mesh.get_vertices_attribute('z'))

    plotter.draw_vertices(
        facecolor={key: i_to_black(attr['z'] / zmax) for key, attr in mesh.vertices(True)}
    )
    plotter.draw_faces()
    plotter.draw_edges()
    plotter.show()
for u, v in mesh.edges():
    lines.append({
        'start': mesh.vertex_coordinates(u, 'xy'),
        'end': mesh.vertex_coordinates(v, 'xy'),
        'color': '#cccccc',
        'width': 0.5
    })

# ==============================================================================
# make a plotter for visualisation

plotter = MeshPlotter(mesh, figsize=(10, 7), fontsize=6)

plotter.draw_lines(lines)
plotter.draw_vertices(facecolor={
    key: '#000000'
    for key in mesh.vertices_where({'is_fixed': True})
})
plotter.draw_edges()

plotter.update(pause=1.0)

# ==============================================================================
# define a callback for visualising the iterative process


def callback(k, xyz, crits, args):
    print(k)

    plotter.update_vertices()
    plotter.update_edges()
    plotter.update(pause=0.001)
Exemplo n.º 25
0
import compas
from compas.datastructures import Mesh
from compas.plotters import MeshPlotter

mesh = Mesh.from_obj(compas.get('faces.obj'))

plotter = MeshPlotter(mesh)

plotter.draw_vertices()
plotter.draw_faces(
    text={fkey: '%.1f' % mesh.face_area(fkey)
          for fkey in mesh.faces()})
plotter.draw_edges()

plotter.show()
Exemplo n.º 26
0
    return True


# ==============================================================================
# Main
# ==============================================================================

if __name__ == "__main__":

    import compas

    from compas.datastructures import Mesh
    from compas.datastructures import mesh_quads_to_triangles
    from compas.datastructures import trimesh_collapse_edge
    from compas.plotters import MeshPlotter

    mesh = Mesh.from_obj(compas.get('faces.obj'))

    mesh_quads_to_triangles(mesh)

    trimesh_collapse_edge(mesh, 21, 27)
    trimesh_collapse_edge(mesh, 0, 6, allow_boundary=True)
    trimesh_collapse_edge(mesh, 1, 7, allow_boundary=True)

    plotter = MeshPlotter(mesh, figsize=(10, 7))

    plotter.draw_vertices(text={key: key for key in mesh.vertices()}, radius=0.2)
    plotter.draw_faces(text={fkey: fkey for fkey in mesh.faces()})

    plotter.show()
Exemplo n.º 27
0
# ==============================================================================
# Main
# ==============================================================================

if __name__ == '__main__':

    from compas.datastructures import Mesh
    from compas.geometry import conforming_delaunay_triangle
    from compas.plotters import MeshPlotter

    points = [[2.994817685045075, 10.855606612493078, 0.0],
              [4.185204599300653, 9.527867361977242, 0.0],
              [4.414125159734419, 10.718254276232818, 0.0],
              [5.925000858597267, 9.344730913630228, 0.0],
              [8.900968144236211, 10.809822500406325, 0.0],
              [9.496161601363999, 8.566401008155429, 0.0],
              [7.710581229980631, 7.9254234389408875, 0.0],
              [7.847933566240888, 6.414547740078039, 0.0],
              [3.9104999267801377, 4.9036720412151915, 0.0],
              [5.2909301507195865, 6.342692886748852, 0.0]]
    segments = list(pairwise(list(range(len(points))) + [0]))

    vertices, faces = conforming_delaunay_triangle(points, segments)

    mesh = Mesh.from_vertices_and_faces(vertices, faces)

    plotter = MeshPlotter(mesh)
    plotter.draw_faces()
    plotter.draw_vertices(text='key')
    plotter.show()
Exemplo n.º 28
0
        [2, 3, 4],
        [3, 0, 4],
    ]

    lines = [
        ([0., 0., 0.], [1., 0., -1.]),
        ([0., 0., 0.], [-1., 0., -1.]),
        ([0., 0., 0.], [0., 1., -1.]),
        ([0., 0., 0.], [0., -1., -1.]),
        ([0., 0., 0.], [0., 0., 1.]),
    ]

    #kagome = Kagome.from_skeleton(lines)
    kagome = Kagome.from_vertices_and_faces(vertices, faces)
    kagome.densification(3)
    kagome.patterning()
    kagome.store_kagome_polyedge_data()

    plotter = MeshPlotter(kagome.kagome)
    plotter.draw_vertices(radius=.005)
    plotter.draw_edges()
    plotter.draw_faces()
    plotter.show()

    #print kagome.kagome_negative_singularities()
    #print kagome.kagome_singularities()
    #print kagome.kagome_polyline_frames()
    #kagome.kagome_polyedges()
    #kagome.kagome_polyline_colouring()
    kagome.kagome_polyedge_weaving()
Exemplo n.º 29
0
vertexcolor = {}
vertexcolor.update(
    {key: '#00ff00'
     for key in form.vertices_where({'is_fixed': True})})
vertexcolor.update(
    {key: '#0000ff'
     for key in form.vertices_where({'is_external': True})})
vertexcolor.update(
    {key: '#ff0000'
     for key in form.vertices_where({'is_anchor': True})})

radius = {key: 0.05 for key in form.vertices()}
radius.update({key: 0.1 for key in form.vertices_where({'is_anchor': True})})

plotter.draw_vertices(facecolor=vertexcolor, radius=radius)

plotter.draw_edges(
    keys=list(form.edges_where({'is_edge': True})),
    color={key: '#00ff00'
           for key in form.edges_where({'is_external': True})},
    width={key: 2.0
           for key in form.edges_where({'is_external': True})})

plotter.draw_faces(facecolor={
    key: (1.0, 0.9, 0.9)
    for key in form.faces_where({'is_loaded': False})
}, )

plotter.show()
from compas.geometry import pointcloud_xy
from compas.datastructures import Mesh
from compas.topology import delaunay_from_points
from compas.plotters import MeshPlotter

points = pointcloud_xy(10, (0, 10))
faces = delaunay_from_points(points)

delaunay = Mesh.from_vertices_and_faces(points, faces)

plotter = MeshPlotter(delaunay)

plotter.draw_vertices(radius=0.1)
plotter.draw_faces()

plotter.show()