1#!/usr/bin/env python 2import vtk 3from vtk.util.misc import vtkGetDataRoot 4VTK_DATA_ROOT = vtkGetDataRoot() 5 6# Create the RenderWindow, Renderer and both Actors 7# 8ren1 = vtk.vtkRenderer() 9renWin = vtk.vtkRenderWindow() 10renWin.AddRenderer(ren1) 11iren = vtk.vtkRenderWindowInteractor() 12iren.SetRenderWindow(renWin) 13# create pipeline 14# 15pl3d = vtk.vtkMultiBlockPLOT3DReader() 16pl3d.SetXYZFileName("" + str(VTK_DATA_ROOT) + "/Data/combxyz.bin") 17pl3d.SetQFileName("" + str(VTK_DATA_ROOT) + "/Data/combq.bin") 18pl3d.SetScalarFunctionNumber(100) 19pl3d.SetVectorFunctionNumber(202) 20pl3d.Update() 21output = pl3d.GetOutput().GetBlock(0) 22 23sf = vtk.vtkSplitField() 24sf.SetInputData(output) 25sf.SetInputField("VECTORS","POINT_DATA") 26sf.Split(0,"vx") 27sf.Split(1,"vy") 28sf.Split(2,"vz") 29#sf.Print() 30aax = vtk.vtkAssignAttribute() 31aax.SetInputConnection(sf.GetOutputPort()) 32aax.Assign("vx","SCALARS","POINT_DATA") 33isoVx = vtk.vtkContourFilter() 34isoVx.SetInputConnection(aax.GetOutputPort()) 35isoVx.SetValue(0,.38) 36normalsVx = vtk.vtkPolyDataNormals() 37normalsVx.SetInputConnection(isoVx.GetOutputPort()) 38normalsVx.SetFeatureAngle(45) 39isoVxMapper = vtk.vtkPolyDataMapper() 40isoVxMapper.SetInputConnection(normalsVx.GetOutputPort()) 41isoVxMapper.ScalarVisibilityOff() 42isoVxActor = vtk.vtkActor() 43isoVxActor.SetMapper(isoVxMapper) 44isoVxActor.GetProperty().SetColor(1,0.7,0.6) 45 46aay = vtk.vtkAssignAttribute() 47aay.SetInputConnection(sf.GetOutputPort()) 48aay.Assign("vy","SCALARS","POINT_DATA") 49isoVy = vtk.vtkContourFilter() 50isoVy.SetInputConnection(aay.GetOutputPort()) 51isoVy.SetValue(0,.38) 52normalsVy = vtk.vtkPolyDataNormals() 53normalsVy.SetInputConnection(isoVy.GetOutputPort()) 54normalsVy.SetFeatureAngle(45) 55isoVyMapper = vtk.vtkPolyDataMapper() 56isoVyMapper.SetInputConnection(normalsVy.GetOutputPort()) 57isoVyMapper.ScalarVisibilityOff() 58isoVyActor = vtk.vtkActor() 59isoVyActor.SetMapper(isoVyMapper) 60isoVyActor.GetProperty().SetColor(0.7,1,0.6) 61 62aaz = vtk.vtkAssignAttribute() 63aaz.SetInputConnection(sf.GetOutputPort()) 64aaz.Assign("vz","SCALARS","POINT_DATA") 65isoVz = vtk.vtkContourFilter() 66isoVz.SetInputConnection(aaz.GetOutputPort()) 67isoVz.SetValue(0,.38) 68normalsVz = vtk.vtkPolyDataNormals() 69normalsVz.SetInputConnection(isoVz.GetOutputPort()) 70normalsVz.SetFeatureAngle(45) 71isoVzMapper = vtk.vtkPolyDataMapper() 72isoVzMapper.SetInputConnection(normalsVz.GetOutputPort()) 73isoVzMapper.ScalarVisibilityOff() 74isoVzActor = vtk.vtkActor() 75isoVzActor.SetMapper(isoVzMapper) 76isoVzActor.GetProperty().SetColor(0.4,0.5,1) 77 78mf = vtk.vtkMergeFields() 79mf.SetInputConnection(sf.GetOutputPort()) 80mf.SetOutputField("merged","POINT_DATA") 81mf.SetNumberOfComponents(3) 82mf.Merge(0,"vy",0) 83mf.Merge(1,"vz",0) 84mf.Merge(2,"vx",0) 85#mf.Print() 86aa = vtk.vtkAssignAttribute() 87aa.SetInputConnection(mf.GetOutputPort()) 88aa.Assign("merged","SCALARS","POINT_DATA") 89aa2 = vtk.vtkAssignAttribute() 90aa2.SetInputConnection(aa.GetOutputPort()) 91aa2.Assign("SCALARS","VECTORS","POINT_DATA") 92sl = vtk.vtkStreamTracer() 93sl.SetInputConnection(aa2.GetOutputPort()) 94sl.SetStartPosition(2,-2,26) 95sl.SetMaximumPropagation(40) 96sl.SetInitialIntegrationStep(0.2) 97sl.SetIntegrationDirectionToForward() 98rf = vtk.vtkRibbonFilter() 99rf.SetInputConnection(sl.GetOutputPort()) 100rf.SetWidth(1.0) 101rf.SetWidthFactor(5) 102slMapper = vtk.vtkPolyDataMapper() 103slMapper.SetInputConnection(rf.GetOutputPort()) 104slActor = vtk.vtkActor() 105slActor.SetMapper(slMapper) 106 107outline = vtk.vtkStructuredGridOutlineFilter() 108outline.SetInputData(output) 109outlineMapper = vtk.vtkPolyDataMapper() 110outlineMapper.SetInputConnection(outline.GetOutputPort()) 111outlineActor = vtk.vtkActor() 112outlineActor.SetMapper(outlineMapper) 113# Add the actors to the renderer, set the background and size 114# 115ren1.AddActor(isoVxActor) 116isoVxActor.AddPosition(0,12,0) 117ren1.AddActor(isoVyActor) 118ren1.AddActor(isoVzActor) 119isoVzActor.AddPosition(0,-12,0) 120ren1.AddActor(slActor) 121slActor.AddPosition(0,24,0) 122ren1.AddActor(outlineActor) 123outlineActor.AddPosition(0,24,0) 124ren1.SetBackground(.8,.8,.8) 125renWin.SetSize(320,320) 126 127ren1.GetActiveCamera().SetPosition(-20.3093,20.55444,64.3922) 128ren1.GetActiveCamera().SetFocalPoint(8.255,0.0499763,29.7631) 129ren1.GetActiveCamera().SetViewAngle(30) 130ren1.GetActiveCamera().SetViewUp(0,0,1) 131ren1.GetActiveCamera().Dolly(0.4) 132ren1.ResetCameraClippingRange() 133# render the image 134# 135renWin.Render() 136# prevent the tk window from showing up then start the event loop 137# --- end of script -- 138