how to display model in red viewer

classic Classic list List threaded Threaded
1 message Options
mag
Reply | Threaded
Open this post in threaded view
|

how to display model in red viewer

mag
This post has NOT been accepted by the mailing list yet.
Hi,

I am trying to draw a polygon on the axial viewer given the coordinates of some fiducial points. I am using a model created from a polydata object so I can easily export it for my analysis.
I used this code in a scripted module and the polygon is correctly displayed in the 3D view but I don't know how to display it in the red view as well, which is what I need. Is that possible?
I've attached a screenshot at the end.

fidList = slicer.util.getNode('F')
if not fidList:
    print "No points found"
    return
numFids = fidList.GetNumberOfFiducials()

# Setup points
points = vtk.vtkPoints()
#Setup polygon
polygon = vtk.vtkPolygon()
polygon.GetPointIds().SetNumberOfIds(numFids)

points_coords = []
for i in range(numFids):
    fid_ras_coord = [0, 0, 0]
    fidList.GetNthFiducialPosition(i, fid_ras_coord)
    points.InsertNextPoint(fid_ras_coord)
    polygon.GetPointIds().SetId(i, i)
    points_coords.append(fid_ras_coord)

# Add the polygon to a list of polygons
polygons = vtk.vtkCellArray()
polygons.InsertNextCell(polygon)
# Create PolyData
polygonPolyData = vtk.vtkPolyData()
polygonPolyData.SetPoints(points)
polygonPolyData.SetPolys(polygons)

model = slicer.vtkMRMLModelNode()
model.SetAndObservePolyData(polygonPolyData)
modelDisplay = slicer.vtkMRMLModelDisplayNode()

modelDisplay.SetColor(1, 1, 0)
modelDisplay.BackfaceCullingOff()
modelDisplay.SetOpacity(0.5)
modelDisplay.SetPointSize(3)

modelDisplay.SetSliceIntersectionVisibility(True)  
modelDisplay.SetVisibility(True)  
slicer.mrmlScene.AddNode(modelDisplay)
model.SetAndObserveDisplayNodeID(modelDisplay.GetID())
modelDisplay.SetInputPolyDataConnection(model.GetPolyDataConnection())
slicer.mrmlScene.AddNode(model)

screenshot of the viewers