Trisurf Monte Carlo simulator
Samo Penic
2016-07-10 8e345370c7846bb5592fb639a6ff91a8abbeef00
Saving all the differences
1 files modified
74 ■■■■■ changed files
python/trisurf/VTKRendering.py 74 ●●●●● patch | view | raw | blame | history
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