[osg-users] osg::Light Simple Question ?
gordon.tomlinson at sensor.com
Sat Jul 19 06:19:47 PDT 2008
The reason you need GL_RESCALE_NORMAL is because you have scaled your
terrain. OpenGL by default does NOT scale normal on a scale matrix because
the act of rescale requires the use of sqr roots and this is expensive. when
you have a lot of them every frame ( see any good OpenGL book for details)
I would recommend that you create your terrain to the correct size and not
scale at run time,
From: osg-users-bounces at lists.openscenegraph.org
[mailto:osg-users-bounces at lists.openscenegraph.org] On Behalf Of Ümit Uzun
Sent: Saturday, July 19, 2008 9:06 AM
To: OpenSceneGraph Users
Subject: Re: [osg-users] osg::Light Simple Question ?
Thanks for reply. You are right, my model hasn't normals :) So
osg::StateAttribute::ON );" pattern doesn't work on terrain lightening. Like
your advice I can use osgUtil::SmoothingVisitor but I choose easier way
which is gathering model which has normals in it. So I use new model with
adding GL_RESCALE_NORMAL control and result is perfect like added
I have a last question about why my model's lightening operation related
with normals rescaling process? I can't understand backgroud of this
Thanks for helps Jean and Gordon :)
2008/7/19 Jean-Sébastien Guay <jean-sebastien.guay at cm-labs.com>:
I have tried "terrainScaleMAT->getOrCreateStateSet()->setMode(
GL_RESCALE_NORMAL, osg::StateAttribute::ON );" pattern but the result is
same. There is no light effect on the terrain. I don't understand why?
As Gordon said, check if your terrain has normals in the first place...
Rescaling non-existing normals won't do anything :-)
In your .osg file, check for normalArray under your Geometry, and check that
normalBinding is set to PER_VERTEX. If the model has no normals, you can
generate them with a modeling tool or use the osgUtil::SmoothingVisitor to
create smooth normals across the surface.
And BTW, yes you're right that the two suggestions I gave before were
mutually exclusive, i.e. if you checked your model and changed the TexEnv in
it you don't need a NodeVisitor to do the same thing...
Oh, just another little thing, are you sure you're reloading the .osg model
and not the original one without your changes?
Jean-Sebastien Guay jean-sebastien.guay at cm-labs.com
osg-users mailing list
osg-users at lists.openscenegraph.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the osg-users