Hi Robert,

Thanks for reply.

Actually, i have attached osg::light to lightSource node.
What makes me confused is why different results comes up when using the two 
ways of attaching light to lightSource node:

first one: using setLight method
> osg::LightSource* ls = new osg::LightSource;
> ls->setLight(new osg::Light(0));

The other one: using setAttribute
osg::LightSource* ls = new osg::LightSource;
ls->getOrCreateStateSet()->setAttribute(new osg::Light(0));




Rogerz
2010-08-30



发件人: Robert Osfield
发送时间: 2010-08-30 16:19:08
收件人: OpenSceneGraph Users
抄送: 
主题: Re: [osg-users] what's the difference between these two ways ofdefining 
light?

Hi Rogerz?
The OSG has to binding positional state like glLight/osg::Light with a
modelview matrix to position it correctly in space, which is why there
is a special node in the scene graph for positioning it - the
osg::LightSource node.  If you don't attach your osg::Light to this
special node then the light will be applied at an arbitrary point with
an arbitrary modelview matrix that is current when it's applied - the
result will be undefined, there is nothing the OSG can do about this -
which is why the LightSource node exists - so use it.
Robert.
On Mon, Aug 30, 2010 at 4:25 AM, myth0904 <[email protected]> wrote:
> I wanna add a head light into the scene, ie.,the light is always attched
> with camera.
>
> For adding a light source into the scene, there are two different ways as i
> know:
>
> 1 using osg::LightSource::  setLight method
>
>
> osg::LightSource* ls = new osg::LightSource;
> ls->setLight(new osg::Light(0));
> ls->setReferenceFrame(osg::LightSource::ABSOLUTE_RF);
> geode->setStateSet(ls->getOrCreateStateSet());
>
>
> 2 using setAttribute method
>
> ls->getOrCreateStateSet()->setAttribute(new osg::Light(0));
> geode->setStateSet(ls->getOrCreateStateSet());
>
>
> I think two different ways should give the same result. Actually, they are
> different.
>
> No. 1 Method:  the light behaves like directional light, but not head light.
>
> No.2 method:  just like head light.
>
>
> who could tell me why the two ways are different?
> which is correct?
>
>
>
> ________________________________
> Rogerz
> 2010-08-30
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

<<attachment: b-pou-1.jpg>>

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

Reply via email to