1 |
""" |
2 |
@author: John Ngui |
3 |
@author: Lutz Gross |
4 |
""" |
5 |
|
6 |
import vtk |
7 |
from constants import * |
8 |
|
9 |
class Scene: |
10 |
""" |
11 |
Class that defines a scene in which components are displayed. |
12 |
""" |
13 |
|
14 |
def __init__(self, renderer, x_size = 800, y_size = 600): |
15 |
""" |
16 |
Initialize all the instance variables. |
17 |
|
18 |
|
19 |
@type renderer: String |
20 |
@param renderer: Type of rendering (I{vtk-online or vtk-offline}) |
21 |
@type x_size: Number |
22 |
@param x_size: Size of the rendering window on the x-axis |
23 |
@type y_size: Number |
24 |
@param y_size: Size of the rendering window on the y-axis |
25 |
""" |
26 |
|
27 |
self.renderer = renderer |
28 |
self.x_size = x_size |
29 |
self.y_size = y_size |
30 |
self.vtk_renderer = vtk.vtkRenderer() |
31 |
self.vtk_render_window = vtk.vtkRenderWindow() |
32 |
|
33 |
self.setRenderWindow() |
34 |
|
35 |
def saveImage(self, image_name): |
36 |
self.vtk_render_window.Render() |
37 |
|
38 |
vtk_window_to_image = vtk.vtkWindowToImageFilter() |
39 |
vtk_window_to_image.SetInput(self.vtk_render_window) |
40 |
vtk_window_to_image.Update() |
41 |
|
42 |
vtk_image_writer = self.getImageWriter(self.renderer) |
43 |
vtk_image_writer.SetInput(vtk_window_to_image.GetOutput()) |
44 |
vtk_image_writer.SetFileName(image_name) |
45 |
vtk_image_writer.Write() |
46 |
|
47 |
|
48 |
def setRenderWindow(self): |
49 |
""" |
50 |
Set up the renderer and rendering window. |
51 |
""" |
52 |
|
53 |
self.vtk_render_window.AddRenderer(self.vtk_renderer) |
54 |
self.vtk_render_window.SetSize(self.x_size, self.y_size) |
55 |
self.vtk_renderer.SetBackground( |
56 |
WHITE[0], WHITE[1], WHITE[2]) |
57 |
|
58 |
def render(self): |
59 |
""" |
60 |
Set up the render window interactor and render the image. |
61 |
""" |
62 |
|
63 |
vtk_render_window_interactor = vtk.vtkRenderWindowInteractor() |
64 |
vtk_render_window_interactor.SetRenderWindow(self.vtk_render_window) |
65 |
vtk_render_window_interactor.Initialize() |
66 |
self.vtk_render_window.Render() |
67 |
vtk_render_window_interactor.Start() |
68 |
|
69 |
|
70 |
def getImageWriter(self, renderer): |
71 |
if(renderer == "vtk_jpeg"): |
72 |
return vtk.vtkJPEGWriter() |
73 |
elif(renderer == "vtk_bmp"): |
74 |
return vtk.vtkBMPWriter() |
75 |
elif(renderer == "vtk_pnm"): |
76 |
return vtk.vtkPNMWriter() |
77 |
elif(renderer == "vtk_png"): |
78 |
return vtk.vtkPNGWriter() |
79 |
elif(renderer == "vtk_tiff"): |
80 |
return vtk.vtkTIFFWriter() |
81 |
elif(renderer == "vtk_ps"): |
82 |
return vtk.vtkPostScriptWriter() |
83 |
|
84 |
def getRenderer(self): |
85 |
""" |
86 |
Return the renderer. |
87 |
|
88 |
@rtype: vtkRenderer |
89 |
@return: VTK renderer |
90 |
""" |
91 |
|
92 |
return self.vtk_renderer |