[vtkusers] transparent 3D over 2D

David Gobbi david.gobbi at gmail.com
Mon Jul 11 10:00:25 EDT 2011


Good to hear that it worked.

 - David

On Mon, Jul 11, 2011 at 7:44 AM, Chris Volpe ARA/SED <cvolpe at ara.com> wrote:
> That's the ticket! Thanks, David. I must be blind -- I looked on the vtkRenderer doxygen page for such a method, but I just didn't see it. I think I was looking for "clear", not "erase".
>
> -Chris
>
>
>> -----Original Message-----
>> From: David Gobbi [mailto:david.gobbi at gmail.com]
>> Sent: Monday, July 11, 2011 9:39 AM
>> To: Chris Volpe ARA/SED
>> Cc: vtkusers
>> Subject: Re: [vtkusers] transparent 3D over 2D
>>
>> Hi Chris,
>>
>> Try ren->EraseOff() on the second renderer, I checked through some of
>> my own code and that is what I had been using when overlaying
>> renderers.
>>
>>  - David
>>
>>
>> On Mon, Jul 11, 2011 at 6:46 AM, Chris Volpe ARA/SED <cvolpe at ara.com>
>> wrote:
>> > 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
>> >> >
>> >> >
>> > _______________________________________________
>> > 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
>> >
> _______________________________________________
> 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