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