Changeset 3670
- Timestamp:
- Sep 26, 2006, 2:44:48 PM (17 years ago)
- Location:
- anuga_core/source/anuga
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/examples/sww_file_visualiser_example.py
r3625 r3670 27 27 # (q['ymomentum'] ** 2)), 0, 10)) 28 28 29 # Draw some axes on the visualiser so we can see how big the wave is 30 o.render_axes() 31 29 32 # Precaching the height-based quantities reduces the time taken to draw each 30 33 # frame, but increases the time taken when the visualiser starts. -
anuga_core/source/anuga/visualiser/offline.py
r3622 r3670 22 22 self.maxFrameNumber = fin.variables['time'].shape[0] - 1 23 23 fin.close() 24 25 self.xmin = None 26 self.xmax = None 27 self.ymin = None 28 self.ymax = None 29 self.zmin = None 30 self.zmax = None 24 31 25 32 self.vtk_heightQuantityCache = [] … … 49 56 polydata.SetPoints(self.read_height_quantity(quantityName, False)) 50 57 polydata.SetPolys(self.vtk_cells) 58 59 def get_3d_bounds(self): 60 return [self.xmin, self.xmax, self.ymin, self.ymax, self.zmin, self.zmax] 51 61 52 62 def read_height_quantity(self, quantityName, dynamic=True, frameNumber=0): … … 72 82 for v in range(N_vert): 73 83 points.InsertNextPoint(x[v], y[v], q[v]) 84 if self.xmin == None or self.xmin > x[v]: 85 self.xmin = x[v] 86 if self.xmax == None or self.xmax < x[v]: 87 self.xmax = x[v] 88 if self.ymin == None or self.ymin > y[v]: 89 self.ymin = y[v] 90 if self.ymax == None or self.ymax < y[v]: 91 self.ymax = y[v] 92 if self.zmin == None or self.zmin > q[v]: 93 self.zmin = q[v] 94 if self.zmax == None or self.zmax < q[v]: 95 self.zmax = q[v] 74 96 fin.close() 75 97 return points -
anuga_core/source/anuga/visualiser/visualiser.py
r3625 r3670 2 2 from Tkinter import Tk, Button, Frame, N, E, S, W 3 3 from types import FunctionType, TupleType 4 from vtk import vtkActor, vtk FloatArray, vtkPolyDataMapper, vtkRenderer4 from vtk import vtkActor, vtkCubeAxesActor2D, vtkFloatArray, vtkPolyDataMapper, vtkRenderer 5 5 from vtk.tk.vtkTkRenderWidget import vtkTkRenderWidget 6 6 … … 24 24 # Structures used for VTK 25 25 self.vtk_actors = {} 26 self.vtk_axesSet = False 27 self.vtk_drawAxes = False 26 28 self.vtk_mappers = {} 27 29 self.vtk_polyData = {} 30 self.vtk_renderer = vtkRenderer() 28 31 29 32 self.setup_gui() … … 45 48 self.update_height_quantity(q, self.height_dynamic[q]) 46 49 self.draw_height_quantity(q) 47 50 if self.vtk_drawAxes is True: 51 self.vtk_axes.SetBounds(self.get_3d_bounds()) 52 if not self.vtk_axesSet: 53 self.vtk_axesSet = True 54 self.vtk_axes.SetCamera(self.vtk_renderer.GetActiveCamera()) 55 self.vtk_renderer.AddActor(self.vtk_axes) 56 48 57 # --- Height Based Rendering --- # 58 59 def render_axes(self): 60 """Intstruct the visualiser to render cube axes around the render. 61 """ 62 self.vtk_drawAxes = True 63 self.vtk_axes = vtkCubeAxesActor2D() 64 65 def get_axes(self): 66 """Return the vtkCubeAxesActor2D object used to render the axes. 67 This is to allow simple manipulation of the axes such as 68 get_axes().SetNumberOfLabels(5) or similar. 69 """ 70 return self.vtk_axes 49 71 50 72 def setup_grid(self): … … 75 97 pass 76 98 99 def get_3d_bounds(self): 100 """Get the minimum and maximum bounds for the x, y and z directions. 101 Return as a list of double in the order (xmin, xmax, ymin, ymax, zmin, zmax), 102 suitable for passing to vtkCubeAxesActor2D::SetRanges(). Subclasses are expected 103 to override this function. 104 """ 105 pass 77 106 78 107 def draw_height_quantity(self, quantityName): … … 155 184 self.tk_quit = Button(self.tk_controlFrame, text="Quit", command=self.shutdown) 156 185 self.tk_quit.grid(row=0, column=0, sticky=E+W) 157 self.vtk_renderer = vtkRenderer()158 186 self.tk_renderWidget.GetRenderWindow().AddRenderer(self.vtk_renderer) 159 187
Note: See TracChangeset
for help on using the changeset viewer.