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
node_debug.osg
Description: Binary data
_______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

