Re: [osg-users] RenderBin understanding
Hi Peter, what I'm asking: -if an object has a parent osg::Group that has been set to RenderBin with a value of 10 and the object itself uses RenderBin with a value of 20 then which is used? I think the object should be rendered after its parent, no matter whose bin number is greater, because renderbins are generated in CullVisitor::pushStateSet(). And the CullVisitor will traverse nodes from parents to children. -an .osg file can have renderbin values too? so if I load an .osg file and set it to have RenderBin 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. I think bin number and bin name can both be stored in .osg files. And the root node of file would also have renderbin settings if you set one. Regards, Wang Rui ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] RenderBin understanding
thanks, this helped. the nested makes perfect sense.. i'm on track again, once again thanks, peter On Mon, Nov 3, 2008 at 3:06 PM, Lionel Lagarde [EMAIL PROTECTED]wrote: Hi Peter, Peter Wraae Marino wrote: Hi Users, trying to clarify some specs on the renderbin, perhaps someone could help: what I'm assuming: -there are two default renderbins created at startup RenderBin and DepthSortedBin -DepthSortedBin is always render after RenderBin -DepthSortedBin sorts objects from back to front -higher renderbin number means rendering is done later -renderbins are sorted by states what I'm asking: -if an object has a parent osg::Group that has been set to RenderBin with a value of 10 and the object itself uses RenderBin with a value of 20 then which is used? RenderBins are nested. If a node has a bin number different from the current render bin (or its StateSet render bin mode is set to override), a new render bin is created and is added to the current render bin. It become the current render bin. So, if a node has a bin number of 20 and it is different from the current bin number, a render bin 20 is added to the current render bin. -an .osg file can have renderbin values too? so if I load an .osg file and set it to have RenderBin 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. An osg file can contain render bin values. If you load an osg file and set the render bin number of the root node to 10, you don't override the render bin numbers of the nodes (or just the render bin number of the root node). Because render bins are nested during the scene culling, it will force the cull visitor to create a specific render bin for the whole sub-graph. -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site -- ___ osg-users mailing [EMAIL PROTECTED]://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] RenderBin understanding
Whoops, forgot to attach. MONDAY... *sigh* On Mon, 2008-11-03 at 09:48 -0500, Jeremy Moles wrote: Here's a quick example you can use to play around with RenderBin settings; notice how you can make one object appear on top of another, just by changing the binNum. I'm not sure if this is a worth examples addition, but perhaps. On Mon, 2008-11-03 at 15:19 +0100, Peter Wraae Marino wrote: thanks, this helped. the nested makes perfect sense.. i'm on track again, once again thanks, peter On Mon, Nov 3, 2008 at 3:06 PM, Lionel Lagarde [EMAIL PROTECTED] wrote: Hi Peter, Peter Wraae Marino wrote: Hi Users, trying to clarify some specs on the renderbin, perhaps someone could help: what I'm assuming: -there are two default renderbins created at startup RenderBin and DepthSortedBin -DepthSortedBin is always render after RenderBin -DepthSortedBin sorts objects from back to front -higher renderbin number means rendering is done later -renderbins are sorted by states what I'm asking: -if an object has a parent osg::Group that has been set to RenderBin with a value of 10 and the object itself uses RenderBin with a value of 20 then which is used? RenderBins are nested. If a node has a bin number different from the current render bin (or its StateSet render bin mode is set to override), a new render bin is created and is added to the current render bin. It become the current render bin. So, if a node has a bin number of 20 and it is different from the current bin number, a render bin 20 is added to the current render bin. -an .osg file can have renderbin values too? so if I load an .osg file and set it to have RenderBin 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. An osg file can contain render bin values. If you load an osg file and set the render bin number of the root node to 10, you don't override the render bin numbers of the nodes (or just the render bin number of the root node). Because render bins are nested during the scene culling, it will force the cull visitor to create a specific render bin for the whole sub-graph. -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org #include osg/Geode #include osg/Geometry #include osg/MatrixTransform #include osgViewer/Viewer #include osgViewer/ViewerEventHandlers osg::Geometry* createGeometry(int renderBin, const osg::Vec4 color) { static osg::Vec3::value_type size = 1.0f; osg::Geometry* geom= new osg::Geometry(); osg::Vec3Array* coords = new osg::Vec3Array(4); osg::Vec4Array* colors = new osg::Vec4Array(1); osg::Vec3Array* normals = new osg::Vec3Array(1); (*coords)[0] = osg::Vec3(-size, 0.0f, -size); (*coords)[1] = osg::Vec3(size, 0.0f, -size); (*coords)[2] = osg::Vec3(size, 0.0f, size); (*coords)[3] = osg::Vec3(-size, 0.0f, size); (*colors)[0] = color; (*normals)[0] = osg::Vec3(0.0f, -1.0f, 0.0f); geom-setVertexArray(coords); geom-setColorArray(colors); geom-setColorBinding(osg::Geometry::BIND_OVERALL); geom-setNormalArray(normals); geom-setNormalBinding(osg::Geometry::BIND_OVERALL); geom-addPrimitiveSet(new
Re: [osg-users] RenderBin understanding
Hi Peter, Peter Wraae Marino wrote: Hi Users, trying to clarify some specs on the renderbin, perhaps someone could help: whatI'm assuming: -there are two default renderbins created at startup "RenderBin" and "DepthSortedBin" -"DepthSortedBin" is always render after "RenderBin" -"DepthSortedBin"sorts objects from back to front -higher renderbin number means rendering is done later -renderbins are sorted by states what I'm asking: -if an object has a parent osg::Group that has been set to "RenderBin" with a value of 10 and the object itself uses "RenderBin" with a value of 20 then which is used? RenderBins are nested. If a node has a bin number different from the current render bin (or its StateSet render bin mode is set to override), a new render bin is created and is added to the current render bin. It become the current render bin. So, if a node has a bin number of 20 and it is different from the current bin number, a render bin 20 is added to the current render bin. -an .osg file can have renderbin values too? so if I load an .osg file and set it to have "RenderBin" 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. An osg file can contain render bin values. If you load an osg file and set the render bin number of the root node to 10, you don't override the render bin numbers of the nodes (or just the render bin number of the root node). Because render bins are nested during the scene culling, it will force the cull visitor to create a specific render bin for the whole sub-graph. -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] RenderBin understanding
Here's a quick example you can use to play around with RenderBin settings; notice how you can make one object appear on top of another, just by changing the binNum. I'm not sure if this is a worth examples addition, but perhaps. On Mon, 2008-11-03 at 15:19 +0100, Peter Wraae Marino wrote: thanks, this helped. the nested makes perfect sense.. i'm on track again, once again thanks, peter On Mon, Nov 3, 2008 at 3:06 PM, Lionel Lagarde [EMAIL PROTECTED] wrote: Hi Peter, Peter Wraae Marino wrote: Hi Users, trying to clarify some specs on the renderbin, perhaps someone could help: what I'm assuming: -there are two default renderbins created at startup RenderBin and DepthSortedBin -DepthSortedBin is always render after RenderBin -DepthSortedBin sorts objects from back to front -higher renderbin number means rendering is done later -renderbins are sorted by states what I'm asking: -if an object has a parent osg::Group that has been set to RenderBin with a value of 10 and the object itself uses RenderBin with a value of 20 then which is used? RenderBins are nested. If a node has a bin number different from the current render bin (or its StateSet render bin mode is set to override), a new render bin is created and is added to the current render bin. It become the current render bin. So, if a node has a bin number of 20 and it is different from the current bin number, a render bin 20 is added to the current render bin. -an .osg file can have renderbin values too? so if I load an .osg file and set it to have RenderBin 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. An osg file can contain render bin values. If you load an osg file and set the render bin number of the root node to 10, you don't override the render bin numbers of the nodes (or just the render bin number of the root node). Because render bins are nested during the scene culling, it will force the cull visitor to create a specific render bin for the whole sub-graph. -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
Re: [osg-users] RenderBin understanding
The way I've come to look at RenderBins... The bin details are instructions to the CullVisitor. As the CullVisitor walks your scene graph during the cull traversal, it uses these values to build a render graph. (You could say, then, that the structure of this render graph is specified or implied by the bin details associated with each StateSet.) When the CullVisitor finds Drawables, it throws them into the current render graph bin. Alternatively, one could imagine a different scene graph design that features an explicit, application-created render graph, with application-specified association between scene graph nodes/drawables and render graph nodes. If you can picture this type of implementation in your head, then step back a second and consider that OSG is simply creating this render graph for you during the cull traversal. So what are the bin details? - number: Determines relative processing order of bins in the render graph. This takes nesting into account (unless explicitly disabled), so you could imagine each render graph bin has a unique number that is a std::vector composed of all the bin numbers in a NodePath. - name: Determines how Drawables are sorted within a render graph bin (for example, by depth, by state, by some combination of depth and state, or by some other mechanism). - mode: Tells the CullVisitor whether or not to change the value of the current bin as it walks the scene graph. This stuff is fairly opaque to even those of us experienced with OSG and could really benefit from some proper documentation. In my infinite amount of spare time, I'm considering writing a white paper that documents OSG's bin details scheme, plus maybe creating a NodeVisitor that creates a GraphViz .dot file to visualize the render graph. Hope this helps. -Paul _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Peter Wraae Marino Sent: Monday, November 03, 2008 2:44 AM To: osg-users@lists.openscenegraph.org Subject: [osg-users] RenderBin understanding Hi Users, trying to clarify some specs on the renderbin, perhaps someone could help: what I'm assuming: -there are two default renderbins created at startup RenderBin and DepthSortedBin -DepthSortedBin is always render after RenderBin -DepthSortedBin sorts objects from back to front -higher renderbin number means rendering is done later -renderbins are sorted by states what I'm asking: -if an object has a parent osg::Group that has been set to RenderBin with a value of 10 and the object itself uses RenderBin with a value of 20 then which is used? -an .osg file can have renderbin values too? so if I load an .osg file and set it to have RenderBin 10 do I override the renderbin values in the file? or are they pushed relative to my given value 10? sometimes the .osg file consist of many renderbin values. -- Regards, Peter Wraae Marino www.osghelp.com - OpenSceneGraph support site ___ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org