Changeset 20133

Show
Ignore:
Timestamp:
05/04/07 11:06:38 (2 years ago)
Author:
patrick
Message:

Added lighting code to vrj::GlBasicSimulator? so that OSG and OpenSG
application objects do not have to include that code themselves just so that
the simulator renders nicely. OpenGL application objects still have to set up
their lighting manually, but that lighting (or lack thereof) will not impact
the rendering of the simulator components.

Bumped version to 2.1.25.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • juggler/branches/2.2/modules/vrjuggler/ChangeLog

    r20085 r20133  
    11DATE        AUTHOR      CHANGE 
    22----------- ----------- ------------------------------------------------------- 
     3May-04-2007 patrick     Added lighting code to vrj::GlBasicSimulator so that 
     4                        OSG and OpenSG application objects do not have to 
     5                        include that code themselves just so that the simulator 
     6                        renders nicely. 
     7                        NEW VERSION: 2.1.25 
    38May-01-2007 patrick     Renamed the x11_pipes property of the display_system 
    49                        config element to pipes. 
  • juggler/branches/2.2/modules/vrjuggler/VERSION

    r20085 r20133  
     12.1.25-0 @05/04/2007 16:10:00 UTC@ 
    122.1.24-0 @05/02/2007 02:00:00 UTC@ 
    232.1.23-0 @04/22/2007 21:20:00 UTC@ 
  • juggler/branches/2.2/modules/vrjuggler/samples/OpenSG/advanced/OpenSGNavGrab/OpenSGNavGrab.cpp

    r19729 r20133  
    332332void OpenSGNavGrab::initGLState() 
    333333{ 
    334    GLfloat light0_ambient[]  = { 0.1f,  0.1f,  0.1f, 1.0f }; 
    335    GLfloat light0_diffuse[]  = { 0.7f,  0.7f,  0.7f, 1.0f }; 
    336    GLfloat light0_specular[] = { 1.0f,  1.0f,  1.0f, 1.0f }; 
    337    GLfloat light0_position[] = { 0.5f, 0.75f, 0.75f, 0.0f }; 
    338  
    339    GLfloat mat_ambient[]   = { 0.7f, 0.7f, 0.7f, 1.0f }; 
    340    GLfloat mat_diffuse[]   = { 1.0f, 0.5f, 0.8f, 1.0f }; 
    341    GLfloat mat_specular[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; 
    342    GLfloat mat_shininess[] = { 50.0f }; 
    343 //   GLfloat mat_emission[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; 
    344    GLfloat no_mat[]        = { 0.0f, 0.0f, 0.0f, 1.0f }; 
    345  
    346    glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); 
    347    glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); 
    348    glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular); 
    349    glLightfv(GL_LIGHT0, GL_POSITION, light0_position); 
    350  
    351    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); 
    352    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); 
    353    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); 
    354    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); 
    355    glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); 
    356  
    357    glEnable(GL_DEPTH_TEST); 
    358    glEnable(GL_LIGHTING); 
    359    glEnable(GL_LIGHT0); 
    360    glEnable(GL_COLOR_MATERIAL); 
    361    glShadeModel(GL_SMOOTH); 
    362  
    363334   // OpenSG does not handle this yet.  Being smart about it is non-trivial. 
    364335   glEnable(GL_NORMALIZE); 
  • juggler/branches/2.2/modules/vrjuggler/samples/OpenSG/simple/OpenSGNav/OpenSGNav.cpp

    r19729 r20133  
    119119void OpenSGNav::initGLState() 
    120120{ 
    121    GLfloat light0_ambient[]  = { 0.1f,  0.1f,  0.1f, 1.0f }; 
    122    GLfloat light0_diffuse[]  = { 0.7f,  0.7f,  0.7f, 1.0f }; 
    123    GLfloat light0_specular[] = { 1.0f,  1.0f,  1.0f, 1.0f }; 
    124    GLfloat light0_position[] = { 0.5f, 0.75f, 0.75f, 0.0f }; 
    125  
    126    GLfloat mat_ambient[]   = { 0.7f, 0.7f, 0.7f, 1.0f }; 
    127    GLfloat mat_diffuse[]   = { 1.0f, 0.5f, 0.8f, 1.0f }; 
    128    GLfloat mat_specular[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; 
    129    GLfloat mat_shininess[] = { 50.0f }; 
    130 //   GLfloat mat_emission[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; 
    131    GLfloat no_mat[]        = { 0.0f, 0.0f, 0.0f, 1.0f }; 
    132  
    133    glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); 
    134    glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); 
    135    glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular); 
    136    glLightfv(GL_LIGHT0, GL_POSITION, light0_position); 
    137  
    138    glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); 
    139    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); 
    140    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); 
    141    glMaterialfv(GL_FRONT, GL_SHININESS, mat_shininess); 
    142    glMaterialfv(GL_FRONT, GL_EMISSION, no_mat); 
    143  
    144    glEnable(GL_DEPTH_TEST); 
    145    glEnable(GL_LIGHTING); 
    146    glEnable(GL_LIGHT0); 
    147    glEnable(GL_COLOR_MATERIAL); 
    148    glShadeModel(GL_SMOOTH); 
    149  
    150121   // OpenSG does not handle this yet, being smart about it is not 
    151122   // that trivial... 
  • juggler/branches/2.2/modules/vrjuggler/vrj/Draw/OGL/GlBasicSimulator.cpp

    r20098 r20133  
    335335void GlBasicSimulator::drawSimulator(const float scaleFactor) 
    336336{ 
    337    glPushAttrib( GL_ENABLE_BIT | GL_COLOR_BUFFER_BIT | GL_LIGHTING_BIT); 
     337   glPushAttrib(GL_ALL_ATTRIB_BITS); 
    338338   { 
    339       // Test to see wethere there is lighting active 
    340       GLboolean lighting_on, light0_on; 
     339      // Test to see whether there is lighting active. If there is, we will 
     340      // use it. 
     341      GLboolean lighting_on; 
    341342      glGetBooleanv(GL_LIGHTING, &lighting_on); 
    342       glGetBooleanv(GL_LIGHT0, &light0_on); 
    343  
    344       bool use_lighting_in_sim = (lighting_on == GL_TRUE); 
    345  
    346       //vprDEBUG(vprDBG_ALL, vprDBG_HVERB_LVL) << "lighting on: " << ((lighting_on == GL_TRUE)?"Y":"N") 
    347       //                       << "  light0_on:" << ((light0_on == GL_TRUE)?"Y":"N") << std::endl << vprDEBUG_FLUSH; 
    348343 
    349344      //-----------------set up materials.... 
    350       float mat_ambient[] = {0.1f, 0.1f, 0.1f, 1.0f}; 
    351       float mat_shininess[] = {50.0f}; 
    352       float mat_diffuse[] = {.7f, .7f, .7f, 1.0f}; 
    353       float mat_specular[] = {1.0f, 1.0f, 1.0f, 1.0f}; 
     345      const GLfloat mat_ambient[]   = { 0.1f, 0.1f, 0.1f, 1.0f }; 
     346      const GLfloat mat_shininess[] = { 50.0f }; 
     347      const GLfloat mat_diffuse[]   = { 0.7f, 0.7f, 0.7f, 1.0f }; 
     348      const GLfloat mat_specular[]  = { 1.0f, 1.0f, 1.0f, 1.0f }; 
    354349      //-----------------Call Materials..... 
    355350      glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); 
     
    360355      glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE); 
    361356      glEnable(GL_COLOR_MATERIAL); 
     357      glShadeModel(GL_SMOOTH); 
    362358 
    363359      glDisable(GL_TEXTURE_2D); 
     
    366362      // Draw base coordinate axis 
    367363      ///* 
    368       if(lighting_on
     364      if ( lighting_on == GL_TRUE
    369365      { 
    370366         glDisable(GL_LIGHTING); 
     
    383379      //*/ 
    384380 
    385       if(use_lighting_in_sim) 
    386       { 
    387          glEnable(GL_LIGHTING); 
    388          glEnable(GL_NORMALIZE); 
    389       } 
     381      const GLfloat light0_ambient[]  = { 0.1f,  0.1f,  0.1f, 1.0f }; 
     382      const GLfloat light0_diffuse[]  = { 0.8f,  0.8f,  0.8f, 1.0f }; 
     383      const GLfloat light0_specular[] = { 1.0f,  1.0f,  1.0f, 1.0f }; 
     384      const GLfloat light0_position[] = { 0.0f, 0.75f, 0.75f, 0.0f }; 
     385 
     386      glLightfv(GL_LIGHT0, GL_AMBIENT, light0_ambient); 
     387      glLightfv(GL_LIGHT0, GL_DIFFUSE, light0_diffuse); 
     388      glLightfv(GL_LIGHT0, GL_SPECULAR, light0_specular); 
     389      glLightfv(GL_LIGHT0, GL_POSITION, light0_position); 
     390 
     391      // At this point, lighting is disabled. We need it back on for the 
     392      // draw functors. 
     393      glEnable(GL_LIGHTING); 
     394      glEnable(GL_LIGHT0); 
     395 
     396      // Enable depth testing so that the rendered simulator objects look 
     397      // correct. For example, in the case of the default head draw functor, 
     398      // without this, we end up being able to see the eyes when looking at 
     399      // the back of the head. 
     400      glEnable(GL_DEPTH_TEST); 
    390401 
    391402      // Draw the user's head 
     
    407418      glPopMatrix(); 
    408419 
    409        // Draw a The display surfaces 
    410       if(use_lighting_in_sim) 
    411       { 
    412          glDisable(GL_LIGHTING); 
    413       } 
    414  
     420      glDisable(GL_LIGHT0); 
     421      glDisable(GL_LIGHTING); 
     422 
     423      // Draw the display surfaces. 
    415424      glPushMatrix(); 
    416425         glLoadIdentity(); 
    417          drawProjections(shouldDrawProjections(), getSurfaceColor(), scaleFactor); 
     426         drawProjections(shouldDrawProjections(), getSurfaceColor(), 
     427                         scaleFactor); 
    418428      glPopMatrix(); 
    419429   } 
  • juggler/branches/2.2/modules/vrjuggler/vrj/Draw/OSG/OsgApp.h

    r20128 r20133  
    301301 
    302302   (*sceneViewer) = new_sv; 
    303  
    304    //Setup OpenGL light 
    305    //This should actualy be done in the simulator code 
    306    GLfloat light0_ambient[] = { 0.1f,  0.1f,  0.1f,  1.0f}; 
    307    GLfloat light0_diffuse[] = { 0.8f,  0.8f,  0.8f,  1.0f}; 
    308    GLfloat light0_specular[] = { 1.0f,  1.0f,  1.0f,  1.0f}; 
    309    GLfloat light0_position[] = {0.0f, 0.75f, 0.75f, 0.0f}; 
    310  
    311    GLfloat mat_ambient[] = { 0.7f, 0.7f,  0.7f,  1.0f}; 
    312    GLfloat mat_diffuse[] = { 1.0f,  0.5f,  0.8f,  1.0f}; 
    313    GLfloat mat_specular[] = { 1.0f,  1.0f,  1.0f,  1.0f}; 
    314    GLfloat mat_shininess[] = { 50.0f}; 
    315    //GLfloat mat_emission[] = { 1.0f,  1.0f,  1.0f,  1.0f}; 
    316    GLfloat no_mat[] = { 0.0f,  0.0f,  0.0f,  1.0f}; 
    317  
    318    glLightfv(GL_LIGHT0, GL_AMBIENT,  light0_ambient); 
    319    glLightfv(GL_LIGHT0, GL_DIFFUSE,  light0_diffuse); 
    320    glLightfv(GL_LIGHT0, GL_SPECULAR,  light0_specular); 
    321    glLightfv(GL_LIGHT0, GL_POSITION,  light0_position); 
    322  
    323    glMaterialfv( GL_FRONT, GL_AMBIENT, mat_ambient ); 
    324    glMaterialfv( GL_FRONT,  GL_DIFFUSE, mat_diffuse ); 
    325    glMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular ); 
    326    glMaterialfv( GL_FRONT,  GL_SHININESS, mat_shininess ); 
    327    glMaterialfv( GL_FRONT,  GL_EMISSION, no_mat); 
    328  
    329    glEnable(GL_DEPTH_TEST); 
    330    glEnable(GL_NORMALIZE); 
    331    glEnable(GL_LIGHTING); 
    332    glEnable(GL_LIGHT0); 
    333    glEnable(GL_COLOR_MATERIAL); 
    334    glShadeModel(GL_SMOOTH); 
    335303} 
    336304