Archived

This topic is now archived and is closed to further replies.

zaNeXuS

Help with Lighting in OGL

Recommended Posts

zaNeXuS    122
I got this big problem in OpenGl on LightSources.I''ve got this world full of objects, I then put in a Positional LightSource, which acts almost like a sun. Then I move around with gluLookAt.When I move to a face which doesn''t face the sun and is obviously darker, I then turn the cam to the face and then the face suddenly lights up as if I was the LightSource... What''s going on plz Help me. Thanx alot!!! Gaming is Life

Share this post


Link to post
Share on other sites
benjamin bunny    838
Some possibilities:

Is your glLight... call in the wrong place? It should be just after your camera transform.

Have you mistakenly put your camera transform in the projection matrix instead of the modelview?


If that doesn't help, post the relevant code and I'll take a look.

____________________________________________________________
www.elf-stone.com

[edited by - benjamin bunny on May 2, 2002 6:44:25 PM]

Share this post


Link to post
Share on other sites
zin    110
Like Ben says, watch where you put that light, it should be treated just like a regular 3d object, placed in modelview.

What you have is the "miner''s hat" light, cool if that is what you want.

zin

zintel.com - 3d graphics & more or less

Share this post


Link to post
Share on other sites
zaNeXuS    122
OK.. I did what u guys mentioned. My Camera is done in MODELVIEW.
All vertices have their proper normals given. GL_LIGHTING enabled.GL_LIGHT0 enabled.(I only have the one light)...
SHould I now enable the each time after I call gluLookAt?
Well'' I tried that and tried calling it before gluLookAt each time.Same result .
I will try and put all the code together in a way to understand, but it''ll be pretty difficult as each part is linked to other class objects...Starting on it tonight though.

|---------------|
|Gaming is Life|
|---------------|

Share this post


Link to post
Share on other sites
zaNeXuS    122
OK.. I did what u guys mentioned. My Camera is done in MODELVIEW.
All vertices have their proper normals given. GL_LIGHTING enabled.GL_LIGHT0 enabled.(I only have the one light)...
SHould I now enable the each time after I call gluLookAt?
Well'' I tried that and tried calling it before gluLookAt each time.Same result .
I will try and put all the code together in a way to understand, but it''ll be pretty difficult as each part is linked to other class objects...Starting on it tonight though.

|---------------|
|Gaming is Life|
|---------------|

Share this post


Link to post
Share on other sites
benjamin bunny    838
You only need to enable the light once, but you need to put a call to glLightfv immediately after the gluLookAt call

glLightfv(GL_LIGHT0, GL_POSITION, lightpos);

where lightpos is an array of 4 floats, containing the light''s position and lightpos[3] is 1.0 (which specifies the light is positional)

Let me know if that works

____________________________________________________________
www.elf-stone.com

Share this post


Link to post
Share on other sites
zaNeXuS    122
!!!!!!!!!!! Thanx alot Ben. It''s working perfectly. Now my world Looks right.
p.s. - The directional light type: Is that always where the cam is positioned ?

|---------------|
|Gaming is Life|
|---------------|

Share this post


Link to post
Share on other sites
benjamin bunny    838
No. If you specify a directional light, you''re specifying a light an infinite distance from the viewer (like the Sun, in effect). The first 3 floats in that case are the normal vector. Look up glLightfv for more info.

____________________________________________________________
www.elf-stone.com

Share this post


Link to post
Share on other sites