HI

Its something as simple as the the triangles of the terrain/runway are
bigger than the cone of the spot light is it ?

For reference http://www.vis-sim.com/imgdp/vp_lights_ex2.jpg


Just a thought,


-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Chris Best
Sent: Tuesday, April 22, 2008 6:02 PM
To: OpenSceneGraph Users
Subject: [osg-users] Spotlight only affecting parts of scene despite
changesto root stateSet

First time posting to the list, so please bear with me...

I'm currently trying to attach a lightsource node to the front end of an
aircraft model in the application I'm working on that acts as a spotlight
(to simulate landing lights/head lights).
Even though I am setting the stateset up how (I think) I am supposed to, as
such:

lightNode->setStateSetModes(*root->getOrCreateStateSet(),osg::StateAttri
lightNode->bute::ON);

The spotlight is only affecting the plane model (and some billboards way off
in the background if I aim it at them), and not the runway. I even went as
far as to make a nodeVisitor and traverse the entire scene graph calling the
light source's
setStateSetModes() on every osg::Node in it, no dice.

I can think of a couple weird things we do that might affect things since
I'm not sure how they interact with LightSource nodes:

1) My terrain is drawn in renderbin 1, aircraft shadows in renderbin 3, and
aircraft in renderbin 9. Due to some complications with our application, we
can't use the osgShadow nodekit so we're using plain old projected shadows
for now. The terrain in renderbin 1 puts 1s into the stencil buffer and the
shadows in renderbin 3 only draw where the stencil buffer is 1 and reset it
back to zero, to prevent a pixel from being shadowed twice. The shadow pass
is implemented by having an osg::MatrixTransform with the shadow projection
matrix for light 0 (the sun) which has as its child the group node
containing all the aircraft in the scene. Do I have to worry about the
renderbin that the lightsource is in?

2) To prevent the osgSim::LightPoints on the aircraft (as well as text
labels and other junk) from being drawn as shadows, I unset the highest bit
of the nodemask for the objects I don't want drawn and then I modify the
cull visitor's mask with a callback when it passes through my shadow matrix
to only have the highest bit set. The group the osg::LightSource is under
does not have its highest bit set, but it should still get visited when the
aircraft group gets visited (as evidenced by the fact that it does light up
the aircraft it is attached to)...
Am I not understanding some default magic about bits in nodemasks?

At this point I'm lost. I'm still not sure how things like render bins and
nodemasks affect lightsources in the scene graph, but maybe I'm barking up
the wrong tree worrrying about that.
Anything obvious it seems I've missed? If more info is needed, please let me
know, and I'll go into as much detail as possible.

Thanks!
-Chris B
_______________________________________________
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

Reply via email to