(Two Pauls double-teaming...)

I believe this comes down to the brute force way that OSG sorts drawables in the transparent bin. This is not always sufficient to ensure proper rendering order... and there's really not much OSG can do about either. At least not and still render in real time.

If all of one type of object is inside of another and is frequently obscured by the outer object then you can use the bin numbers (setRenderBinDetails if my memory is good) to make sure the inside objects are always drawn before the outer. The problem you see happens because the outer object is drawn first and fills the Z-Buffer... when the interior objects go to draw they are obscured since the z-buffer doesn't know about that.

Hopefully that isn't review. I think everyone on this list has hit this one time or another and the work-arounds always depend on the situation. Sometimes controlling rendering order with the relative bin numbers is a work-around.

-Paul

Netschke, Greg wrote:
Thanks for the reply Paul. I did what you said but I don't see anything really wrong. Each object is its own node so the Drawable/Geometry is separate. However a particular shape may be referenced thru a transform more than once. In other works I use a library of objects and place them through transforms multiple times. Could it be the last reference is applied to all? I think my StateSets are setup much like the samples, except I have lighting turned ON. I can see any difference if I turn it off though. All my translucent StateSets are setup as follows. The colors change but the rest is the same. osg::Vec4 auxClr( 0.5f, 0.5f, 0.5f, 0.4f );
    osg::Material*  auxMat = new osg::Material();
    auxMat->setAmbient(    osg::Material::FRONT_AND_BACK, auxClr );
    auxMat->setDiffuse(    osg::Material::FRONT_AND_BACK, auxClr );
auxMat->setSpecular( osg::Material::FRONT_AND_BACK, osg::Vec4(1, 1, 1, 1));
    auxMat->setShininess(  osg::Material::FRONT_AND_BACK, 64.0f);
osg::StateSet* auxSS = new osg::StateSet(); auxSS->setAttributeAndModes(auxMat, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE ); auxSS->setRenderingHint( osg::StateSet::TRANSPARENT_BIN | osg::StateAttribute::OVERRIDE ); auxSS->setMode( GL_BLEND, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE ); auxSS->setMode( GL_LIGHTING, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE ); auxNode->setStateSet(auxSS); Greg

------------------------------------------------------------------------
*From:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] *On Behalf Of *Paul Martz
*Sent:* Wednesday, April 18, 2007 3:31 PM
*To:* 'osg users'
*Subject:* RE: [osg-users] translucent objects disappear

Sounds like you either didn't set the rendering hint for transparency, or all your geometry is within a single Drawable/Geometry object, or both. As a result, some of your geometry is losing the depth test to other geometry. To set the render hint correctly, try searching the example code for "setRenderingHint". Once that's set, any geometry that could be in front of or behind other transparent geometry must be separated out from each other and placed in their own individual Drawables. Then it should work.
   -Paul
------------------------------------------------------------------------ *From:* [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] *On Behalf Of *Netschke, Greg
*Sent:* Wednesday, April 18, 2007 3:10 PM
*To:* osg users
*Subject:* [osg-users] translucent objects disappear

    I have a scene where I have translucent objects inside of
    translucent object.  This causes the interior objects to disappear
    entirely.  If I hide the containing translucent object, then the
interior ones show just fine. This is only some of the contained objects. Other contained objects
    show just fine.  As I rotate the view, objects are flashing in and out.
Any ideas what is causing this? I attached a couple of small images to show what I mean. Thanks,
    Greg


------------------------------------------------------------------------

_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/

Reply via email to