[vtkusers] How to capture images from ONLY the RenderWindow?
Burlen Loring
burlen at apollo.sr.unh.edu
Thu Oct 28 10:49:22 EDT 2004
Hi I came into this problem as well, and the offscreen method proposed, didn't work for me. What I ended up doing was forcing my render window to the top, using the tkinter lift method just before the save. I have the render and the save code bound to two different buttons, included below.
################
# render code
renwin = Toplevel(self.MainWindow) # create child window
self.PlotWindow = renwin # save it for use from save
subplot = vtk.vtkRenderer()
subplot.SetBackground(1,1,1)
for actor in plotactors: # add actors only if their draw state is true
if (actor[2] == True):
#print "adding %s..."%(actor[1])
subplot.AddActor(actor[0])
#print self.ActorGenerator.GetPlotAspect()
# pack in a vtk render widget
tkrw = vtkTkRenderWidget(renwin, width=WINDOW_WIDTH,height=int(WINDOW_HEIGHT*self.ActorGenerator.GetPlotAspect()))
tkrw.pack(expand=YES, fill=BOTH)
rw = tkrw.GetRenderWindow()
rw.AddRenderer(subplot)
rw.Modified() # force vtk to updat scalar bar
rw.Render()
self.RenderWidget = tkrw # save this render window
###################33
# save as code
# code to get file name excluded
self.PlotWindow.lift()
renwin = self.RenderWidget.GetRenderWindow()
renwin.Modified()
renwin.Render()
############
# save png #
############
w2i = vtk.vtkWindowToImageFilter()
w2i.SetInput(renwin)
png = vtk.vtkPNGWriter()
png.SetInput(w2i.GetOutput())
png.SetFileName(sfn)
png.Write()
On Wednesday 27 October 2004 14:14, Jared Cohen wrote:
> Ok, the first message didn't seem to get through to the mailing list,
> so I'll try this again :-)
> ---------------------------------------------------------------------------
>---------------------------
>
> Hi Charles, thanx for the quick reply! :-)
>
> Yes, I tried offscreen rendering, but it didn't seem to make any
> difference at all. Do I need to enable this "MESA" thing before
> offscreen rendering will work?
>
> Charles Boivin wrote:
> >Hey Jared,
> >
> >Have you tried using offscreen rendering? Something like this:
> >
> >this->renWin->SetOffScreenRendering(1);
> >
> >... take a snapshot of the render window here
> >
> >this->renWin->SetOffScreenRendering(0);
> >
> >I use this to output a series of snapshots (to later create an
> >animation) and it seems to work fine for me, although I do not have
> >multiple windows that overlap each other.
> >
> >Hope this helps,
> >
> >Charles
> >
> >>>>"Jared Cohen" <Jared.Cohen at noaa.gov> 10/27/04 11:35am >>>
> >
> > Hi all. I'm part of a team that's building a large, multi-window GUI;
> >
> >one of the windows contains the VTK RenderWindow. We implemented a
> >function to save the scene as a PNG, but there's a problem: if any of
> >the other windows are in the way of the RenderWindow, they get
> >incorporated into the resulting PNG snapshot! What I want to do is take
> >
> >a snapshot of ONLY the contents of the RenderWindow, regardless of
> >whether or not there are other windows in front of the RenderWindow. Is
> >
> >there a way to do this?
More information about the vtkusers
mailing list