I am trying to render a point on vtkimageviewer2. I am using vtkpointpicker for selecting the point but sometimes the point is not visible on the slice I select it on. Here is my code:
Picker initialization:
worldPicker = vtkPointPicker()
worldPicker.SetTolerance(0.001)
interactor.SetPicker(worldPicker)
Picking Point:
interactor.GetPicker().Pick(interactor.GetEventPosition()[0],
interactor.GetEventPosition()[1],
0,
interactor.GetRenderWindow().GetRenderers().GetFirstRenderer())
picked = interactor.GetPicker().GetPickPosition()
Drawing the point:
points = vtkPoints()
points.InsertNextPoint(picked[0] , picked[1] , picked[2] )
pointsData = vtk.vtkPolyData()
pointsData.SetPoints(points)
vertexGlyphFilter = vtk.vtkVertexGlyphFilter()
vertexGlyphFilter.AddInputData(pointsData)
vertexGlyphFilter.Update()
pointsMapper = vtk.vtkPolyDataMapper()
pointsMapper.SetInputConnection(vertexGlyphFilter.GetOutputPort())
pointsActor.SetMapper(pointsMapper)
pointsActor.GetProperty().SetPointSize(6)
if color == Constants.Colors.RED:
pointsActor.GetProperty().SetColor(1.0, 0.0, 0.0)
elif color == Constants.Colors.GREEN:
pointsActor.GetProperty().SetColor(0.0, 1.0, 0.0)
elif color == Constants.Colors.BLUE:
pointsActor.GetProperty().SetColor(0.0, 0.0, 1.0)
elif color == Constants.Colors.YELLOW:
pointsActor.GetProperty().SetColor(1.0, 1.0, 0.0)
elif color == Constants.Colors.MAGENTA:
pointsActor.GetProperty().SetColor(1.0, 0.0, 1.0)
pointsActor.GetProperty().SetOpacity(0.8)
pointsActor.GetProperty().SetInterpolationToPhong()
# self.all_points_data = pointsData
viewer.GetRenderer().AddActor(pointsActor)
# renderer.GetRenderWindow().PointSmoothingOn()
viewer.UpdateDisplayExtent()
viewer.Render()