Esempio n. 1
0
 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)
Esempio n. 2
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__reader = vtkPolyDataReader()
     self.__mapper = vtkPolyDataMapper()
     self.__actor = vtkActor()
     self.__property = vtkProperty()
     self.__geometry_filter = vtkGeometryFilter()
Esempio n. 3
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__reader = vtkStructuredGridReader()
     self.__mapper = vtkDataSetMapper()
     self.__lookup_table = vtkLookupTable()
     self.__property = vtkProperty()
     self.__actor = vtkActor()
Esempio n. 4
0
    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()
Esempio n. 5
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__mapper = vtkPolyDataMapper()
     self.__filter = vtkContourFilter()
     self.__reader = vtkStructuredGridReader()
     self.__actor = vtkActor()
     self.__property = vtkProperty()
Esempio n. 6
0
 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)
Esempio n. 7
0
 def __init__(self, renderer):
     """"init setting up variables"""
     self.__renderer = renderer
     self.__gridReader = vtkUnstructuredGridReader()
     self.__mapper = vtkDataSetMapper()
     self.__property = vtkProperty()
     self.__actor = vtkActor()
Esempio n. 8
0
    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()
Esempio n. 9
0
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)
Esempio n. 10
0
    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()
Esempio n. 11
0
    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()
Esempio n. 12
0
 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()
Esempio n. 13
0
 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)
Esempio n. 14
0
 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)
Esempio n. 15
0
 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)
Esempio n. 16
0
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()
Esempio n. 17
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__text = vtkTextSource()
     self.__poly_mapper = vtkPolyDataMapper()
     self.__vtkactor = vtkActor()
Esempio n. 18
0
    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()
Esempio n. 19
0
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()
Esempio n. 20
0
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)
Esempio n. 21
0
    #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)
Esempio n. 22
0
    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()
Esempio n. 23
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__cylinder = vtkCylinderSource()
     self.__cyl_mapper = vtkPolyDataMapper()
     self.__cyl_actor = vtkActor()
Esempio n. 24
0
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()
Esempio n. 25
0
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)
Esempio n. 26
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__vtkOBJReader = vtkOBJReader()
     self.__objMapper = vtkPolyDataMapper()
     self.__objActor = vtkActor()
Esempio n. 27
0
# 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()
Esempio n. 28
0
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)
Esempio n. 29
0
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()
Esempio n. 30
0
 def __init__(self, renderer):
     self.__renderer = renderer
     self.__mapper = vtkPolyDataMapper()
     self.__lookup_table = vtkLookupTable()
     self.__property = vtkProperty()
     self.__actor = vtkActor()