ubuntuusers.de

Unbenannt

Autor:
PrairieDog
Datum:
20. April 2009 15:59
Code:
  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();
	}
}