From 0d561cb2531d293ff8f4cee2f73a242e56547139 Mon Sep 17 00:00:00 2001 From: Samo Penic <samo.penic@gmail.com> Date: Fri, 20 Jan 2017 21:03:21 +0000 Subject: [PATCH] Now commiting correctly. Really. I promise --- trisurf/VTKRendering.py | 64 +++++++++++++++++++++++-------- 1 files changed, 47 insertions(+), 17 deletions(-) diff --git a/trisurf/VTKRendering.py b/trisurf/VTKRendering.py index 97b06ae..9080a9a 100644 --- a/trisurf/VTKRendering.py +++ b/trisurf/VTKRendering.py @@ -1,9 +1,10 @@ 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): @@ -51,7 +52,7 @@ output = reader.GetOutput() scalar_range = output.GetScalarRange() mapper = vtkDataSetMapper() - mapper.SetInput(output) + mapper.SetInputData(output) mapper.SetScalarRange(scalar_range) # Create the Actor @@ -79,38 +80,44 @@ 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): @@ -123,16 +130,39 @@ 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) -- Gitblit v1.9.3