Exemplo n.º 1
0
def test_save_and_load_polydata():
    l_ext = ["vtk", "fib", "ply", "xml"]
    fname = "temp-io"

    for ext in l_ext:
        with InTemporaryDirectory() as odir:
            data = np.random.randint(0, 255, size=(50, 3))

            pd = vtk.vtkPolyData()
            pd.SetPoints(numpy_to_vtk_points(data))

            fname_path = pjoin(odir, "{0}.{1}".format(fname, ext))
            save_polydata(pd, fname_path)

            npt.assert_equal(os.path.isfile(fname_path), True)
            assert_greater(os.stat(fname_path).st_size, 0)

            out_pd = load_polydata(fname_path)
            out_data = numpy_support.vtk_to_numpy(out_pd.GetPoints().GetData())

            npt.assert_array_equal(data, out_data)

    npt.assert_raises(IOError, save_polydata, vtk.vtkPolyData(), "test.vti")
    npt.assert_raises(IOError, save_polydata, vtk.vtkPolyData(), "test.obj")
    npt.assert_raises(IOError, load_polydata, "test.vti")
Exemplo n.º 2
0
def test_get_bounds():
    size = (15, 15)
    test_bounds = [0.0, 15, 0.0, 15, 0.0, 0.0]
    points = vtk.vtkPoints()
    points.InsertNextPoint(0, 0, 0)
    points.InsertNextPoint(size[0], 0, 0)
    points.InsertNextPoint(size[0], size[1], 0)
    points.InsertNextPoint(0, size[1], 0)

    # Create the polygon
    polygon = vtk.vtkPolygon()
    polygon.GetPointIds().SetNumberOfIds(4)  # make a quad
    polygon.GetPointIds().SetId(0, 0)
    polygon.GetPointIds().SetId(1, 1)
    polygon.GetPointIds().SetId(2, 2)
    polygon.GetPointIds().SetId(3, 3)
    # Add the polygon to a list of polygons
    polygons = vtk.vtkCellArray()
    polygons.InsertNextCell(polygon)
    # Create a PolyData
    polygonPolyData = vtk.vtkPolyData()
    polygonPolyData.SetPoints(points)
    polygonPolyData.SetPolys(polygons)
    # Create a mapper and actor
    mapper = vtk.vtkPolyDataMapper2D()
    mapper = set_input(mapper, polygonPolyData)
    actor = vtk.vtkActor2D()
    actor.SetMapper(mapper)
    compute_bounds(actor)
    npt.assert_equal(get_bounds(actor), test_bounds)
Exemplo n.º 3
0
def test_polydata_polygon(interactive=False):
    # Create a cube
    my_triangles = np.array([[0, 6, 4],
                             [0, 2, 6],
                             [0, 3, 2],
                             [0, 1, 3],
                             [2, 7, 6],
                             [2, 3, 7],
                             [4, 6, 7],
                             [4, 7, 5],
                             [0, 4, 5],
                             [0, 5, 1],
                             [1, 5, 7],
                             [1, 7, 3]], dtype='i8')
    my_vertices = np.array([[0.0, 0.0, 0.0],
                            [0.0, 0.0, 1.0],
                            [0.0, 1.0, 0.0],
                            [0.0, 1.0, 1.0],
                            [1.0, 0.0, 0.0],
                            [1.0, 0.0, 1.0],
                            [1.0, 1.0, 0.0],
                            [1.0, 1.0, 1.0]])
    colors = my_vertices * 255
    my_polydata = vtk.vtkPolyData()

    utils.set_polydata_vertices(my_polydata, my_vertices)
    utils.set_polydata_triangles(my_polydata, my_triangles)

    npt.assert_equal(len(my_vertices), my_polydata.GetNumberOfPoints())
    npt.assert_equal(len(my_triangles), my_polydata.GetNumberOfCells())
    npt.assert_equal(utils.get_polydata_normals(my_polydata), None)

    res_triangles = utils.get_polydata_triangles(my_polydata)
    res_vertices = utils.get_polydata_vertices(my_polydata)

    npt.assert_array_equal(my_vertices, res_vertices)
    npt.assert_array_equal(my_triangles, res_triangles)

    utils.set_polydata_colors(my_polydata, colors)
    npt.assert_equal(utils.get_polydata_colors(my_polydata), colors)

    utils.update_polydata_normals(my_polydata)
    normals = utils.get_polydata_normals(my_polydata)
    npt.assert_equal(len(normals), len(my_vertices))

    mapper = utils.get_polymapper_from_polydata(my_polydata)
    actor1 = utils.get_actor_from_polymapper(mapper)
    actor2 = utils.get_actor_from_polydata(my_polydata)

    scene = window.Scene()
    for actor in [actor1, actor2]:
        scene.add(actor)
        if interactive:
            window.show(scene)
        arr = window.snapshot(scene)

        report = window.analyze_snapshot(arr)
        npt.assert_equal(report.objects, 1)
