Trisurf Monte Carlo simulator
Samo Penic
2016-07-08 a9c679d4e4b49e44542bac81ef4ef65c94418eff
VTK rendering is done in realtime (updating attempt every second)
1 files added
1 files modified
119 ■■■■ changed files
python/trisurf/VTKRendering.py 62 ●●●●● patch | view | raw | blame | history
python/trisurf/tsmgr.py 57 ●●●●● patch | view | raw | blame | history
python/trisurf/VTKRendering.py
New file
@@ -0,0 +1,62 @@
import os,sys
from . import trisurf
if sys.version_info<(3,0):
    from vtk import *
class Renderer:
    def __init__(self,args,host):
        self.host=host
        self.args=args
        self.renderer = vtkRenderer()
        self.actor=self.lastActor()
        self.renderer.AddActor(self.actor)
        self.renderer.SetBackground(0, 0, 0) # Set background to white
        # Create the RendererWindow
        self.renderer_window = vtkRenderWindow()
        self.renderer_window.AddRenderer(self.renderer)
# 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)
        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())
        return filename
    def lastActor(self):
        self.filename=self.lastVTU()
        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):
        if(self.lastVTU()!=self.filename):
            print("updejt")
            self.renderer.RemoveActor(self.actor)
            self.actor=self.lastActor()
            self.renderer.AddActor(self.actor)
            self.renderer_window.Render()
        #self.render.RemoveActor(self.actor)
        return
python/trisurf/tsmgr.py
@@ -15,6 +15,7 @@
else:
    from urlparse import urlparse
    from vtk import *
    from . import VTKRendering
#import io
@@ -203,65 +204,11 @@
def preview_vtu(args,host):
    #only for localhost at the moment
    Dir=trisurf.Directory(maindir=host['runs'][0].maindir,simdir=host['runs'][0].subdir)
    filename=os.path.join("./",Dir.fullpath(),host['runs'][0].getLastVTU())
    print(filename)
    if sys.version_info>=(3,0):
        print("Preview works only with python 2.7")
        exit(1)
    if host['name'] == socket.gethostname():
        target_runs=getTargetRunIdxList(args)
        #if target_runs==None:
        #    target_runs=list(range(1,len(host['runs'])+1))
        #for i in target_runs:
        #    host['runs'][i-1].start()
        reader=vtkXMLUnstructuredGridReader()
        reader.SetFileName(filename)
        reader.Update() # Needed because of GetScalarRange
        output = reader.GetOutput()
        scalar_range = output.GetScalarRange()
        # Create the mapper that corresponds the objects of the vtk file
        # into graphics elements
        mapper = vtkDataSetMapper()
        mapper.SetInput(output)
        mapper.SetScalarRange(scalar_range)
        # Create the Actor
        actor = vtkActor()
        actor.SetMapper(mapper)
        # Create the Renderer
        renderer = vtkRenderer()
        renderer.AddActor(actor)
        renderer.SetBackground(0, 0, 0) # Set background to white
        # Create the RendererWindow
        renderer_window = vtkRenderWindow()
        renderer_window.AddRenderer(renderer)
# Set up a check for aborting rendering.
        # Create the RendererWindowInteractor and display the vtk_file
        interactor = vtkRenderWindowInteractor()
        interactor.SetRenderWindow(renderer_window)
        interactor.Initialize()
#         interactor.AddObserver("TimerEvent", RenderUpdate)
#        timerIDR = interactor.CreateRepeatingTimer(1000)
        interactor.Start()
def RenderUpdate(obj, event):
    # obj will be the object generating the event.  In this case it
    # is renWin
    window=obj.GetRenderWindow() #.GetRenderer()
    renderer=window.GetRenderers()
    try:
        actor=renderer.GetActors()
    except:
        pass
    actor=renderer.GetActors()
    print(actor)
        VTKRendering.Renderer(args,host)
def getListOfHostConfigurationByHostname(hosts,host):
    rhost=[]