def updateGlyph(self, item): self.vtk_widget.interactor.Disable() axes = item.itemData[4] if axes is not None: if item.isSource(): newColorX = colors.GetColor3d('darkslategray') newColorY = colors.GetColor3d('darkslategray') newColorZ = colors.GetColor3d('darkslategray') elif item.isDest(): newColorX = colors.GetColor3d('lightslategray') newColorY = colors.GetColor3d('lightslategray') newColorZ = colors.GetColor3d('lightslategray') else: newColorX = vtk.vtkColor3d(1.0, 0.0, 0.0) newColorY = vtk.vtkColor3d(0.0, 1.0, 0.0) newColorZ = vtk.vtkColor3d(0.0, 0.0, 1.0) axes.GetXAxisShaftProperty().SetColor(newColorX) axes.GetYAxisShaftProperty().SetColor(newColorY) axes.GetZAxisShaftProperty().SetColor(newColorZ) axes.GetXAxisTipProperty().SetColor(newColorX) axes.GetYAxisTipProperty().SetColor(newColorY) axes.GetZAxisTipProperty().SetColor(newColorZ) self.vtk_widget.interactor.Enable() self.vtk_widget.render_window.Render()
def loadSurface(self, fileName, index=0): reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(fileName) reader.Update() # Take the largest connected component connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() normals = vtk.vtkPolyDataNormals() normals.SetInputConnection(connectFilter.GetOutputPort()) # 3D viewer # Mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(normals.GetOutputPort()) # Actor for vessels actor = vtk.vtkActor() actor.SetMapper(mapper) prop = actor.GetProperty() if index == 0: # Veins prop.SetColor(vtk.vtkColor3d(hexCol("#517487"))) # 25% lighter else: # Liver prop.SetColor(vtk.vtkColor3d(hexCol("#873927"))) self.vessels = actor # Assign actor to the renderer prop.SetOpacity(0.35) self.viewer3D.planeWidgets[0].GetDefaultRenderer().AddActor(actor) # 2D Views polyData = normals.GetOutput() self.appendFilter.AddInputData(polyData) self.appendFilter.Update() # TODO: Make this work if read before US for i in range(self.stackCT.count()): self.stackCT.widget(i).InitializeContours(self.appendFilter, color=pink) for i in range(len(self.viewUS)): self.viewUS[i].InitializeContours(self.appendFilter) # TODO: Assign instead product of two identity matrices self.viewUS[i].SetTransform(self.alignment) if self.vessels is not None: self.vessels.SetUserTransform(self.misAlignment) self.Render()
def loadSurface(self, fileName): reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(fileName) reader.Update() # Take the largest connected component connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() self.vesselPolyData = connectFilter.GetOutput() # Compute normals self.vesselNormals = vtk.vtkPolyDataNormals() self.vesselNormals.SetInputData(self.vesselPolyData) # Mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(self.vesselNormals.GetOutputPort()) # Actor for vessels self.vessels = vtk.vtkActor() self.vessels.SetMapper(mapper) prop = self.vessels.GetProperty() prop.SetColor(vtk.vtkColor3d(hexCol("#517487"))) # 25% lighter # Assign actor to the renderer prop.SetOpacity(0.35) self.planeWidget[0].GetDefaultRenderer().AddActor(self.vessels) for i in range(3): self.vtk_widgets[i].InitializeContour(self.vesselNormals) self.Render()
def loadSurface(fname): reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(fileName) reader.Update() # Take the largest connected component connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() normals = vtk.vtkPolyDataNormals() normals.SetInputConnection(connectFilter.GetOutputPort()) normals.Update() pd = normals.GetOutput() com = vtk.vtkCenterOfMass() com.SetInputData(pd) com.SetUseScalarsAsWeights(False) com.Update() center = com.GetCenter() # Mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(normals.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) prop = actor.GetProperty() prop.SetColor(vtk.vtkColor3d(hexCol("#873927"))) # Assign actor to the renderer prop.SetOpacity(0.35) return actor, center
def initVessels(self): qDebug('initVessels()') if os.name == 'nt': filename = os.path.join(filedir, '../../data/Abdomen/Connected.vtp') if IOUSFAN: #filename = 'e:/analogic/TrialVTK/data/VesselMeshData.vtk' filename = 'e:/analogic/TrialVTK/data/LiverVesselMeshData.vtk' else: filename = '/home/jmh/bkmedical/data/CT/Connected.vtp' # read data if IOUSFAN: reader = vtk.vtkGenericDataObjectReader() else: reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(filename) reader.Update() connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() self.vesselPolyData = self.scale(connectFilter.GetOutput()) # compute normals self.vesselNormals = vtk.vtkPolyDataNormals() self.vesselNormals.SetInputData(self.vesselPolyData) # mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(self.vesselNormals.GetOutputPort()) # actor for vessels self.vessels = vtk.vtkActor() self.vessels.SetMapper(mapper) prop = self.vessels.GetProperty() if self.brighter25: prop.SetColor(vtk.vtkColor3d(hexCol("#517487"))) # 25% lighter else: prop.SetColor(vtk.vtkColor3d(hexCol("#415d6c"))) # assign actor to the renderer self.renderer.AddActor(self.vessels)
def initLiver(self): qDebug('initLiver()') if os.name == 'nt': filename = os.path.join( filedir, '../../data/Abdomen/Liver_3D-interpolation.vtp') if IOUSFAN: filename = 'e:/analogic/TrialVTK/data/segmented_liver_ITK_snap.vtk' else: filename = '/home/jmh/bkmedical/data/CT/Liver_3D-interpolation.vtp' if IOUSFAN: reader = vtk.vtkGenericDataObjectReader() else: reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(filename) reader.Update() connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() surfNormals = vtk.vtkPolyDataNormals() surfNormals.SetInputData(self.scale(connectFilter.GetOutput())) #Create a mapper and actor mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(surfNormals.GetOutputPort()) # was reader self.liver = vtk.vtkActor() self.liver.SetMapper(mapper) prop = self.liver.GetProperty() if self.brighter25: prop.SetColor(vtk.vtkColor3d(hexCol("#873927"))) else: prop.SetColor(vtk.vtkColor3d(hexCol("#6c2e1f"))) prop.SetOpacity(self.opacity) self.renderer.AddActor(self.liver)
def loadSurface(self, fileName, contours=True): reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(fileName) reader.Update() # Take the largest connected component connectFilter = vtk.vtkPolyDataConnectivityFilter() connectFilter.SetInputConnection(reader.GetOutputPort()) connectFilter.SetExtractionModeToLargestRegion() connectFilter.Update() vesselPolyData = connectFilter.GetOutput() self.appendFilter.AddInputData(vesselPolyData) self.appendFilter.Update() # Disable interactor, remove actors, normals, initialize contours, # Compute normals self.vesselNormals = vtk.vtkPolyDataNormals() self.vesselNormals.SetInputData(vesselPolyData) # Mapper mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(self.vesselNormals.GetOutputPort()) # Actor for vessels self.vessels = vtk.vtkActor() self.vessels.SetMapper(mapper) prop = self.vessels.GetProperty() prop.SetColor(vtk.vtkColor3d(hexCol("#517487"))) # 25% lighter # Assign actor to the renderer prop.SetOpacity(0.35) self.viewer3D.planeWidgets[0].GetDefaultRenderer().AddActor( self.vessels) # TODO: Make this work if read before US if contours: for i in range(self.stackCT.count()): self.stackCT.widget(i).InitializeContour(self.vesselNormals, color=red) for i in range(len(self.viewUS)): self.viewUS[i].InitializeContour(self.vesselNormals) self.Render()
readerLiver.SetFileName(fileLiver) readerLiver.Update() surfNormals = vtk.vtkPolyDataNormals() surfNormals.SetInputConnection(readerLiver.GetOutputPort()) #Create a mapper and actor mapperLiver = vtk.vtkPolyDataMapper() mapperLiver.SetInputConnection(surfNormals.GetOutputPort()) # was readerLiver actorLiver = vtk.vtkActor() actorLiver.SetMapper(mapperLiver) prop = actorLiver.GetProperty() #prop.SetColor(colors.GetColor3d("Purple")) #prop.SetColor(vtk.vtkColor3d(hexCol("#6c2e1f"))) prop.SetColor(vtk.vtkColor3d(hexCol("#873927"))) # (25% lighter) prop.SetOpacity(0.25) # read data reader = vtk.vtkXMLPolyDataReader() reader.SetFileName(filename) reader.Update() vesselPolyData = reader.GetOutput() # compute normals vesselNormals = vtk.vtkPolyDataNormals() vesselNormals.SetInputConnection(reader.GetOutputPort()) # mapper mapper = vtk.vtkPolyDataMapper()