From 6415a3e0127eb4278e0975f0ba280840ceb1ef95 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Wed, 13 Jul 2016 16:02:06 +0000 Subject: [PATCH] Merge branch 'master' of bitbucket.org:samop/trisurf-ng --- python/trisurf/VTKRendering.py | 85 +++++++++++++++++++++++++++++++++++++++++- 1 files changed, 82 insertions(+), 3 deletions(-) diff --git a/python/trisurf/VTKRendering.py b/python/trisurf/VTKRendering.py index 213d959..5e72b98 100644 --- a/python/trisurf/VTKRendering.py +++ b/python/trisurf/VTKRendering.py @@ -4,6 +4,80 @@ 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 @@ -14,11 +88,16 @@ 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() @@ -40,7 +119,7 @@ textactor.SetInput(self.filename) tp=textactor.GetTextProperty() tp.SetColor(1,1,1) - tp.SetFontSize(18) + tp.SetFontSize(11) textactor.SetDisplayPosition(20,30) return textactor -- Gitblit v1.9.3