| | |
| | | import os,sys |
| | | from . import trisurf |
| | | if sys.version_info<(3,0): |
| | | try: |
| | | from vtk import * |
| | | |
| | | |
| | | except: |
| | | print("Vtk rendering works if you manually install vtk7 for python3") |
| | | exit(1) |
| | | |
| | | class MultiRender: |
| | | def __init__(self,args,host): |
| | |
| | | output = reader.GetOutput() |
| | | scalar_range = output.GetScalarRange() |
| | | mapper = vtkDataSetMapper() |
| | | mapper.SetInput(output) |
| | | mapper.SetInputData(output) |
| | | mapper.SetScalarRange(scalar_range) |
| | | |
| | | # Create the Actor |
| | |
| | | |
| | | |
| | | class Renderer: |
| | | def __init__(self,args,host): |
| | | def __init__(self,args,host,run, timestep=-1, scalar_field='vertices_idx'): |
| | | self.host=host |
| | | self.args=args |
| | | self.run=run |
| | | self.timestep=timestep |
| | | self.scalar_field=scalar_field |
| | | self.renderer = vtkRenderer() |
| | | self.actor=self.lastActor() |
| | | self.textactor=self.textActor() |
| | | self.renderer.AddActor(self.actor) |
| | | self.renderer.AddActor(self.textactor) |
| | | self.renderer.SetBackground(0, 0, 0) # Set background to white |
| | | self.renderer.SetBackground(81/255, 87/255, 110/255) # Set background to nicely grey |
| | | # Create the RendererWindow |
| | | self.renderer_window = vtkRenderWindow() |
| | | self.renderer_window.AddRenderer(self.renderer) |
| | | self.renderer_window.SetSize(1200,600) |
| | | self.renderer_window.SetSize(800,800) |
| | | |
| | | self.renderer.SetViewport(0.0,0.0,0.5,1.0) |
| | | rend=vtk.vtkRenderer() |
| | | rend.AddActor(self.actor) |
| | | rend.SetViewport(0.5,0.0,1.0,1.0) |
| | | self.renderer_window.AddRenderer(rend) |
| | | # self.renderer.SetViewport(0.0,0.0,0.5,1.0) |
| | | # rend=vtk.vtkRenderer() |
| | | # rend.AddActor(self.actor) |
| | | # rend.SetViewport(0.5,0.0,1.0,1.0) |
| | | # self.renderer_window.AddRenderer(rend) |
| | | # Set up a check for aborting rendering. |
| | | # Create the RendererWindowInteractor and display the vtk_file |
| | | interactor = vtkRenderWindowInteractor() |
| | | interactor.SetRenderWindow(self.renderer_window) |
| | | interactor.Initialize() |
| | | interactor.AddObserver("TimerEvent", self.RenderUpdate) |
| | | timerIDR = interactor.CreateRepeatingTimer(1000) |
| | | timerIDR = interactor.CreateRepeatingTimer(10000) |
| | | interactor.Start() |
| | | return |
| | | |
| | | def lastVTU(self): |
| | | Dir=trisurf.Directory(maindir=self.host['runs'][0].maindir,simdir=self.host['runs'][0].subdir) |
| | | filename=os.path.join("./",Dir.fullpath(),self.host['runs'][0].getLastVTU()) |
| | | #Dir=trisurf.Directory(maindir=self.host['runs'][self.run].maindir,simdir=self.host['runs'][self.run].subdir) |
| | | Dir=self.run.Dir |
| | | #print(self.run.getLastVTU()) |
| | | filename=os.path.join("./",Dir.fullpath(),self.run.getLastVTU()) |
| | | #filename=os.path.join("./",Dir.fullpath(),self.host['runs'][self.run].getLastVTU()) |
| | | return filename |
| | | |
| | | def textActor(self): |
| | |
| | | return textactor |
| | | |
| | | def lastActor(self): |
| | | self.filename=self.lastVTU() |
| | | if(self.timestep<0): |
| | | self.filename=self.lastVTU() |
| | | else: |
| | | self.filename=os.path.join("./",self.run.Dir.fullpath(),'timestep_{:06d}.vtu'.format(self.timestep)) |
| | | reader=vtkXMLUnstructuredGridReader() |
| | | reader.SetFileName(self.filename) |
| | | reader.Update() # Needed because of GetScalarRange |
| | | output = reader.GetOutput() |
| | | output.GetPointData().SetActiveScalars(self.scalar_field) |
| | | scalar_range = output.GetScalarRange() |
| | | mapper = vtkDataSetMapper() |
| | | mapper.SetInput(output) |
| | | mapper.SetInputData(output) |
| | | mapper.SetScalarRange(scalar_range) |
| | | |
| | | #color lookuptables |
| | | #lut = vtk.vtkLookupTable() |
| | | #lut.SetHueRange(0.5, 0.6) |
| | | #lut.SetSaturationRange(0, 1) |
| | | #lut.SetValueRange(0, 1) |
| | | #mapper.SetLookupTable(lut) |
| | | |
| | | #advanced lookuptables... |
| | | lut = vtk.vtkLookupTable() |
| | | lutNum = 256 |
| | | lut.SetNumberOfTableValues(lutNum) |
| | | ctf = vtk.vtkColorTransferFunction() |
| | | ctf.SetColorSpaceToDiverging() |
| | | ctf.AddRGBPoint(0.0, 0.230, 0.299, 0.754) |
| | | ctf.AddRGBPoint(1.0, 0.706, 0.016, 0.150) |
| | | for ii,ss in enumerate([float(xx)/float(lutNum) for xx in range(lutNum)]): |
| | | cc = ctf.GetColor(ss) |
| | | lut.SetTableValue(ii,cc[0],cc[1],cc[2],1.0) |
| | | mapper.SetLookupTable(lut) |
| | | # Create the Actor |
| | | actor = vtkActor() |
| | | actor.SetMapper(mapper) |