renWin = vtk.vtkRenderWindow() renWin.SetSize(640*2, 480*1) iren = vtk.vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) renWinD = vtk.vtkRenderWindow() renWinD.SetSize(640*2, 480*1) irenD = vtk.vtkRenderWindowInteractor() irenD.SetRenderWindow(renWinD) # scenario renScenario = vtk.vtkRenderer() renScenario.SetBackground(eggshell) renScenario.SetViewport(0.0 / 2.0, 0.0, 1.0 / 2.0, 1.0) cameraActor = vtk.vtkCameraActor() cameraActor.SetCamera(di.get_vtk_camera()) cameraActor.SetWidthByHeightRatio(di.get_width_by_height_ratio()) renScenario.AddActor(cameraActor) renScenario.AddActor(sourceAo.actor) renScenario.AddActor(surfAo.actor) renScenario.AddActor(meshAo.actor) renScenario.GetActiveCamera().SetPosition(2.0, 7.0, 8.0) renScenario.GetActiveCamera().SetFocalPoint(0.0, 1.0, 0.0) # surf renSurf = vtk.vtkRenderer() renSurf.SetBackground(eggshell) renSurf.SetViewport(1.0 / 2.0, 0.0, 2.0 / 2.0, 1.0) cameraActor = vtk.vtkCameraActor() cameraActor.SetCamera(di.get_vtk_camera())
def add_sensor_visualization(filter_depth_image, positions, vtk_renderer): """ Add visualization specific to the sensor :param filter_depth_image: FilterDepthImage, needed to get camera info :param positions: list of sensor positions :param vtk_renderer: The vtkRenderer where the actors will be added. """ """ Frustum of the sensor """ cameraActor = vtk.vtkCameraActor() cameraActor.SetCamera(filter_depth_image.get_vtk_camera()) cameraActor.SetWidthByHeightRatio(filter_depth_image.get_width_by_height_ratio()) cameraActor.GetProperty().SetColor(blue) """ Path of the sensor """ npts = positions.shape[0] points = vtk.vtkPoints() points.SetNumberOfPoints(npts) lines = vtk.vtkCellArray() lines.InsertNextCell(npts) for i, pos in enumerate(positions): points.SetPoint(i, pos) lines.InsertCellPoint(i) polydata = vtk.vtkPolyData() polydata.SetPoints(points) polydata.SetLines(lines) polymapper = vtk.vtkPolyDataMapper() polymapper.SetInputData(polydata) polymapper.Update() actor = vtk.vtkActor() actor.SetMapper(polymapper) actor.GetProperty().SetColor(blue) actor.GetProperty().SetOpacity(0.5) ball = vtk.vtkSphereSource() ball.SetRadius(0.02) ball.SetThetaResolution(12) ball.SetPhiResolution(12) balls = vtk.vtkGlyph3D() balls.SetInputData(polydata) balls.SetSourceConnection(ball.GetOutputPort()) mapBalls = vtk.vtkPolyDataMapper() mapBalls.SetInputConnection(balls.GetOutputPort()) spcActor = vtk.vtkActor() spcActor.SetMapper(mapBalls) spcActor.GetProperty().SetColor(hot_pink) spcActor.GetProperty().SetSpecularColor(1, 1, 1) spcActor.GetProperty().SetSpecular(0.3) spcActor.GetProperty().SetSpecularPower(20) spcActor.GetProperty().SetAmbient(0.2) spcActor.GetProperty().SetDiffuse(0.8) """ Add to the given renderer """ vtk_renderer.AddActor(spcActor) vtk_renderer.AddActor(cameraActor) vtk_renderer.AddActor(actor)