From 97264e53840b3544fef002d30cb80d6e9942139b Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Wed, 04 Jan 2017 20:26:01 +0000 Subject: [PATCH] Some fixes in python code --- python/trisurf/VTKRendering.py | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 96 insertions(+), 3 deletions(-) diff --git a/python/trisurf/VTKRendering.py b/python/trisurf/VTKRendering.py index c393051..76ff9e7 100644 --- a/python/trisurf/VTKRendering.py +++ b/python/trisurf/VTKRendering.py @@ -4,19 +4,100 @@ from vtk import * + +class MultiRender: + def __init__(self,args,host): + target_runs=getRargetRunIdxList(args) + if target_runs==None: + target_runs=list(range(1,len(host['runs'])+1)) + nruns=len(target_runs) + #prepare rendering window + self.renderer_window = vtkRenderWindow() + self.renderer_window.AddRenderer(self.renderer) + self.renderer_window.SetSize(1200,600) + interactor = vtkRenderWindowInteractor() + interactor.SetRenderWindow(self.renderer_window) + interactor.Initialize() + interactor.AddObserver("TimerEvent", self.RenderUpdate) + timerIDR = interactor.CreateRepeatingTimer(1000) + self.filename=[] + self.renderer=[] + i=0 + for run in target_runs: + #for each target run calculate renderer location + r.vtkRenderer() + r.SetBackground(0,0,0) + p=1.0/float(nruns) + x1=i*p + x2=(i+1)*p + r.SetViewport(x1,0.0,x2,1.0) + self.renderer.Append(r) + self.renderer_window.AddRenderer(r) + i=i+1 + #call Renderer object with Run, renderer + #start endless loop of interactor + interactor.Start() + + def lastVTU(self,run): + Dir=trisurf.Directory(maindir=run.maindir,simdir=run.subdir) + filename=os.path.join("./",Dir.fullpath(),run.getLastVTU()) + return filename + + def lastActorForRun(self,run): + filename=self.lastVTU(run) + reader=vtkXMLUnstructuredGridReader() + reader.SetFileName(self.filename) + reader.Update() # Needed because of GetScalarRange + output = reader.GetOutput() + scalar_range = output.GetScalarRange() + mapper = vtkDataSetMapper() + mapper.SetInput(output) + mapper.SetScalarRange(scalar_range) + + # Create the Actor + actor = vtkActor() + actor.SetMapper(mapper) + return actor + + + + def RenderUpdate(self, obj, event): + i=0 + for run in runs: + if(self.lastVTU(run)!=self.filename[i]): + #print("updejt") + self.renderer.RemoveActor(self.actor) + self.renderer.RemoveActor(self.textactor) + self.actor=self.lastActor() + self.textactor=self.textActor() + self.renderer.AddActor(self.actor) + self.renderer.AddActor(self.textactor) + self.renderer_window.Render() + #self.render.RemoveActor(self.actor) + i=i+1 + return + + class Renderer: def __init__(self,args,host): self.host=host self.args=args 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 - # Create the RendererWindow self.renderer_window = vtkRenderWindow() self.renderer_window.AddRenderer(self.renderer) - + self.renderer_window.SetSize(1200,600) + + 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() @@ -32,6 +113,15 @@ 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()) return filename + + def textActor(self): + textactor=vtkTextActor() + textactor.SetInput(self.filename) + tp=textactor.GetTextProperty() + tp.SetColor(1,1,1) + tp.SetFontSize(11) + textactor.SetDisplayPosition(20,30) + return textactor def lastActor(self): self.filename=self.lastVTU() @@ -52,10 +142,13 @@ def RenderUpdate(self, obj, event): if(self.lastVTU()!=self.filename): - print("updejt") + #print("updejt") self.renderer.RemoveActor(self.actor) + self.renderer.RemoveActor(self.textactor) self.actor=self.lastActor() + self.textactor=self.textActor() self.renderer.AddActor(self.actor) + self.renderer.AddActor(self.textactor) self.renderer_window.Render() #self.render.RemoveActor(self.actor) -- Gitblit v1.9.3