1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 | public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
vtkPanel vPanel = new vtkPanel();
frame.getContentPane().add("Center", vPanel);
vtkStructuredGridReader reader = new vtkStructuredGridReader();
reader.SetFileName("Data/office.binary.vtk"); // 8400 points
reader.Update();
vtkMaskPoints masked = new vtkMaskPoints();
masked.SetInput(reader.GetOutput());
masked.RandomModeOn();
masked.SetOnRatio(30); // ~280 points
vtkStreamLine streamline = new vtkStreamLine();
streamline.SetInput(reader.GetOutput());
streamline.SetSource(masked.GetOutput());
streamline.SetStepLength(0.5);
streamline.SetMaximumPropagationTime(15.0);
streamline.SetIntegrationDirection(1);
vtkDiskSource disk = new vtkDiskSource();
disk.SetOuterRadius(0.01);
vtkTransform trans = new vtkTransform();
trans.RotateY(90.0);
vtkTransformPolyDataFilter tpdf = new vtkTransformPolyDataFilter();
tpdf.SetInput(disk.GetOutput());
tpdf.SetTransform(trans);
vtkGlyph3D glyph = new vtkGlyph3D();
glyph.SetInput(streamline.GetOutput());
glyph.SetSource(tpdf.GetOutput());
glyph.SetScaleFactor(0.05);
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
mapper.SetInput(glyph.GetOutput());
vtkActor actor = new vtkActor();
actor.SetMapper(mapper);
vPanel.GetRenderer().AddActor(actor);
vPanel.GetRenderer().ResetCamera();
frame.pack();
frame.setVisible(true);
// show frame for 3 seconds, dispose and recreate it
try {
Thread.sleep(3000);
frame.dispose();
System.out.println("--- RESTART ---");
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout());
vPanel = new vtkPanel();
frame.getContentPane().add("Center", vPanel);
reader = new vtkStructuredGridReader();
reader.SetFileName("Data/office.binary.vtk");
reader.Update();
masked = new vtkMaskPoints();
masked.SetInput(reader.GetOutput());
masked.RandomModeOn();
masked.SetOnRatio(30);
streamline = new vtkStreamLine();
streamline.SetInput(reader.GetOutput());
streamline.SetSource(masked.GetOutput());
streamline.SetStepLength(0.5);
streamline.SetMaximumPropagationTime(15.0);
streamline.SetIntegrationDirection(1);
disk = new vtkDiskSource();
disk.SetOuterRadius(0.01);
trans = new vtkTransform();
trans.RotateY(90.0);
tpdf = new vtkTransformPolyDataFilter();
tpdf.SetInput(disk.GetOutput());
tpdf.SetTransform(trans);
glyph = new vtkGlyph3D();
glyph.SetInput(streamline.GetOutput());
glyph.SetSource(tpdf.GetOutput());
glyph.SetScaleFactor(0.05);
mapper = new vtkPolyDataMapper();
mapper.SetInput(glyph.GetOutput());
actor = new vtkActor();
actor.SetMapper(mapper);
vPanel.GetRenderer().AddActor(actor);
vPanel.GetRenderer().ResetCamera();
frame.pack();
frame.setVisible(true);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (HeadlessException e) {
e.printStackTrace();
}
}
|