cutterActor = vtk.vtkActor() cutterActor.SetMapper(cutterMapper) cutterActor.GetProperty().SetColor(1, 1, 1) # Throw in an outline outline = vtk.vtkOutlineFilter() outline.SetInputData(input) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) # Now create the accelerated version. sCutter = vtk.vtkPlaneCutter() sCutter.SetInputData(input) sCutter.SetPlane(plane) sCutterMapper = vtk.vtkPolyDataMapper() sCutterMapper.SetInputConnection(sCutter.GetOutputPort()) sCutterMapper.ScalarVisibilityOff() sCutterActor = vtk.vtkActor() sCutterActor.SetMapper(sCutterMapper) sCutterActor.GetProperty().SetColor(1, 1, 1) # Now create the accelerated version. snCutter = vtk.vtkPlaneCutter() snCutter.SetInputData(input) snCutter.SetPlane(plane)
cutterActor = vtk.vtkActor() cutterActor.SetMapper(cutterMapper) cutterActor.GetProperty().SetColor(1, 1, 1) # Throw in an outline outline = vtk.vtkOutlineFilter() outline.SetInputConnection(sample.GetOutputPort()) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) # Now create the faster plane cutter pcut = vtk.vtkPlaneCutter() pcut.SetInputConnection(extract.GetOutputPort()) pcut.SetPlane(plane) pcut.BuildTreeOff() pCutterMapper = vtk.vtkPolyDataMapper() pCutterMapper.SetInputConnection(pcut.GetOutputPort()) pCutterActor = vtk.vtkActor() pCutterActor.SetMapper(pCutterMapper) pCutterActor.GetProperty().SetColor(1, 1, 1) # Throw in an outline pOutline = vtk.vtkOutlineFilter() pOutline.SetInputConnection(sample.GetOutputPort())
cutterActor = vtk.vtkActor() cutterActor.SetMapper(cutterMapper) cutterActor.GetProperty().SetColor(1, 1, 1) # Throw in an outline outline = vtk.vtkOutlineFilter() outline.SetInputData(input) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) # Now create the accelerated version. sCutter = vtk.vtkPlaneCutter() sCutter.SetInputData(input) sCutter.SetPlane(plane) sCutterMapper = vtk.vtkCompositePolyDataMapper() sCutterMapper.SetInputConnection(sCutter.GetOutputPort()) sCutterMapper.ScalarVisibilityOff() sCutterActor = vtk.vtkActor() sCutterActor.SetMapper(sCutterMapper) sCutterActor.GetProperty().SetColor(1, 1, 1) # Accelerated cutter without tree snCutter = vtk.vtkPlaneCutter() snCutter.SetInputData(input) snCutter.SetPlane(plane)
def calculate_cross_sections(mesh, graph_verts, graph_edges, calc_centers=True): mesh_polydata = trimesh_to_vtk(mesh.vertices, mesh.faces) cutter = vtk.vtkPlaneCutter() cutter.SetInputData(mesh_polydata) plane = vtk.vtkPlane() cd = vtk.vtkCleanPolyData() cf = vtk.vtkPolyDataConnectivityFilter() cf.SetInputConnection(cd.GetOutputPort()) cf.SetExtractionModeToClosestPointRegion() cutter.SetPlane(plane) cutStrips = vtk.vtkStripper() cutStrips.JoinContiguousSegmentsOn() cutStrips.SetInputConnection(cf.GetOutputPort()) cross_sections = np.zeros(len(graph_edges), dtype=np.float) if calc_centers: centers = np.zeros((len(graph_edges), 3)) massfilter = vtk.vtkMassProperties() massfilter.SetInputConnection(cutter.GetOutputPort()) t = vtk.vtkTriangleFilter() dvs = graph_verts[graph_edges[:, 0], :]-graph_verts[graph_edges[:, 1], :] dvs = (dvs / np.linalg.norm(dvs, axis=1)[:, np.newaxis]) for k, edge in enumerate(graph_edges): dv = dvs[k, :] dv = dv.tolist() v = graph_verts[graph_edges[k, 0], :] v = v.tolist() plane.SetNormal(*dv) plane.SetOrigin(*v) cutter.Update() pd = cutter.GetOutputDataObject(0).GetBlock(0).GetPiece(0) cd.SetInputData(pd) cf.SetClosestPoint(*v) cutStrips.Update() cutPoly = vtk.vtkPolyData() cutPoly.SetPoints(cutStrips.GetOutput().GetPoints()) cutPoly.SetPolys(cutStrips.GetOutput().GetLines()) t.SetInputData(cutPoly) if calc_centers: pts = vtk_to_numpy(cf.GetOutput().GetPoints().GetData()) # centerOfMassFilter = vtk.vtkCenterOfMass() # centerOfMassFilter.SetInputConnection(t.GetOutputPort()) # centerOfMassFilter.Update() centers[k, :] = np.mean(pts, axis=0) massfilter = vtk.vtkMassProperties() massfilter.SetInputConnection(t.GetOutputPort()) massfilter.Update() cross_sections[k] = massfilter.GetSurfaceArea() return cross_sections, centers
cutterActor = vtk.vtkActor() cutterActor.SetMapper(cutterMapper) cutterActor.GetProperty().SetColor(1,1,1) # Throw in an outline outline = vtk.vtkOutlineFilter() outline.SetInputConnection(sample.GetOutputPort()) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) # Accelerated cutter cut = vtk.vtkPlaneCutter() cut.SetInputConnection(extract.GetOutputPort()) cut.SetPlane(plane) cut.ComputeNormalsOff() sCutterMapper = vtk.vtkCompositePolyDataMapper() sCutterMapper.SetInputConnection(cut.GetOutputPort()) sCutterMapper.ScalarVisibilityOff() sCutterActor = vtk.vtkActor() sCutterActor.SetMapper(sCutterMapper) sCutterActor.GetProperty().SetColor(1,1,1) # Accelerated cutter without tree ncut = vtk.vtkPlaneCutter() ncut.SetInputConnection(extract.GetOutputPort())
iren.SetRenderWindow(renWin) inputPDCReader = vtk.vtkIOSSReader() inputPDCReader.SetFileName(VTK_DATA_ROOT + "/Data/can.ex2") inputPDCReader.Update() inputMBDConverter = vtk.vtkConvertToMultiBlockDataSet() inputMBDConverter.SetInputConnection(inputPDCReader.GetOutputPort()) # The cut plane plane = vtk.vtkPlane() plane.SetOrigin(0, 0, 0) plane.SetNormal(1, 1, 1) # Accelerated cutter 0 cut0 = vtk.vtkPlaneCutter() cut0.SetInputConnection(inputMBDConverter.GetOutputPort()) cut0.SetPlane(plane) cut0.ComputeNormalsOff() sCutterMapper0 = vtk.vtkCompositePolyDataMapper2() sCutterMapper0.SetInputConnection(cut0.GetOutputPort()) sCutterMapper0.ScalarVisibilityOff() sCutterActor0 = vtk.vtkActor() sCutterActor0.SetMapper(sCutterMapper0) sCutterActor0.GetProperty().SetColor(1, 1, 1) # Accelerated cutter 1 cut1 = vtk.vtkPlaneCutter() cut1.SetInputConnection(inputPDCReader.GetOutputPort())
plane = vtk.vtkPlane() plane.SetOrigin(source.GetOrigin()) plane.SetNormal(source.GetNormal()) if not (fast): # vtkPlaneCutter is faster cutEdges = vtk.vtkCutter() cutEdges.SetInputConnection(vesselNormals.GetOutputPort()) cutEdges.SetCutFunction(plane) cutEdges.GenerateCutScalarsOff() # Was on cutEdges.SetValue(0, 0.5) cutEdges.Update() else: # TODO Add tube filter cutEdges = vtk.vtkPlaneCutter() cutEdges.SetPlane(plane) cutEdges.SetComputeNormals(1) cutEdges.SetInputConnection(reader.GetOutputPort()) cutEdges.Update() sCutterMapper = vtk.vtkCompositePolyDataMapper() sCutterMapper.SetInputConnection(cutEdges.GetOutputPort()) sCutterMapper.ScalarVisibilityOff() sCutterActor = vtk.vtkActor() sCutterActor.SetMapper(sCutterMapper) # vtkPointLocator and get surface contour cutStrips = vtk.vtkStripper()