Source code for sksurgerytrackervisualisation.shapes.sphere

# -*- coding: utf-8 -*-

"""
VTK pipeline to represent a surface model via a vtkPolyData.
"""
import vtk
import sksurgeryvtk.models.vtk_surface_model as vbs

# pylint: disable=no-member

[docs]class VTKSphereModel(vbs.VTKSurfaceModel): """ Class to create a VTK surface model of a sphere. """ def __init__(self, radius, colour, name, visibility=True, opacity=1.0): """ Creates a new surface model. :param diameter: the radius of the sphere :param name: a name for the model :param colour: (R,G,B) where each are floats [0-1] :param visibility: boolean, True|False :param opacity: float [0,1] """ super().__init__(None, colour, visibility, opacity) self.name = name sphere = vtk.vtkSphereSource() sphere.SetThetaResolution(36) sphere.SetPhiResolution(36) sphere.SetRadius(radius) sphere.Update() self.source = sphere.GetOutput() #this is from super init, have to redo as we now have data self.transform = vtk.vtkTransform() self.transform.Identity() self.transform_filter = vtk.vtkTransformPolyDataFilter() self.transform_filter.SetInputData(self.source) self.transform_filter.SetTransform(self.transform) self.mapper = vtk.vtkPolyDataMapper() self.mapper.SetInputConnection(self.transform_filter.GetOutputPort()) self.mapper.Update() self.actor.SetMapper(self.mapper)