.. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_tutorials_01_introductory_viz_surfaces.py: ================== Visualize surfaces ================== Here is a simple tutorial that shows how to visualize surfaces using DIPY. It also shows how to load/save, get/set and update ``vtkPolyData`` and show surfaces. ``vtkPolyData`` is a structure used by VTK to represent surfaces and other data structures. Here we show how to visualize a simple cube but the same idea should apply for any surface. .. code-block:: default import numpy as np Import useful functions .. code-block:: default from fury import window, utils from fury.io import save_polydata, load_polydata from fury.utils import vtk Create an empty ``vtkPolyData`` .. code-block:: default my_polydata = vtk.vtkPolyData() Create a cube with vertices and triangles as numpy arrays .. code-block:: default 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]]) # the data type for vtk is needed to mention here, numpy.int64 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') Set vertices and triangles in the ``vtkPolyData`` .. code-block:: default utils.set_polydata_vertices(my_polydata, my_vertices) utils.set_polydata_triangles(my_polydata, my_triangles) Save the ``vtkPolyData`` .. code-block:: default file_name = "my_cube.vtk" save_polydata(my_polydata, file_name) print("Surface saved in " + file_name) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Surface saved in my_cube.vtk Load the ``vtkPolyData`` .. code-block:: default cube_polydata = load_polydata(file_name) add color based on vertices position .. code-block:: default cube_vertices = utils.get_polydata_vertices(cube_polydata) colors = cube_vertices * 255 utils.set_polydata_colors(cube_polydata, colors) print("new surface colors") print(utils.get_polydata_colors(cube_polydata)) .. rst-class:: sphx-glr-script-out Out: .. code-block:: none new surface colors [[ 0 0 0] [ 0 0 255] [ 0 255 0] [ 0 255 255] [255 0 0] [255 0 255] [255 255 0] [255 255 255]] Visualize surfaces .. code-block:: default # get vtkActor cube_actor = utils.get_actor_from_polydata(cube_polydata) # Create a scene scene = window.Scene() scene.add(cube_actor) scene.set_camera(position=(10, 5, 7), focal_point=(0.5, 0.5, 0.5)) scene.zoom(3) # display # window.show(scene, size=(600, 600), reset_camera=False) window.record(scene, out_path='cube.png', size=(600, 600)) .. image:: /auto_tutorials/01_introductory/images/sphx_glr_viz_surfaces_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.105 seconds) .. _sphx_glr_download_auto_tutorials_01_introductory_viz_surfaces.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download :download:`Download Python source code: viz_surfaces.py ` .. container:: sphx-glr-download :download:`Download Jupyter notebook: viz_surfaces.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_