Source code for omfvista.pointset

"""Methods to convert point set objects to VTK data objects"""


__all__ = [
    'point_set_to_vtk',
]

__displayname__ = 'Point Set'

import vtk
from vtk.util import numpy_support as nps
import vista

import numpy as np

from omfvista.utilities import add_data, add_textures


[docs]def point_set_to_vtk(pse): """Convert the point set to a :class:`vista.PolyData` data object. Args: pse (:class:`omf.pointset.PointSetElement`): The point set to convert Return: :class:`vista.PolyData` """ points = pse.geometry.vertices npoints = pse.geometry.num_nodes # Make VTK cells array cells = np.hstack((np.ones((npoints, 1)), np.arange(npoints).reshape(-1, 1))) cells = np.ascontiguousarray(cells, dtype=np.int64) cells = np.reshape(cells, (2*npoints)) vtkcells = vtk.vtkCellArray() vtkcells.SetCells(npoints, nps.numpy_to_vtk(cells, deep=True, array_type=vtk.VTK_ID_TYPE)) # Convert points to vtk object pts = vtk.vtkPoints() pts.SetNumberOfPoints(pse.geometry.num_nodes) pts.SetData(nps.numpy_to_vtk(points)) # Create polydata output = vtk.vtkPolyData() output.SetPoints(pts) output.SetVerts(vtkcells) # Now add point data: add_data(output, pse.data) add_textures(output, pse.textures, pse.name) return vista.wrap(output)
point_set_to_vtk.__displayname__ = 'Point Set to VTK'