ledocc wrote:
> Is you normal of your model well defined and normalized ?

Whitout shaders model looks perfect, and you can see the changes moving the 
light of the site.

ledocc wrote:
> 
> I suppose you used an osg::Light to define your light.
> Have you put it in a osg::LightSource ?
> 


Code:
int const LIGHTS = 1;
    osg::StateSet *lightStateSet = scene->getOrCreateStateSet();
    osg::Geode *lightMarker[LIGHTS];
    osg::LightSource *lightSource[LIGHTS];
    // Create Lights
    osg::Vec4 lightColors[] = {osg::Vec4(1.0,1.0,1.0,1.0), osg::Vec4(0.0, 1.0, 
0.0, 1.0), osg::Vec4(0.0, 0.0, 1.0, 1.0)};

    for (int i = 0; i < LIGHTS; i++) {
        lightMarker[i] = new osg::Geode();
        lightMarker[i]->addDrawable(new osg::ShapeDrawable(new 
osg::Sphere(osg::Vec3(0.0, 40.0, 0.0), 5.0)));
        osg::Material *light_material = new osg::Material();
        light_material->setDiffuse(osg::Material::FRONT,  osg::Vec4(1.0, 1.0, 
1.0, 1.0));
        light_material->setSpecular(osg::Material::FRONT,  osg::Vec4(0.1, 0.1, 
0.1, 1.0));
        light_material->setEmission(osg::Material::FRONT, lightColors[i]);
        lightMarker[i]->getOrCreateStateSet()->setAttribute(light_material);
 
        lightSource[i] = new osg::LightSource();
        osg::Light *light = new osg::Light();
        // each light must have a unique number
        light->setLightNum(0);
        // we set the light's position via a PositionAttitudeTransform object
        light->setPosition(osg::Vec4(0.0, 40.0, 0.0, 0.3));
        light->setSpecular(osg::Vec4(0.1,0.1,0.1,1.0));
        light->setAmbient( osg::Vec4(0.2,0.2,0.2,1.0));
        light->setDiffuse(lightColors[i]);
        lightSource[i]->setLight(light);
        lightSource[i]->setLocalStateSetModes(osg::StateAttribute::ON);
        lightSource[i]->setStateSetModes(*lightStateSet, 
osg::StateAttribute::ON);

        lightTransform[i] = new osg::PositionAttitudeTransform();
        lightTransform[i]->addChild(lightSource[i]);
        lightTransform[i]->addChild(lightMarker[i]);
        lightTransform[i]->setPosition(osg::Vec3(0, 0,200));
        //lightTransform[i]->setScale(osg::Vec3(0.1,0.1,0.1));

        scene->addChild(lightTransform[i]);
    }



------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=32364#32364





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to