[vtkusers] How to capture images from ONLY the RenderWindow?

Jared Cohen Jared.Cohen at noaa.gov
Wed Nov 3 14:38:14 EST 2004


Yes, that's what I ended up doing as well. Thanx for the info :-)
Sorry for the late reply, I wasn't able to check my mail all week :-)

>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 <http://www.vtk.org/mailman/listinfo/vtkusers>> 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?
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20041103/aecbaad5/attachment.htm>


More information about the vtkusers mailing list