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): self.__renderer = renderer self.__reader = vtkPolyDataReader() self.__mapper = vtkPolyDataMapper() self.__actor = vtkActor() self.__property = vtkProperty() self.__geometry_filter = vtkGeometryFilter()
def __init__(self, renderer): self.__renderer = renderer self.__reader = vtkStructuredGridReader() self.__mapper = vtkDataSetMapper() self.__lookup_table = vtkLookupTable() self.__property = vtkProperty() self.__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.__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): """"init setting up variables""" self.__renderer = renderer self.__gridReader = vtkUnstructuredGridReader() self.__mapper = vtkDataSetMapper() self.__property = vtkProperty() self.__actor = vtkActor()
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 __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): # 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, renderer): self.__renderer = renderer self.__reader = vtkStructuredGridReader() self.__mapper = vtkDataSetMapper() self.__lookup_table = vtkLookupTable() self.__property = vtkProperty() self.__actor = vtkActor() self.__points = vtkPointSource() self.__rungeKutta = vtkRungeKutta4() self.__streamer = vtkStreamTracer()
def __init__(self, pos, size, color): # POINT self.points = all.vtkPoints() poly = all.vtkPolyData() poly.SetPoints(self.points) mapper = all.vtkPointGaussianMapper() mapper.SetInputData(poly) mapper.EmissiveOff() mapper.SetScaleFactor(0.0) self.actor = all.vtkActor() self.actor.SetMapper(mapper) self.actor.GetProperty().SetPointSize(size) self.actor.GetProperty().SetColor(color)
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, size=3, opacity=1): # POINTS self._points = all.vtkPoints() self._poly = all.vtkPolyData() self._poly.SetPoints(self._points) mapper = all.vtkPointGaussianMapper() mapper.SetInputData(self._poly) mapper.EmissiveOff() mapper.SetScaleFactor(0.0) self.actor = all.vtkActor() self.actor.SetMapper(mapper) self.actor.GetProperty().SetPointSize(size) self.actor.GetProperty().SetOpacity(opacity) # COLOR self._color_array = all.vtkUnsignedCharArray() self._color_array.SetNumberOfComponents(3)
def DrawDelaunay3D(data: DB.VolumeData, n: int): """ 从规则网格数据data中随机抽取n个点组成非结构化网格数据,然后进行Delaunay三角剖分,绘制出四面体网格 :param data:体数据 :param n:抽取的散乱点个数 :return: """ # unstructuredDataSet = data.RandomUnstructuredDataSet(n) # unstructuredDataSet = unstructuredDataSet[:, 0:3] # # points = vtk.vtkPoints() # points.SetData(numpy2vtk(num_array=unstructuredDataSet, deep=True)) # # polyData = vtk.vtkPolyData() # polyData.SetPoints(points) # 生成一个UnstructuredGrid uGrid = data.GenTetraUnstructuredGrid(n) # uGrid = data.ExtractVoxelsToUnstructuredGrid(n) # 抽取体素 delaunay3d = vtk.vtkDelaunay3D() delaunay3d.SetInputData(uGrid) delaunay3d.Update() # uGrid = vtk.vtkUnstructuredGrid() # uGrid = delaunay3d.GetOutput() dataSetMapper = vtk.vtkDataSetMapper() # dataSetMapper.SetInputConnection(delaunay3d.GetOutputPort()) dataSetMapper.SetInputData(delaunay3d.GetOutput()) dataSetMapper.Update() actor = vtk.vtkActor() actor.SetMapper(dataSetMapper) actor.GetProperty().SetColor(0.5, 0.5, 0.5) actor.GetProperty().EdgeVisibilityOn() # 文本显示actor textActor = vtk.vtkTextActor() textActor.SetInput("points count:" + str(uGrid.GetPoints().GetNumberOfPoints())) textActor.SetDisplayPosition(20, 30) textProp = textActor.GetTextProperty() textProp.BoldOn() textProp.SetFontSize(50) textProp.ShadowOn() textProp.SetColor(0, 0, 0) renderer = vtk.vtkRenderer() renderer.AddActor(actor) renderer.AddActor(textActor) renderer.SetBackground(0.9, 0.9, 0.9) renderWindow = vtk.vtkRenderWindow() renderWindow.AddRenderer(renderer) renderWindow.SetSize(3000, 3000) itr = vtk.vtkRenderWindowInteractor() itr.SetRenderWindow(renderWindow) renderWindow.Render() itr.Initialize() itr.Start()
def __init__(self, renderer): self.__renderer = renderer self.__text = vtkTextSource() self.__poly_mapper = vtkPolyDataMapper() self.__vtkactor = vtkActor()
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 DrawVTKMarshingCubes(data: DB.VolumeData, t): # # 1. 读取数据 # cube = vtk.vtkCubeSource() # cube.Update() # 记得加这句不加看不到模型 # # 2. 建图(将点拼接成立方体) # cube_mapper = vtk.vtkPolyDataMapper() # cube_mapper.SetInputData(cube.GetOutput()) # # 3. 根据2创建执行单元 # cube_actor = vtk.vtkActor() # cube_actor.SetMapper(cube_mapper) # # cube_actor.GetProperty().SetColor(1.0, 0.0, 0.0) # # 4. 渲染(将执行单元和背景组合在一起按照某个视角绘制) # renderer = vtk.vtkRenderer() # renderer.SetBackground(0.0, 0.0, 0.0) # 背景只有一个所以是Set() # renderer.AddActor(cube_actor) # 因为actor有可能为多个所以是add() # # # 5. 显示渲染窗口 # render_window = vtk.vtkRenderWindow() # render_window.SetWindowName("My First Cube") # render_window.SetSize(400, 400) # render_window.AddRenderer(renderer) # 渲染也会有可能有多个渲染把他们一起显示 # # 6. 创建交互控键(可以用鼠标拖来拖去看三维模型) # interactor = vtk.vtkRenderWindowInteractor() # interactor.SetRenderWindow(render_window) # interactor.Initialize() # render_window.Render() # interactor.Start() # 从numpy得到vtk的数组数据类型 vtkdataArray = numpy2vtk(num_array=data.dataMatrix.ravel(), deep=True, array_type=vtk.VTK_FLOAT) # 定义一种source,vtkImageData vtkImageData = vtk.vtkImageData() # 定义vtkImageData的各种属性 vtkImageData.SetDimensions(np.shape(data.dataMatrix)) vtkImageData.SetSpacing(1, 1, 1) vtkImageData.GetPointData().SetScalars(vtkdataArray) # 从vtkImageData返回numpy数组的过程 # vtkPointData_temp=vtkImageData.GetPointData() # vtkFloatArray_temp=vtkPointData_temp.GetScalars() # numpy_temp=vtk2numpy(vtkFloatArray_temp) # res=numpy_temp==self.dataMatrix.flatten() # print(res) # 定义vtkMarchingCubes这个filter vtkMC = vtk.vtkMarchingCubes() vtkMC.SetInputData(vtkImageData) # 设置输入数据(vtkImageData) vtkMC.SetNumberOfContours(1) # 设置等值面的数量 vtkMC.SetValue(0, t) # 设置等值面的值(等值面索引,等值面值) # 1原始版本 vtkMC.ComputeGradientsOn() # 计算梯度 vtkMC.ComputeNormalsOff() # 计算法向量时,绘图质量反而下降 vtkMC.ComputeScalarsOff() # 开关无影响 vtkNorm = vtk.vtkVectorNorm() # vtkNorm.SetInputConnection(vtkMC.GetOutputPort()) vtkNorm.Update() cubeMapper = vtk.vtkDataSetMapper() cubeMapper.SetInputConnection(vtkNorm.GetOutputPort()) # 2使用vtkMarchingCubes计算标量值 # vtkMC.ComputeGradientsOn() # vtkMC.ComputeNormalsOff() # vtkMC.ComputeScalarsOn() # # cubeMapper = vtk.vtkDataSetMapper() # cubeMapper.SetInputConnection(vtkMC.GetOutputPort()) # 3不计算标量值 # vtkMC.ComputeGradientsOn() # vtkMC.ComputeNormalsOn() # vtkMC.ComputeScalarsOff() # # cubeMapper = vtk.vtkDataSetMapper() # cubeMapper.SetInputConnection(vtkMC.GetOutputPort()) cubeActor = vtk.vtkActor() cubeActor.SetMapper(cubeMapper) cubeCamera = vtk.vtkCamera() cubeCamera.SetPosition(1, 1, 1) cubeCamera.SetFocalPoint(0, 0, 0) Render = vtk.vtkRenderer() Render.AddActor(cubeActor) Render.SetActiveCamera(cubeCamera) Render.ResetCamera() Render.SetBackground(0.7, 0.7, 0.7) Win = vtk.vtkRenderWindow() Win.AddRenderer(Render) Win.SetSize(3000, 3000) Inter = vtk.vtkRenderWindowInteractor() Inter.SetRenderWindow(Win) # 设置小的坐标系,跟随交互改变 axes = vtk.vtkAxesActor() widet = vtk.vtkOrientationMarkerWidget() widet.SetOrientationMarker(axes) # 设置谁讲被在挂件中显示 widet.SetOutlineColor(0.5, 0.5, 0.5) # 挂件被选中时的外框颜色 widet.SetInteractor(Inter) # 选择vtkRenderWindowInteractor widet.SetViewport(0, 0, 0.3, 0.3) # 挂件显示的位置和大小,(xmin,ymin,xmax,ymax) widet.SetEnabled(1) # 使能 widet.InteractiveOn() # 交互开 # Win.Render() Inter.Start()
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)
#Create Grid and Points __unstructured_grid = vtkUnstructuredGrid() __points = vtkPoints() # Set Data in points __points.SetData(nptovtk(__coordinaten)) #__points.SetVectors(nptovtk(__vectors)) # set Points in Grid __unstructured_grid.SetPoints(__points) print(__points) #add array __unstructured_grid.GetPointData().SetVectors(nptovtk(__vectors)) __actor = vtkActor() __reader = vtkUnstructuredGridReader() __mapper = vtkDataSetMapper() __mapper.SetInputData(__unstructured_grid) __actor.SetMapper(__mapper) #region arrow __arrow = vtkArrowSource() __arrow.SetTipLength(0.25) __arrow.SetTipRadius(0.1) __arrow.SetTipResolution(10) __glyph = vtkGlyph3D() __glyph.SetSourceConnection(__arrow.GetOutputPort()) __glyph.SetInputData(__unstructured_grid)
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()
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, renderer): self.__renderer = renderer self.__vtkOBJReader = vtkOBJReader() self.__objMapper = vtkPolyDataMapper() self.__objActor = vtkActor()
# 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()) renderer.SetBackground(0.4, 0.3, 0.2) renderWindow.Render()
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)
from vtkmodules import all points = all.vtkPoints() poly = all.vtkPolyData() poly.SetPoints(points) mapper = all.vtkPointGaussianMapper() mapper.SetInputData(poly) mapper.EmissiveOff() mapper.SetScaleFactor(0.0) actor = all.vtkActor() actor.SetMapper(mapper) colors_array = all.vtkUnsignedCharArray() colors_array.SetNumberOfComponents(3) for i in range(1000): color = (i * 0.1, 0, 0) colors_array.InsertNextTuple3(*color) points.InsertNextPoint([0.1 * i, 0.1 * i, 0]) points.Modified() poly.GetPointData().SetScalars(colors_array) render = all.vtkRenderer() render.AddActor(actor) ren_win = all.vtkRenderWindow() ren_win.AddRenderer(render) ren_win.SetSize(500, 500) # colors_array.Reset() # for i in range(0, 1000): # colors_array.InsertNextTuple3(0, 255, 0) # colors_array.Modified()
def __init__(self, renderer): self.__renderer = renderer self.__mapper = vtkPolyDataMapper() self.__lookup_table = vtkLookupTable() self.__property = vtkProperty() self.__actor = vtkActor()