Re: [osg-users] RenderBin understanding

2008-11-03 Thread Wang Rui
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

2008-11-03 Thread Peter Wraae Marino
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

2008-11-03 Thread Jeremy Moles
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

2008-11-03 Thread Lionel Lagarde




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

2008-11-03 Thread Jeremy Moles
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

2008-11-03 Thread Paul Martz
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