def __init__(self): floor_mapper = vtk.vtkPolyDataMapper() floor_mapper.SetInputData(vtk.vtkPolyData()) self.floor_actor = vtk.vtkActor() self.floor_actor.SetMapper(floor_mapper) car_mapper = vtk.vtkPolyDataMapper() car_mapper.SetInputData(vtk.vtkPolyData()) self.car_actor = vtk.vtkActor() self.car_actor.SetMapper(car_mapper)
def __init__(self, renderer): # Renderer variable is needed to add the cone actor self.__renderer = renderer self.__cone = vtkConeSource() self.__cone_mapper = vtkPolyDataMapper() self.__cone_actor = vtkActor()
def __init__(self, renderer): # Renderer variable is needed to add the actor self.__renderer = renderer self.__reader = vtkSLCReader() self.__extract_voi = vtkExtractVOI() self.__contour_filter = vtkContourFilter() self.__mapper = vtkPolyDataMapper() self.__property = vtkProperty() self.__actor = vtkActor() self.__outline_filter = vtkOutlineFilter() self.__outline_mapper = vtkPolyDataMapper() self.__outline_property = vtkProperty() self.__outline_actor = vtkActor()
def __init__(self, renderer): self.__renderer = renderer self.__reader = vtkPolyDataReader() self.__mapper = vtkPolyDataMapper() self.__actor = vtkActor() self.__property = vtkProperty() self.__geometry_filter = vtkGeometryFilter()
def __skin_renderer(renderer): __reader = vtkVolume16Reader() __reader.SetDataDimensions(64, 64) __reader.SetImageRange(1, 93) __reader.SetDataByteOrderToLittleEndian() __reader.SetFilePrefix("objfiles/headsq/quarter") __reader.SetDataSpacing(3.2, 3.2, 1.5) __contourfilter = vtkContourFilter() __contourfilter.SetInputConnection(__reader.GetOutputPort()) #__contourfilter.SetValue(0, 1150) __contourfilter.SetValue(1, 500) __mapper = vtkPolyDataMapper() __mapper.SetInputConnection(__contourfilter.GetOutputPort()) __mapper.ScalarVisibilityOff() __prop = vtkProperty() __prop.SetDiffuseColor(1, 0.8, 0.4) __prop.SetDiffuse(1) __prop.SetOpacity(0.2) __actor = vtkActor() __actor.SetMapper(__mapper) __actor.SetProperty(__prop) renderer.AddActor(__actor)
def __init__(self, renderer): self.__renderer = renderer self.__mapper = vtkPolyDataMapper() self.__filter = vtkContourFilter() self.__reader = vtkStructuredGridReader() self.__actor = vtkActor() self.__property = vtkProperty()
def __init__(self, max_num_pts=1e24): self.max_num_pts = max_num_pts self.pd = vtk.vtkPolyData() self.clear_points() mapper = vtk.vtkPolyDataMapper() self.actor = vtk.vtkActor() self.actor.SetMapper(mapper)
def __init__(self, renderer): # Renderer variable is needed to add the actor self.__renderer = renderer self.__reader = vtkStructuredPointsReader() self.__property = vtkProperty() self.__geometry_filter = vtkGeometryFilter() self.__mapper = vtkPolyDataMapper() self.__actor = vtkActor()
def __init__(self, windowrenderer): #Renderer self.__renderer = windowrenderer #vtk import variables self.__plane = vtkPlaneSource() self.__reader = vtkBMPReader() self.__texture = vtkTexture() self.__mapper = vtkPolyDataMapper() self.__actor = vtkActor()
def __init__(self, color, width): self._color = color # LINE self._points = all.vtkPoints() self._lines = all.vtkCellArray() self._line = all.vtkLine() poly = all.vtkPolyData() poly.SetPoints(self._points) poly.SetLines(self._lines) mapper = all.vtkPolyDataMapper() mapper.SetInputData(poly) self.actor = all.vtkActor() self.actor.SetMapper(mapper) self.actor.GetProperty().SetLineWidth(width) self.actor.GetProperty().SetColor(color)
def __init__(self): append_poly = vtk.vtkAppendPolyData() reader1 = vtk.vtkSTLReader() reader1.SetFileName(file1) reader1.Update() reader2 = vtk.vtkSTLReader() reader2.SetFileName(file2) reader2.Update() mapper1 = vtk.vtkPolyDataMapper() mapper1.SetInputData(vtk.vtkPolyData()) mapper2 = vtk.vtkPolyDataMapper() mapper2.SetInputData(vtk.vtkPolyData()) actor1 = vtk.vtkActor() actor1.SetMapper(mapper1) actor2 = vtk.vtkActor() actor2.SetMapper(mapper2) actor1.GetMapper().SetInputData(reader1.GetOutput()) actor2.GetMapper().SetInputData(reader2.GetOutput()) h_center = actor2.GetCenter() c_center = actor1.GetCenter() c_h = actor1.GetBounds()[2] x = h_center[0] - c_center[0] y = 0.07 - c_h z = h_center[2] - c_center[2] actor1.SetPosition(x, y, z) # append_poly.AddInputData(reader1.GetOutput()) # append_poly.AddInputData(reader2.GetOutput()) # reader1.FastDelete() # reader2.FastDelete() render = vtk.vtkRenderer() ren_win = vtk.vtkRenderWindow() ren_win.AddRenderer(render) ren_win.SetSize(2000, 2000) i_ren = vtk.vtkRenderWindowInteractor() i_ren.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera()) i_ren.SetRenderWindow(ren_win) actor_list = [actor1, actor2] for actor in actor_list: position = list(actor.GetPosition()) actor.SetPosition(position[0], position[1], position[2]) mapper = actor.GetMapper() poly = mapper.GetInput() if position != (0, 0, 0): points = poly.GetPoints() sum_pts = points.GetNumberOfPoints() for x in range(sum_pts): pos_point = list(points.GetPoint(x)) for y in range(3): pos_point[y] += position[y] points.SetPoint(x, pos_point) append_poly.AddInputData(poly) append_poly.Update() mapper = vtk.vtkPolyDataMapper() mapper.SetInputData(append_poly.GetOutput()) actor = vtk.vtkActor() actor.SetMapper(mapper) render.AddActor(actor) ren_win.Render() i_ren.Start()
def __init__(self, renderer): self.__renderer = renderer self.__cylinder = vtkCylinderSource() self.__cyl_mapper = vtkPolyDataMapper() self.__cyl_actor = vtkActor()
def utils_view_3D(path): class KeyPressInteractorStyle(vtk.vtkInteractorStyleTrackballCamera): def __init__(self, parent=None): self.parent = vtk.vtkRenderWindowInteractor() if (parent is not None): self.parent = parent self.AddObserver("KeyPressEvent", self.keyPress) def keyPress(self, obj, event): key = self.parent.GetKeySym() if key == 'Up': gradtfun.AddPoint(-100, 1.0) gradtfun.AddPoint(10, 1.0) gradtfun.AddPoint(20, 1.0) volumeProperty.SetGradientOpacity(gradtfun) # 下面这一行是关键,实现了actor的更新 renWin.Render() if key == 'Down': tfun.AddPoint(1129, 0) tfun.AddPoint(1300.0, 0.1) tfun.AddPoint(1600.0, 0.2) tfun.AddPoint(2000.0, 0.1) tfun.AddPoint(2200.0, 0.1) tfun.AddPoint(2500.0, 0.1) tfun.AddPoint(2800.0, 0.1) tfun.AddPoint(3000.0, 0.1) # 下面这一行是关键,实现了actor的更新 renWin.Render() def StartInteraction(): renWin.SetDesiredUpdateRate(10) def EndInteraction(): renWin.SetDesiredUpdateRate(0.001) def ClipVolumeRender(obj): obj.GetPlanes(planes) volumeMapper.SetClippingPlanes(planes) ds = sitk.ReadImage(path) data = sitk.GetArrayFromImage(ds) spacing = ds.GetSpacing() srange = [np.min(data), np.max(data)] img_arr = vtkImageImportFromArray() img_arr.SetArray(data) img_arr.SetDataSpacing(spacing) origin = (0, 0, 0) img_arr.SetDataOrigin(origin) # 设置vtk数据的坐标系原点 img_arr.Update() ren = vtk.vtkRenderer() renWin = vtk.vtkRenderWindow() renWin.AddRenderer(ren) # 把一个空的渲染器添加到一个空的窗口上 renWin.AddRenderer(ren) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) # 把上面那个窗口加入交互操作 iren.SetInteractorStyle( KeyPressInteractorStyle(parent=iren)) # 在交互操作里面添加这个自定义的操作例如up,down min = srange[0] max = srange[1] diff = max - min inter = 4200 / diff shift = -min shifter = vtk.vtkImageShiftScale() # 对偏移和比例参数来对图像数据进行操作 数据转换,之后直接调用shifter shifter.SetShift(shift) shifter.SetScale(inter) shifter.SetOutputScalarTypeToUnsignedShort() shifter.SetInputData(img_arr.GetOutput()) shifter.ReleaseDataFlagOff() shifter.Update() tfun = vtk.vtkPiecewiseFunction() # 不透明度传输函数---放在tfun tfun.AddPoint(1600, 0) tfun.AddPoint(2200.0, 0.3) tfun.AddPoint(2500.0, 0.1) tfun.AddPoint(3000.0, 0.5) gradtfun = vtk.vtkPiecewiseFunction() # 梯度不透明度函数---放在gradtfun gradtfun.AddPoint(10, 0) gradtfun.AddPoint(90, 0.5) gradtfun.AddPoint(100, 1.0) ctfun = vtk.vtkColorTransferFunction() # 颜色传输函数---放在ctfun ctfun.AddRGBPoint(0.0, 0.1, 0.0, 0.0) ctfun.AddRGBPoint(1280.0, 0.5, 0.2, 0.3) ctfun.AddRGBPoint(2200.0, 0.9, 0.2, 0.3) ctfun.AddRGBPoint(3024.0, 0.5, 0.5, 0.5) volumeMapper = vtk.vtkGPUVolumeRayCastMapper() volumeMapper.SetInputData(shifter.GetOutput()) volumeProperty = vtk.vtkVolumeProperty() volumeProperty.SetColor(ctfun) volumeProperty.SetScalarOpacity(tfun) volumeProperty.SetGradientOpacity(gradtfun) volumeProperty.SetInterpolationTypeToLinear() volumeProperty.ShadeOn() newvol = vtk.vtkVolume() newvol.SetMapper(volumeMapper) newvol.SetProperty(volumeProperty) outline = vtk.vtkOutlineFilter() outline.SetInputConnection(shifter.GetOutputPort()) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) ren.AddActor(outlineActor) ren.AddVolume(newvol) ren.SetBackground(0, 0, 0) renWin.SetSize(600, 600) planes = vtk.vtkPlanes() boxWidget = vtk.vtkBoxWidget() boxWidget.SetInteractor(iren) boxWidget.SetPlaceFactor(1.0) boxWidget.PlaceWidget(0, 0, 0, 0, 0, 0) boxWidget.InsideOutOn() boxWidget.AddObserver("StartInteractionEvent", StartInteraction) boxWidget.AddObserver("InteractionEvent", ClipVolumeRender) boxWidget.AddObserver("EndInteractionEvent", EndInteraction) outlineProperty = boxWidget.GetOutlineProperty() outlineProperty.SetRepresentationToWireframe() outlineProperty.SetAmbient(1.0) outlineProperty.SetAmbientColor(1, 1, 1) outlineProperty.SetLineWidth(9) selectedOutlineProperty = boxWidget.GetSelectedOutlineProperty() selectedOutlineProperty.SetRepresentationToWireframe() selectedOutlineProperty.SetAmbient(1.0) selectedOutlineProperty.SetAmbientColor(1, 0, 0) selectedOutlineProperty.SetLineWidth(3) ren.ResetCamera() iren.Initialize() renWin.Render() iren.Start()
teta = GetAngleBetweenPoints([x, y], [0, 0], [xo, yo]) print(teta) transfo.RotateWXYZ(+(teta), 0, 0, 1) # angle Y teta = GetAngleBetweenPoints([x, z], [0, 0], [xo, zo]) print(teta) transfo.RotateWXYZ(+(teta), 0, 1, 0) transfo.Translate(x, y, z) filter = vtk.vtkTransformPolyDataFilter() filter.SetInputConnection(textSource.GetOutputPort()) filter.SetTransform(transfo) filter.Update() # Create a mapper and actor mapper = vtk.vtkPolyDataMapper() mapper.SetInputConnection(filter.GetOutputPort()) actor = vtk.vtkActor() actor.SetMapper(mapper) actor.GetProperty().SetColor(1.0, 0.0, 0.0) # Create a renderer, render window, and interactor renderer = vtk.vtkRenderer() renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindowInteractor = vtk.vtkRenderWindowInteractor() renderWindowInteractor.SetRenderWindow(renderWindow) renderer.AddActor(actor) renderer.AddActor(vtk.vtkAxesActor())
def __init__(self, renderer): self.__renderer = renderer self.__mapper = vtkPolyDataMapper() self.__lookup_table = vtkLookupTable() self.__property = vtkProperty() self.__actor = vtkActor()
def kneeinner(renderer, zoomlevel, opacity, color): reader = vtkSLCReader() extracter = vtkExtractVOI() contourfilter = vtkContourFilter() mapper = vtkPolyDataMapper() property = vtkProperty() actor = vtkActor() outline_filter = vtkOutlineFilter() outline_mapper = vtkPolyDataMapper() outline_property = vtkProperty() outline_actor = vtkActor() reader.SetFileName("objfiles/vw_knee.slc") reader.Update() # Extract volume of interest to subsample the data for faster rendering extracter.SetInputConnection(reader.GetOutputPort()) extracter.SetSampleRate(3, 1, 1) # Set contour filter contourfilter.SetInputConnection(extracter.GetOutputPort()) contourfilter.SetValue(0, zoomlevel) # Clipping 1 clipper = vtkClipPolyData() clipper.SetGenerateClipScalars(0) sphere = vtkSphere() sphere.SetRadius(110) sphere.SetCenter((74.8305, 89.2905, 275)) print(sphere.GetCenter()) print(reader.GetOutput().GetCenter()) clipper.SetInputConnection(contourfilter.GetOutputPort()) clipper.SetClipFunction(sphere) clipper.Update() #clipping 2 clipper2 = vtkClipPolyData() clipper2.SetGenerateClipScalars(0) sphere2 = vtkSphere() sphere2.SetRadius(100) sphere2.SetCenter((74.8305, 89.2905, -20)) clipper2.SetInputConnection(clipper.GetOutputPort()) clipper2.SetClipFunction(sphere2) clipper2.Update() mapper.SetInputConnection(clipper2.GetOutputPort()) mapper.ScalarVisibilityOff() # Set property property.SetColor(color) property.SetOpacity(opacity) # Set actor actor.SetMapper(mapper) actor.SetProperty(property) # Set outline filter outline_filter.SetInputConnection(extracter.GetOutputPort()) # Set outline mapper outline_mapper.SetInputConnection(outline_filter.GetOutputPort()) # Set property outline_property.SetColor(0.2, 0.2, 0.2) # Set outline actor outline_actor.SetMapper(outline_mapper) outline_actor.SetProperty(outline_property) # Add actor to the window renderer renderer.AddActor(actor) renderer.AddActor(outline_actor)
volumeMapper.SetInputData(shifter.GetOutput()) # 向映射器中输入数据:shifter(预处理之后的数据) volumeProperty = vtk.vtkVolumeProperty() # 创建vtk属性存放器,向属性存放器中存放颜色和透明度 volumeProperty.SetColor(ctfun) volumeProperty.SetScalarOpacity(tfun) volumeProperty.SetGradientOpacity(gradtfun) volumeProperty.SetInterpolationTypeToLinear() # ??? volumeProperty.ShadeOn() newvol = vtk.vtkVolume() # 演员 newvol.SetMapper(volumeMapper) newvol.SetProperty(volumeProperty) outline = vtk.vtkOutlineFilter() outline.SetInputConnection(shifter.GetOutputPort()) outlineMapper = vtk.vtkPolyDataMapper() outlineMapper.SetInputConnection(outline.GetOutputPort()) outlineActor = vtk.vtkActor() outlineActor.SetMapper(outlineMapper) ren.AddActor(outlineActor) ren.AddVolume(newvol) ren.SetBackground(0, 0, 0) renWin.SetSize(600, 600) planes = vtk.vtkPlanes() boxWidget = vtk.vtkBoxWidget() boxWidget.SetInteractor(iren) boxWidget.SetPlaceFactor(1.0)
def __init__(self, renderer): self.__renderer = renderer self.__vtkOBJReader = vtkOBJReader() self.__objMapper = vtkPolyDataMapper() self.__objActor = vtkActor()
from vtkmodules import all as vtk import os print(os.getcwd()) cone = vtk.vtkConeSource() cone_mapper = vtk.vtkPolyDataMapper() cone_mapper.SetInputConnection(cone.GetOutputPort()) cone_actor = vtk.vtkActor() cone_actor.SetMapper(cone_mapper) stl_actor = vtk.vtkActor() stl_mapper = vtk.vtkPolyDataMapper() stl_actor.SetMapper(stl_mapper) stl = vtk.vtkSTLReader() stl.SetFileName('Arm.stl') stl_mapper.SetInputConnection(stl.GetOutputPort()) stl.Update() ren = vtk.vtkRenderer() ren.AddActor(cone_actor) ren.AddActor(stl_actor) ren.SetBackground(0.5, 0.2, 0.7) ren_win = vtk.vtkRenderWindow() ren_win.AddRenderer(ren) ren_win.SetSize(1000, 1000) ren_win.Render() i_ren = vtk.vtkRenderWindowInteractor() i_ren.SetRenderWindow(ren_win)
def __init__(self): stl_writer = vtk.vtkSTLWriter() append_poly = vtk.vtkAppendPolyData() reader1 = vtk.vtkSTLReader() reader1.SetFileName(file1) reader1.Update() reader2 = vtk.vtkSTLReader() reader2.SetFileName(file2) reader2.Update() mapper1 = vtk.vtkPolyDataMapper() mapper1.SetInputData(vtk.vtkPolyData()) mapper2 = vtk.vtkPolyDataMapper() mapper2.SetInputData(vtk.vtkPolyData()) actor1 = vtk.vtkActor() actor1.SetMapper(mapper1) actor2 = vtk.vtkActor() actor2.SetMapper(mapper2) actor1.GetMapper().SetInputData(reader1.GetOutput()) actor2.GetMapper().SetInputData(reader2.GetOutput()) h_center = actor2.GetCenter() c_center = actor1.GetCenter() c_h = actor1.GetBounds()[2] x = h_center[0] - c_center[0] y = 0.07 - c_h z = h_center[2] - c_center[2] actor1.SetPosition(x, y, z) # append_poly.AddInputData(reader1.GetOutput()) # append_poly.AddInputData(reader2.GetOutput()) reader1.FastDelete() reader2.FastDelete() render = vtk.vtkRenderer() ren_win = vtk.vtkRenderWindow() ren_win.AddRenderer(render) ren_win.SetSize(2000, 2000) i_ren = vtk.vtkRenderWindowInteractor() i_ren.SetInteractorStyle(vtk.vtkInteractorStyleMultiTouchCamera()) i_ren.SetRenderWindow(ren_win) render.AddActor(actor1) render.AddActor(actor2) ren_win.Render() actors = render.GetActors() actor_items = actors.GetNumberOfItems() actors.InitTraversal() for i in range(actor_items): actor = actors.GetNextActor() position = list(actor.GetPosition()) actor.SetPosition(position[0], position[1], position[2]) mapper = actor.GetMapper() poly = mapper.GetInput() if position != (0, 0, 0): # 如果发生平移则把每个点的坐标都做一下平移 points = poly.GetPoints() sum_pts = points.GetNumberOfPoints() for x in range(sum_pts): pos_point = list(points.GetPoint(x)) for y in range(3): pos_point[y] += position[y] points.SetPoint(x, pos_point) append_poly.AddInputData(poly) append_poly.Update() filter = vtk.vtkTriangleFilter() filter.SetInputConnection(append_poly.GetOutputPort()) stl_writer.SetFileName('STL/1.stl') stl_writer.SetInputConnection(filter.GetOutputPort()) stl_writer.Update() stl_writer.Write() i_ren.Start()
def __init__(self, renderer): self.__renderer = renderer self.__text = vtkTextSource() self.__poly_mapper = vtkPolyDataMapper() self.__vtkactor = vtkActor()