1#!/usr/bin/env python 2import vtk 3from vtk.util.misc import vtkGetDataRoot 4VTK_DATA_ROOT = vtkGetDataRoot() 5 6def GetRGBColor(colorName): 7 ''' 8 Return the red, green and blue components for a 9 color as doubles. 10 ''' 11 rgb = [0.0, 0.0, 0.0] # black 12 vtk.vtkNamedColors().GetColorRGB(colorName, rgb) 13 return rgb 14 15VTK_VARY_RADIUS_BY_VECTOR = 2 16 17# create pipeline 18# 19# Make sure all algorithms use the composite data pipeline 20cdp = vtk.vtkCompositeDataPipeline() 21 22reader = vtk.vtkGenericEnSightReader() 23reader.SetDefaultExecutivePrototype(cdp) 24reader.SetCaseFileName(VTK_DATA_ROOT + "/Data/EnSight/RectGrid_ascii.case") 25reader.Update() 26 27toRectilinearGrid = vtk.vtkCastToConcrete() 28toRectilinearGrid.SetInputData(reader.GetOutput().GetBlock(0)) 29toRectilinearGrid.Update() 30 31plane = vtk.vtkRectilinearGridGeometryFilter() 32plane.SetInputData(toRectilinearGrid.GetRectilinearGridOutput()) 33plane.SetExtent(0, 100, 0, 100, 15, 15) 34 35tri = vtk.vtkTriangleFilter() 36tri.SetInputConnection(plane.GetOutputPort()) 37 38warper = vtk.vtkWarpVector() 39warper.SetInputConnection(tri.GetOutputPort()) 40warper.SetScaleFactor(0.05) 41 42planeMapper = vtk.vtkDataSetMapper() 43planeMapper.SetInputConnection(warper.GetOutputPort()) 44planeMapper.SetScalarRange(0.197813, 0.710419) 45 46planeActor = vtk.vtkActor() 47planeActor.SetMapper(planeMapper) 48 49cutPlane = vtk.vtkPlane() 50cutPlane.SetOrigin(reader.GetOutput().GetBlock(0).GetCenter()) 51cutPlane.SetNormal(1, 0, 0) 52 53planeCut = vtk.vtkCutter() 54planeCut.SetInputData(toRectilinearGrid.GetRectilinearGridOutput()) 55planeCut.SetCutFunction(cutPlane) 56 57cutMapper = vtk.vtkDataSetMapper() 58cutMapper.SetInputConnection(planeCut.GetOutputPort()) 59cutMapper.SetScalarRange( 60 reader.GetOutput().GetBlock(0).GetPointData().GetScalars().GetRange()) 61 62cutActor = vtk.vtkActor() 63cutActor.SetMapper(cutMapper) 64 65iso = vtk.vtkContourFilter() 66iso.SetInputData(toRectilinearGrid.GetRectilinearGridOutput()) 67iso.SetValue(0, 0.7) 68 69normals = vtk.vtkPolyDataNormals() 70normals.SetInputConnection(iso.GetOutputPort()) 71normals.SetFeatureAngle(45) 72 73isoMapper = vtk.vtkPolyDataMapper() 74isoMapper.SetInputConnection(normals.GetOutputPort()) 75isoMapper.ScalarVisibilityOff() 76 77isoActor = vtk.vtkActor() 78isoActor.SetMapper(isoMapper) 79isoActor.GetProperty().SetColor(GetRGBColor('bisque')) 80isoActor.GetProperty().SetRepresentationToWireframe() 81 82streamer = vtk.vtkStreamTracer() 83streamer.SetInputData(reader.GetOutput().GetBlock(0)) 84streamer.SetStartPosition(-1.2, -0.1, 1.3) 85streamer.SetMaximumPropagation(500) 86streamer.SetInitialIntegrationStep(0.05) 87streamer.SetIntegrationDirectionToBoth() 88 89streamTube = vtk.vtkTubeFilter() 90streamTube.SetInputConnection(streamer.GetOutputPort()) 91streamTube.SetRadius(0.025) 92streamTube.SetNumberOfSides(6) 93streamTube.SetVaryRadius(VTK_VARY_RADIUS_BY_VECTOR) 94 95mapStreamTube = vtk.vtkPolyDataMapper() 96mapStreamTube.SetInputConnection(streamTube.GetOutputPort()) 97mapStreamTube.SetScalarRange( 98 reader.GetOutput().GetBlock(0).GetPointData().GetScalars().GetRange()) 99 100streamTubeActor = vtk.vtkActor() 101streamTubeActor.SetMapper(mapStreamTube) 102streamTubeActor.GetProperty().BackfaceCullingOn() 103 104outline = vtk.vtkOutlineFilter() 105outline.SetInputData(toRectilinearGrid.GetRectilinearGridOutput()) 106 107outlineMapper = vtk.vtkPolyDataMapper() 108outlineMapper.SetInputConnection(outline.GetOutputPort()) 109 110outlineActor = vtk.vtkActor() 111outlineActor.SetMapper(outlineMapper) 112outlineActor.GetProperty().SetColor(GetRGBColor('black')) 113 114# Graphics stuff 115# Create the RenderWindow, Renderer and both Actors 116# 117ren1 = vtk.vtkRenderer() 118renWin = vtk.vtkRenderWindow() 119renWin.SetMultiSamples(0) 120renWin.AddRenderer(ren1) 121iren = vtk.vtkRenderWindowInteractor() 122iren.SetRenderWindow(renWin) 123 124# Add the actors to the renderer, set the background and size 125# 126ren1.AddActor(outlineActor) 127ren1.AddActor(planeActor) 128ren1.AddActor(cutActor) 129ren1.AddActor(isoActor) 130ren1.AddActor(streamTubeActor) 131ren1.SetBackground(1, 1, 1) 132 133renWin.SetSize(400, 400) 134 135cam1 = ren1.GetActiveCamera() 136cam1.SetClippingRange(3.76213, 10.712) 137cam1.SetFocalPoint(-0.0842503, -0.136905, 0.610234) 138cam1.SetPosition(2.53813, 2.2678, -5.22172) 139cam1.SetViewUp(-0.241047, 0.930635, 0.275343) 140 141reader.SetDefaultExecutivePrototype(None) 142 143iren.Initialize() 144# render the image 145# 146#iren.Start() 147