<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.6000.16525" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff background="">
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2>Hi Christophe --</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2>If I'm reading your email right, you have two 
concerns:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2> 1. You don't understand how SceneView uses its _light 
member variable. Without digging into the code, I'm not sure either. But I 
suspect it circumvents the typical update/cull traversals and slaps the light 
state directly into the positional state of the draw traversal. As _light just 
controls GL_LIGHT_0, you don't need to access _light or even its StateSet -- you 
just need to specify your own alternate values for 
GL_LIGHT_0.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2> 2. You seem to be unsure that you can fully control 
lighting and simultaneously use osgViewer. This is not the case, and again I 
direct you to the osglight example program, which uses osgViewer and overrides 
lighting effects directly in the scene graph.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2>Hope that helps,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2>   -Paul</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=578023114-13092007><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> 
  osg-users-bounces@lists.openscenegraph.org 
  [mailto:osg-users-bounces@lists.openscenegraph.org] <B>On Behalf Of 
  </B>Christophe Medard<BR><B>Sent:</B> Thursday, September 13, 2007 2:57 
  AM<BR><B>To:</B> OpenSceneGraph Users<BR><B>Subject:</B> [osg-users] Lighting 
  behavior and osgViewer::osgViewer<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV><FONT face=Arial size=2>OK thanks, the code I was looking for to 
  understand the whole thing lies inside osgUtil::SceneView.cpp.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>The chain is :</FONT></DIV>
  <DIV><FONT face=Arial size=2>osgViewer::<FONT 
  size=2>Viewer::setUpRenderingSupport()  --> osgUtil::<FONT 
  size=2>SceneView::setDefaults() , on each SceneView the Viewer 
  has...</FONT></FONT></FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>The _light member inside osgViewer::Viewer in the 
  code as is, as far as I can see, isn't associated to any StateSet nor any 
  LightSource so is useless for now (but maybe is to add itself to the 
  SceneView::_globalStateSet one in the future versions of OSG). 
  OK...</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>Having multiple levels where things can be 
  (osg::Light in this case) is a bit tricky indeed.</FONT></DIV>
  <DIV><FONT face=Arial size=2>Thanks for the help, I understand the 
  mecanics...</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>---</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>The ony thing that remains is that :</FONT></DIV>
  <DIV><FONT face=Arial size=2>-> SceneView::_globalStateSet  isn't set 
  in any scenegraph the user can modify after osgViewer creation : it is 
  used along display list (if I understand correctly, being still a little 
  rookie), established through cullVisitor and alike</FONT></DIV>
  <DIV><FONT face=Arial size=2>-> due to protection levels one cannot access 
  easily to sceneViews and their _globalStateSet having a pointer to the 
  mere Viewer.</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>Therefore, in other words, using osgViewer as is, 
  and remaining at the scene graph level isn't possible to solve the 
  problem.</FONT></DIV>
  <DIV><FONT face=Arial size=2>The other alternative would be to override some 
  function of osgViewer::Viewer or osgUtil::SceneViews but there again it's hard 
  since the non-virtual status of concerned methods prevent their 
  overriding...</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>To sum up, it's quite hard to obtain a neutral 
  lighting (but maybe also of other properties) with current version of osgView 
  and osgViewer.</FONT></DIV>
  <DIV><FONT face=Arial size=2>Is there examples of OpenSceneGraph mainloops 
  that don't use osgViewer as the core ?? </FONT></DIV>
  <DIV><FONT face=Arial size=2>(It would prevent to have to do those 
  resettings...)</FONT></DIV>
  <DIV><FONT face=Arial size=2>I don't have seen any in <A 
  href="http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.0.0/examples/">http://www.openscenegraph.org/svn/osg/OpenSceneGraph/tags/OpenSceneGraph-2.0.0/examples/</A> .</FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <DIV><FONT face=Arial size=2>-- <BR>Christophe Médard<BR>Société OKTAL (<A 
  href="http://www.oktal.fr">http://www.oktal.fr</A>)<BR>2 impasse 
  Boudeville<BR>31100 Toulouse (France)<BR>Tél. : (+33) 5 62 11 50 10<BR>Fax : 
  (+33) 5 62 11 50 29<BR></FONT></DIV>
  <DIV><FONT face=Arial size=2></FONT> </DIV>
  <BLOCKQUOTE 
  style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
    <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
    <DIV 
    style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
    <A title=pmartz@skew-matrix.com href="mailto:pmartz@skew-matrix.com">Paul 
    Martz</A> </DIV>
    <DIV style="FONT: 10pt arial"><B>To:</B> <A 
    title=osg-users@lists.openscenegraph.org 
    href="mailto:osg-users@lists.openscenegraph.org">'OpenSceneGraph Users'</A> 
    </DIV>
    <DIV style="FONT: 10pt arial">
    <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
      <DIV dir=ltr align=left><FONT face=Arial><FONT size=2><SPAN 
      class=906562516-12092007><FONT 
      color=#0000ff></FONT></SPAN></FONT></FONT></DIV></BLOCKQUOTE><FONT 
    face=Arial><FONT size=2><SPAN class=906562516-12092007><FONT 
    color=#0000ff>The fact that osgViewer/SceneView set up default lighting does 
    seem to confuse many users, as your posting demonstrates. However, lighting 
    state is really no different from any other state. You can control it in 
    your own scene graph using standard OSG setMode, setAttribute, and 
    setAttributeAndModes calls.</FONT></SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007></SPAN></FONT></FONT> </DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007>StateSet::setMode( GL_LIGHTING, OFF ); // Disable 
    the OpenGL lighting feature</SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007>StateSet::setMode( GL_LIGHT_0, OFF ); // Disable 
    OpenGL light 0</SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007></SPAN></FONT></FONT> </DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN class=906562516-12092007>The 
    above two calls disable the two features enabled in osgViewer/SceneView 
    by default.</SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007></SPAN></FONT></FONT> </DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN class=906562516-12092007>If you 
    want to leave lighting and light 0 enabled and simply control the light's 
    attribute (position, color, etc) then you should use osg::Light and 
    the osg::LightSource node as demonstrated in the osglighting example 
    program.</SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN 
    class=906562516-12092007></SPAN></FONT></FONT> </DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN class=906562516-12092007>Hope 
    that helps,</SPAN></FONT></FONT></DIV>
    <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left><FONT 
    face=Arial><FONT color=#0000ff size=2><SPAN class=906562516-12092007>
    <DIV align=left><FONT face=Arial color=#000000 size=2></FONT> </DIV>
    <DIV align=left><FONT face=Arial size=2>Paul Martz</FONT></DIV>
    <DIV 
  align=left><STRONG></STRONG> </DIV></SPAN></FONT></FONT></DIV></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>