[osg-users] osg::Light Simple Question ?

Ümit Uzun umituzun84 at gmail.com
Sat Jul 19 03:10:54 PDT 2008


Thanks for reply,

I have converted terrain model to osg and opened it with text editor. osg
file format like below;

------------------------------------------------------------------------------------------------------
Group {
  name "db"
  nodeMask 0xffffffff
  cullingActive TRUE
  num_children 1
  Geode {
    DataVariance STATIC
    name "p1_437"
    nodeMask 0xffffffff
    cullingActive TRUE
    StateSet {
      UniqueID StateSet_0
      DataVariance STATIC
      rendering_hint DEFAULT_BIN
      renderBinMode INHERIT
      GL_CULL_FACE ON
      GL_LIGHTING OFF
      Material {
        ColorMode OFF
        ambientColor 0.722 0.722 0.729 1
        diffuseColor 0.918 0.918 0.918 1
        specularColor 0.137 0.137 0.137 1
        emissionColor 0 0 0 1
        shininess 10
      }
      CullFace {
        UniqueID CullFace_1
        mode BACK
      }
      textureUnit 0 {
        GL_TEXTURE_2D ON
        Texture2D {
          file "Cell 23.rgb"
          wrap_s REPEAT
          wrap_t REPEAT
          wrap_r CLAMP
          min_filter LINEAR
          mag_filter LINEAR
          maxAnisotropy 1
          borderColor 0 0 0 0
          borderWidth 0
          useHardwareMipMapGeneration TRUE
          unRefImageDataAfterApply TRUE
          internalFormatMode USE_IMAGE_DATA_FORMAT
          resizeNonPowerOfTwo TRUE
        }
        TexEnv {
          mode MODULATE
        }
      }
    }
    num_drawables 1
    Geometry {
      DataVariance STATIC
      useDisplayList TRUE
      useVertexBufferObjects FALSE
      PrimitiveSets 1
      {
        DrawArrays QUADS 0 1600
      }
           ......
            .....
            ......
             etc.
------------------------------------------------------------------------------------------------------

The TexEnv configuration have MODULATE mode. And I have changed it to
GL_MODULATE and GL_LIGHTING OFF to ON but there is no light effect on
terrain too. Then I deleted the TexEnv code block from the osg file format
then lighting not effect too.

Peter, I added "lightSS->setMode(GL_LIGHTING,osg::StateAttribute::ON);"
pattern to my  code but there is no change on the state of terrain too.

Jean, if I write a node visitor for TexEnv, I thing there won't be any
change too, because of I have removed the TexEnv pattern from osg file
format but there wasn't any change on terrain.

Any idea for lightiing the terrain like other components.

Thanks for all advices.
Best Regards.

Ümit UZUN

2008/7/19 Peter Wraae Marino <osghelp at gmail.com>:

> Hi,
>
> isnt there missing a
> *setMode*( GL_LIGHT1, osg::StateAttribute::ON );
>
> for your terrain group? (or did I miss something?)
>
> Peter
> http://osghelp.com
>
>
>
> On Sat, Jul 19, 2008 at 12:39 AM, Ümit Uzun <umituzun84 at gmail.com> wrote:
>
>> Hi All,
>>
>> I have an simple question about light the terrain model problem. I have
>> added two sphere(osg::Sphere) and one terrain(JoeDirt.flt) to the scene. I
>> am trying to effect the components of scene with green light. Although green
>> light could effected two of sphere,  couldn't get success on the terrain
>> model. What can I do to effect the terrain with green light? I have tried
>> this code block;
>>
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------
>> *int main()
>> {
>>         osgViewer::Viewer viewer;
>>     osg::ref_ptr<osg::Group> root (new osg::Group);
>>
>>     osg::ref_ptr<osg::MatrixTransform> terrainScaleMAT (new
>> osg::MatrixTransform);
>>     osg::Matrix terrainScaleMatrix;
>>      terrainScaleMatrix.makeScale(0.05f,0.05f,0.03f);
>>
>>     //Lighting code
>>     osg::ref_ptr<osg::Group> lightGroup (new osg::Group);
>>     osg::ref_ptr<osg::StateSet> lightSS (root->getOrCreateStateSet());
>>     osg::ref_ptr<osg::LightSource> lightSource1 = new osg::LightSource;
>>
>>     // create a local light.
>>     osg::Vec4f lightPosition (osg::Vec4f(0.0,0.0,3.0,1.0f));
>>       osg::ref_ptr<osg::Light> myLight = new osg::Light;
>>     myLight->setLightNum(1);
>>     myLight->setPosition(lightPosition);
>>         myLight->setAmbient(osg::Vec4(0.2f,0.2f,0.2f,1.0f));
>>         myLight->setDiffuse(osg::Vec4(0.1f,0.4f,0.1f,1.0f));
>>         myLight->setConstantAttenuation(1.0f);
>>     lightSource1->setLight(myLight.get());
>>
>>     lightSource1->setLocalStateSetModes(osg::StateAttribute::ON);
>>     lightSource1->setStateSetModes(*lightSS,osg::StateAttribute::ON);
>>
>>     lightGroup->addChild(lightSource1.get());
>>
>>     //Light markers: small spheres
>>     osg::ref_ptr<osg::Geode> lightMarkerGeode (new osg::Geode);
>>     lightMarkerGeode->addDrawable(new osg::ShapeDrawable(new
>> osg::Sphere(osg::Vec3f(-5.0f,-2.0f,3.0f),0.5f)));
>>
>>
>> //lightMarkerGeode->getOrCreateStateSet()->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
>>
>>     //Second light marker
>>     lightMarkerGeode->addDrawable(new osg::ShapeDrawable(new
>> osg::Sphere(osg::Vec3f(2.0f,-1.0f,3.0f),0.5f)));
>>
>>     //Loading the terrain node
>>     osg::ref_ptr<osg::Node> terrainnode
>> (osgDB::readNodeFile("JoeDirt.flt"));
>>     terrainScaleMAT->addChild(terrainnode.get());
>>     terrainScaleMAT->setMatrix(terrainScaleMatrix);
>>
>>     //adding the terrain node to the root node
>>     root->addChild(terrainScaleMAT.get());
>>
>>     //lighting code
>>     root->addChild(lightGroup.get());
>>     //Adding the light marker geode
>>     root->addChild(lightMarkerGeode.get());
>>
>>     // add the state manipulator
>>         viewer.addEventHandler( new
>> osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()) );
>>
>>     viewer.setSceneData( root.get() );
>>
>>     return (viewer.run());
>> }*
>>
>> --------------------------------------------------------------------------------------------------------------------------------------------------
>>
>> _______________________________________________
>> osg-users mailing list
>> osg-users at 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 at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20080719/697028e8/attachment-0003.htm>


More information about the osg-users mailing list