Exemplo n.º 4
0
def test_save_and_load_options():
    l_ext = ["ply", "vtk"]
    l_options = [{
        'color_array_name': 'horizon',
    }, {
        'binary': True,
    }]
    fname = "temp-io"

    for ext, option in zip(l_ext, l_options):
        with InTemporaryDirectory() as odir:
            data = np.random.randint(0, 255, size=(50, 3))

            pd = vtk.vtkPolyData()
            pd.SetPoints(numpy_to_vtk_points(data))

            fname_path = pjoin(odir, "{0}.{1}".format(fname, ext))
            save_polydata(pd, fname_path, **option)

            npt.assert_equal(os.path.isfile(fname_path), True)
            assert_greater(os.stat(fname_path).st_size, 0)

            out_pd = load_polydata(fname_path)
            out_data = numpy_support.vtk_to_numpy(out_pd.GetPoints().GetData())

            npt.assert_array_equal(data, out_data)

    l_ext = ["vtk", "vtp", "ply", "stl", "mni.obj"]
    l_options = [{}, {
        'binary': False,
    }]
    for ext, option in zip(l_ext, l_options):
        with InTemporaryDirectory() as odir:
            data = np.random.randint(0, 255, size=(50, 3))

            pd = vtk.vtkPolyData()
            pd.SetPoints(numpy_to_vtk_points(data))

            fname_path = pjoin(odir, "{0}.{1}".format(fname, ext))
            save_polydata(pd, fname_path, **option)

            npt.assert_equal(os.path.isfile(fname_path), True)
            assert_greater(os.stat(fname_path).st_size, 0)
Exemplo n.º 5
0
def _sphere(scale=1):

    vertices, faces = prim_sphere('symmetric362')

    from fury.utils import set_polydata_vertices, set_polydata_triangles, vtk
    polydata = vtk.vtkPolyData()

    set_polydata_vertices(polydata, scale * vertices)
    set_polydata_triangles(polydata, faces)
    from fury.utils import set_polydata_normals, normals_from_v_f

    normals = normals_from_v_f(scale * vertices, faces)
    set_polydata_normals(polydata, normals)
    return polydata, scale * vertices, normals
Exemplo n.º 6
0
def test_polydata_lines():
    colors = np.array([[1, 0, 0], [0, 0, 1.]])
    line_1 = np.array([[0, 0, 0], [2, 2, 2], [3, 3, 3.]])
    line_2 = line_1 + np.array([0.5, 0., 0.])
    lines = [line_1, line_2]

    pd_lines, is_cmap = utils.lines_to_vtk_polydata(lines, colors)
    res_lines = utils.get_polydata_lines(pd_lines)
    npt.assert_array_equal(lines, res_lines)
    npt.assert_equal(is_cmap, False)

    res_colors = utils.get_polydata_colors(pd_lines)
    res_colors = np.unique(res_colors, axis=0) / 255
    npt.assert_array_equal(colors, np.flipud(res_colors))

    npt.assert_equal(utils.get_polydata_colors(vtk.vtkPolyData()), None)
Exemplo n.º 7
0
import numpy as np

from fury import window, utils
from fury.io import save_polydata, load_polydata
from fury.utils import vtk

my_polydata = vtk.vtkPolyData()

my_vertices = np.array([[1.0, 0.0, 0.0], #0
                       [2.0, 0.75, 0.0], #1
                       [3.0, 0.0, 0.0], #2
                       [2.75, 1.25, 0.0], #3
                       [3.75, 2.0, 0.0], #4
                       [2.5, 2.0, 0.0], #5
                       [2.0, 3.0, 0.0], #6
                       [1.5, 2.0, 0.0], #7
                       [0.25, 2.0, 0.0], #8
                       [1.25, 1.25, 0.0]]) #9

my_triangles = np.array([[1, 9, 0], #good
                         [1, 2, 3],
                         [3, 4, 5], #good
                         [5, 6, 7],
                         [7, 8, 9], #good
                         [1, 9, 3], #good
                         [3, 7, 9], #good
                         [3, 5, 7]], dtype='i8') #good

utils.set_polydata_vertices(my_polydata, my_vertices)
utils.set_polydata_triangles(my_polydata, my_triangles)
Exemplo n.º 8
0
from fury.utils import vtk
from fury import ui, window

linesPolyData = vtk.vtkPolyData()

pts = vtk.vtkPoints()
count = 0

for i in range(0, 1800, 30):
    pts.InsertNextPoint([0, i, 0])
    pts.InsertNextPoint([800, i, 0])
    pts.InsertNextPoint([i, 0, 0])
    pts.InsertNextPoint([i, 800, 0])
    count += 1

linesPolyData.SetPoints(pts)

lines = vtk.vtkCellArray()

for i in range(0, count + 1, 4):
    h_line = vtk.vtkLine()
    v_line = vtk.vtkLine()

    h_line.GetPointIds().SetId(0, i)
    h_line.GetPointIds().SetId(1, i + 1)

    v_line.GetPointIds().SetId(0, i + 2)
    v_line.GetPointIds().SetId(1, i + 3)

    lines.InsertNextCell(h_line)
    lines.InsertNextCell(v_line)