[vtkusers] transparent 3D over 2D

Chris Volpe ARA/SED cvolpe at ara.com
Mon Jul 11 08:46:51 EDT 2011


David-

Thanks for the info. I created two renderers as you suggested and added them to the render window in the order you specified. Unfortunately, the background image (in the renderer added first) is not visible at all anymore. It's as if the second renderer clears the frame buffer entirely before rendering, thereby blowing away the output of the first renderer. Is there a way around that? If so, I think we'll have my problem solved!

Thanks again,

-Chris

> -----Original Message-----
> From: David Gobbi [mailto:david.gobbi at gmail.com]
> Sent: Friday, July 08, 2011 5:49 PM
> To: Chris Volpe ARA/SED
> Cc: vtkusers
> Subject: Re: [vtkusers] transparent 3D over 2D
> 
> Hi Chris,
> 
> Calling SetDisplayLocationToBackground() does not cause the image
> to be rendered first.  In VTK, the 2D actors are always rendered last.
> All that SetDisplayLocationToBackground() does is change the depth
> buffer value that is used when the 2D actor is rendered.
> 
> The order in which actors/actor2Ds are added only matters for things
> that are drawn in the same pass.  As I mentioned above, 2D actors
> are always drawn in the final pass.
> 
> The reason that the image ended up obscuring the geometry is that,
> VTK does not write to the depth buffer in the translucent pass...
> combine this with the fact that the image is drawn last, and the
> image obscures the geometry.  I had forgotten about this issue.
> 
> So now that I consider the issue, I don't know if there is an easy
> solution.  This would all be fairly simple if VTK had an underlay
> pass, but it doesn't... it tries to "fake" an underlay pass by
> rendering a 2D overlay just in front of the rear clipping plane (!!).
> 
> So the only fix, which is counterintuitive, is to do the overlay with
> two renderers.  Just add two renderers to your RenderWindow where you
> would usually just add one.  The first renderer you add will render
> first.  The second renderer will render over top.  Image in the first,
> translucent geometry in the second.
> 
> Let me know if that works.
> 
>  - David
> 
> On Fri, Jul 8, 2011 at 3:22 PM, Chris Volpe ARA/SED <cvolpe at ara.com>
> wrote:
> > David-
> >
> >
> >
> > Unless I have misunderstood something, the image rendering is clearly
> being
> > done first, because I have SetDisplayLocationToBackground() on the
> Actor2D's
> > property. If my geometry were not being rendered in the translucent
> pass (I
> > didn't even know there *was* a "translucent pass" - thanks for the
> info!),
> > would I still be able to see one piece of geometry through another?
> >
> >
> >
> > Anyway, I tried what you said - setting the opacity to  .995 on the
> > geometry's actor's property - and that made it worse. Now, all of a
> sudden,
> > the image is no longer drawn in the background - it's obscuring all
> the
> > geometry.
> >
> >
> >
> > Does the order in which the Actors and Actor2Ds get added to the
> renderer
> > matter?
> >
> >
> >
> > Thanks,
> >
> > -Chris
> >
> >
> >
> > From: David Gobbi [mailto:david.gobbi at gmail.com]
> > Sent: Friday, July 08, 2011 3:12 PM
> >
> > To: Chris Volpe ARA/SED
> > Cc: vtkusers
> > Subject: Re: [vtkusers] transparent 3D over 2D
> >
> >
> >
> > Then the problem is the order in which the items are rendered.
>  Perhaps your
> > geometry is not being rendered in the translucent pass.  If you set
> the
> > Opacity in the property to 0.995, that will force the geometry to be
> > rendered in the translucent pass, i.e. after all opaque geometry has
> already
> > rendered.  It is the Opacity of the property, rather than the alpha
> of the
> > lookup table, that VTK uses to decide whether to use the translucent
> pass.
> >
> >
> >
> > What is probably happening in your case is that the geometry is
> rendered
> > first, causing a write to the depth buffer.  Then the image is drawn
> > afterwards, and the depth buffer check causes it not to be written to
> any
> > pixels that the geometry rendered to.
> >
> >
> >
> >  - David
> >
> >
> >
> >
> >
> > On Fri, Jul 8, 2011 at 12:29 PM, Chris Volpe ARA/SED <cvolpe at ara.com>
> wrote:
> >
> > If depth peeling is something that's off by default, unless you
> explicitly
> > enable it, then I'm not doing it. (In fact, I've never heard of it.)
> I just
> > have 3D geometry with a color lookup table that varies the hue but
> keeps
> > alpha constant at 0.5.
> >
> >
> > -Chris
> >
> >> -----Original Message-----
> >> From: David Gobbi [mailto:david.gobbi at gmail.com]
> >> Sent: Friday, July 08, 2011 12:43 PM
> >> To: Chris Volpe ARA/SED
> >> Cc: vtkusers
> >> Subject: Re: [vtkusers] transparent 3D over 2D
> >>
> >> Are you using depth peeling?  Depth peeling disables alpha, it is an
> >> alternate strategy to translucent rendering that doesn't use alpha
> and
> >> as far as I understand, it actually requires alpha-blending to
> turned
> >> off in order to work.
> >>
> >> So I don't think that depth peeling can be used when an underlay is
> >> present (or at least, not in VTK).
> >>
> >>  - David
> >>
> >>
> >> On Fri, Jul 8, 2011 at 10:32 AM, Chris Volpe ARA/SED
> <cvolpe at ara.com>
> >> wrote:
> >> > I'm rendering 3D geometry over a 2D image drawn onto the rendering
> >> window
> >> > using an Actor2D. The 3D geometry  is semi transparent, as can be
> >> seen when
> >> > some 3D geometry is drawn on top of other 3D geometry. However,
> the
> >> > transparency does not permit seeing the background image through
> the
> >> 3D
> >> > geometry. For purposes of the background image, the 3D geometry is
> >> > completely opaque. Is this an inherent limitation, or am I doing
> >> something
> >> > wrong?
> >> >
> >> >
> >> >
> >> > Thanks,
> >> >
> >> >
> >> >
> >> > Chris
> >> >
> >> > --
> >> > Christopher R. Volpe,
> >> > Ph.D.
> >> Email:
> >> > cvolpe at ara.com
> >> >
> >> > Senior Scientist, Information Exploitation Systems
> Main
> >> Desk:
> >> > 919-582-3300
> >> >
> >> > Applied Research Associates,
> >> > Inc                                                     Direct:
> 919-
> >> 582-3380
> >> >
> >> > 8537 Six Forks Rd., Suite
> >> > 6000
> Fax :
> >> > 919-582-3301
> >> >
> >> > Raleigh, NC 27615                                         Web:
> >> > http://www.ara.com/offices/NC.htm
> >
> >
> >
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> >
> > Please keep messages on-topic and check the VTK FAQ at:
> > http://www.vtk.org/Wiki/VTK_FAQ
> >
> > Follow this link to subscribe/unsubscribe:
> > http://www.vtk.org/mailman/listinfo/vtkusers
> >
> >



More information about the vtkusers mailing list