Thanks a lot ! I did some changes to have the same osg file, and it work very good now !!!
It seems to be a mix of different settings. thanks for your help. Regards, Vincent. 2008/7/15 dimi christop <[EMAIL PROTECTED]>: > Ok, > I fixed your osg file so that it displays varrying tranparency (top > transparent, bottom opaque). > I assume this is what you wanted. > Do an diff on the files and see what you did wrong.... You set the colors > per primitive and not per vertex. > > > > ----- Original Message ---- > From: Vincent Bourdier <[EMAIL PROTECTED]> > To: OpenSceneGraph Users <[email protected]> > Sent: Tuesday, July 15, 2008 1:19:23 PM > Subject: Re: [osg-users] Transparency on a drawable > > Hi Dimi, > > this is my code : > > osg::StateSet* state = g->getOrCreateStateSet(); > > state->setMode(GL_BLEND,osg::StateAttribute::ON|osg::StateAttribute::OVERRIDE); > osg::Material* mat = new osg::Material; > mat->setAlpha(osg::Material::FRONT_AND_BACK, alpha); > mat->setColorMode(osg::Material::AMBIENT_AND_DIFFUSE); > state->setAttributeAndModes(mat,osg::StateAttribute::ON | > osg::StateAttribute::OVERRIDE); > > osg::BlendFunc* bf = new osg::BlendFunc(osg::BlendFunc::SRC_ALPHA, > osg::BlendFunc::ONE_MINUS_SRC_ALPHA ); > state->setAttributeAndModes(bf); > > state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); > state->setMode(GL_LIGHTING, osg::StateAttribute::OFF); > > g->setStateSet(state); > > there is no difference at all... > > thanks for help. > > Vincent. > > > 2008/7/15 dimi christop <[EMAIL PROTECTED]>: > >> This is because when you set alpha to the vertices and attach also an >> material >> and a blending function you have to setColorMode (AMBIENT_DIFFUSE) on the >> material. >> >> Dimi >> >> ----- Original Message ---- >> From: Vincent Bourdier <[EMAIL PROTECTED]> >> To: OpenSceneGraph Users <[email protected]> >> Sent: Tuesday, July 15, 2008 11:09:23 AM >> Subject: Re: [osg-users] Transparency on a drawable >> >> >> Hi Paul. >> >> Nothing changes with color's alpha changed... >> >> >> 2008/7/15 Paul Speed <[EMAIL PROTECTED]>: >> >>> >>> >>> Vincent Bourdier wrote: >>> >>>> Hi >>>> >>>> Yes, no solutions seems to work on my problem. >>>> Because all the propositions concern nodes, I permit to remember that I >>>> am looking at a way to set alpha level on a osg::Geometry ... >>>> >>>> On node I already have a method using material : set alpha channel, and >>>> it works good... But on my geometry nothing look to work good... >>>> >>>> This is all my geometry creator code : >>>> >>>> osg::ref_ptr<osg::Geometry> builtGeometry(){ >>>> >>>> double alpha = 0.1; >>>> osg::Vec4 grey(0.4,0.4,0.4,1.0); >>>> osg::Vec4 yellow(1.0,1.0,0.0,1.0); >>>> >>> >>> What happens if you put alpha for the fourth value in your color? >>> -Paul >>> >>> >>>> osg::Geometry* g = new osg::Geometry; >>>> osg::Vec3Array* vertices = new osg::Vec3Array(); >>>> osg::Vec3Array* normals = new osg::Vec3Array(); >>>> osg::Vec4Array* colors = new osg::Vec4Array(); >>>> >>>> normals->push_back(osg::Vec3(0,0,1)); >>>> colors->push_back(grey); >>>> >>>> //---- >>>> //QUAD >>>> vertices->push_back(osg::Vec3( _width/2.0, _height + _dist, >>>> _offset)); >>>> vertices->push_back(osg::Vec3(-_width/2.0, _height + _dist, >>>> _offset)); >>>> vertices->push_back(osg::Vec3(-_width/2.0, 0.0 + _dist, >>>> _offset)); >>>> vertices->push_back(osg::Vec3( _width/2.0, 0.0 + _dist, >>>> _offset)); >>>> >>>> if(!_empty) >>>> g->addPrimitiveSet(new >>>> osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4)); >>>> else >>>> g->addPrimitiveSet(new >>>> osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP,0,4)); >>>> >>>> >>>> //----- >>>> //LINE >>>> >>>> vertices->push_back(osg::Vec3(0.0, 1.0, _offset)); >>>> vertices->push_back(osg::Vec3(0.0, _dist, _offset)); >>>> colors->push_back(grey); >>>> g->addPrimitiveSet(new >>>> osg::DrawArrays(osg::PrimitiveSet::LINES,4,2)); >>>> >>>> >>>> //---- >>>> //LINE_LOOP >>>> >>>> vertices->push_back(osg::Vec3( _width/2.0, _height + _dist, >>>> _offset/2.0)); >>>> vertices->push_back(osg::Vec3(-_width/2.0, _height + _dist, >>>> _offset/2.0)); >>>> vertices->push_back(osg::Vec3(-_width/2.0, 0.0 + _dist, >>>> _offset/2.0)); >>>> vertices->push_back(osg::Vec3( _width/2.0, 0.0 + _dist, >>>> _offset/2.0)); >>>> >>>> colors->push_back(yellow); >>>> g->addPrimitiveSet(new >>>> osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP,6,4)); >>>> >>>> g->setNormalArray(normals); >>>> g->setVertexArray(vertices); >>>> g->setColorArray(colors); >>>> >>>> g->setNormalBinding(osg::Geometry::BIND_OVERALL); >>>> g->setColorBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET); >>>> g->setDataVariance(osg::Object::DYNAMIC); >>>> >>>> >>>> //TRANSPARENCY >>>> >>>> osg::StateSet* state = g->getOrCreateStateSet(); >>>> >>>> >>>> state->setMode(GL_BLEND,osg::StateAttribute::ON|osg::StateAttribute::OVERRIDE); >>>> osg::Material* mat = new osg::Material; >>>> mat->setAlpha(osg::Material::FRONT_AND_BACK, alpha); >>>> state->setAttributeAndModes(mat,osg::StateAttribute::ON | >>>> osg::StateAttribute::OVERRIDE); >>>> >>>> osg::BlendFunc* bf = new >>>> osg::BlendFunc(osg::BlendFunc::SRC_ALPHA, >>>> osg::BlendFunc::ONE_MINUS_SRC_ALPHA ); >>>> state->setAttributeAndModes(bf); >>>> >>>> state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); >>>> state->setMode(GL_LIGHTING, osg::StateAttribute::OFF); >>>> >>>> g->setStateSet(state); >>>> >>>> return g; >>>> } >>>> >>>> >>>> Thanks for your help. >>>> >>>> Regards, >>>> >>>> Vincent. >>>> >>>> 2008/7/15 dimi christop <[EMAIL PROTECTED] <mailto: >>>> [EMAIL PROTECTED]>>: >>>> >>>> >>>> Hi Vincent, >>>> I see you still havent found a solution. So here I send you a >>>> complete example of transpareny. >>>> Its a modification of the Viewer example from the Qucik start guide. >>>> It loads up a cow and overrides the alpha to 0.1. >>>> Hope you can start from there. >>>> >>>> Dimi >>>> >>>> // Viewer Example, A minimal OSG viewer >>>> #include <osgDB/WriteFile> >>>> #include <osg/Notify> >>>> #include <osgViewer/Viewer> >>>> #include <osgDB/ReadFile> >>>> #include <osg/MatrixTransform> >>>> #include <osg/Geode> >>>> #include <osg/Geometry> >>>> #include <osg/StateSet> >>>> #include <osg/StateAttribute> >>>> #include <osg/CullFace> >>>> #include <osg/Point> >>>> #include <osg/Light> >>>> #include <osg/LightSource> >>>> #include <osg/BlendFunc> >>>> #include <osg/Material> >>>> #include <osg/PolygonMode> >>>> #include <osg/Notify> >>>> int >>>> main( int, char ** ) >>>> { >>>> // Create a Viewer. >>>> osgViewer::Viewer viewer; >>>> // Load a model and add it to the Viewer. >>>> osg::ref_ptr<osg::Node> nde = osgDB::readNodeFile( "cow.osg" ); >>>> // Create StateSet and Material >>>> osg::StateSet* state2 = nde->getOrCreateStateSet(); >>>> osg::ref_ptr<osg::Material> mat2 = new osg::Material; >>>> // Set alpha to 0.1 >>>> mat2->setAlpha(osg::Material::FRONT_AND_BACK, 0.1); >>>> state2->setAttributeAndModes( mat2.get() , >>>> osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE); >>>> // Turn on blending >>>> osg::BlendFunc* bf = new >>>> osg::BlendFunc(osg::BlendFunc::SRC_ALPHA, >>>> osg::BlendFunc::ONE_MINUS_SRC_ALPHA ); >>>> state2->setAttributeAndModes(bf); >>>> viewer.setSceneData(nde.get()); >>>> if (!viewer.getSceneData()) >>>> { >>>> osg::notify( osg::FATAL ) << "Unable to load data file. >>>> Exiting." << std::endl; >>>> return 1; >>>> } >>>> >>>> // Display, and main loop. >>>> return viewer.run(); >>>> } >>>> >>>> ----- Original Message ---- >>>> From: Vincent Bourdier <[EMAIL PROTECTED] >>>> <mailto:[EMAIL PROTECTED]>> >>>> To: OpenSceneGraph Users <[email protected] >>>> <mailto:[email protected]>> >>>> Sent: Tuesday, July 15, 2008 9:04:23 AM >>>> Subject: Re: [osg-users] Transparency on a drawable >>>> >>>> Hi Ulrich >>>> >>>> thanks for help. >>>> >>>> I use/try this code for the moment : >>>> >>>> osg::StateSet* state = g->getOrCreateStateSet(); >>>> >>>> >>>> state->setMode(GL_BLEND,osg::StateAttribute::ON|osg::StateAttribute::OVERRIDE); >>>> osg::Material* mat = >>>> >>>> (osg::Material*)state->getAttribute(osg::StateAttribute::MATERIAL); >>>> if(!mat) { >>>> mat = new osg::Material; } >>>> mat->setAlpha(osg::Material::FRONT_AND_BACK, alpha); >>>> state->setAttributeAndModes(mat,osg::StateAttribute::ON); >>>> state->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); >>>> state->setMode(GL_LIGHTING, osg::StateAttribute::OFF); >>>> >>>> But nothing appear transparent... >>>> >>>> Regards, >>>> Vincent >>>> >>>> 2008/7/12 Ulrich Hertlein <[EMAIL PROTECTED] >>>> <mailto:[EMAIL PROTECTED]>>: >>>> >>>> >>>> Vincent Bourdier wrote: >>>> >>>> I do exactly the same things, on Nodes... >>>> >>>> stateset->setMode(GL_BLEND, >>>> osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON ); >>>> >>>> >>>> stateset->setRenderingHint(osg::StateSet::TRANSPARENT_BIN); >>>> >>>> >>>> Are you sure you're doing this last line? It's not in the code >>>> snippet you posted initially... >>>> >>>> Cheers, >>>> /ulrich >>>> >>>> >>>> double opacity = 0.1; >>>> >>>> osg::StateSet* state = >>>> mygometry->getOrCreateStateSet(); >>>> state->setMode(GL_BLEND,osg::StateAttribute::ON| >>>> osg::StateAttribute::OVERRIDE); >>>> osg::Material* mat = >>>> (osg::Material*)state->getAttribute >>>> (osg::StateAttribute::MATERIAL); >>>> if(!mat) { >>>> mat = new osg::Material; >>>> mat->setAlpha(osg::Material::FRONT_AND_BACK, >>>> opacity); >>>> >>>> state->setAttributeAndModes(mat,osg::StateAttribute::ON); >>>> } >>>> >>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> [email protected] >>>> <mailto:[email protected]> >>>> >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>>> >>>> >>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> [email protected] >>>> <mailto:[email protected]> >>>> >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>>> >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> _______________________________________________ >>>> osg-users mailing list >>>> [email protected] >>>> >>>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>>> >>> >>> _______________________________________________ >>> osg-users mailing list >>> [email protected] >>> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >>> >> >> >> >> _______________________________________________ >> osg-users mailing list >> [email protected] >> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org >> >> > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > >
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

