2013-02-20 40 views
1

我添加了一个光源给我的JOGL项目,当物体静止不动时,它似乎工作得很好,当我移动摄像机时,它旋转时逐渐变暗,这是id期待的,但尽快当它旋转90度时,屏幕全黑,有人知道这是为什么吗?我需要另一个光源吗?我希望它会像太阳一样行动,即照亮整个场景,但当相机位于物体的另一侧时会稍微变暗。JOGL - 灯光/摄像机

照明

float light_ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f }; 
float light_diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f }; 
float light_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; 
float light_position[] = { 1.0f, 1.0f, 1.0f, 0.0f }; 

gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_AMBIENT, light_ambient, 0); 
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, light_diffuse, 0); 
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, light_specular, 0); 
gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, light_position, 0); 

gl.glEnable(GL2.GL_LIGHTING); 
gl.glEnable(GL2.GL_LIGHT0); 
gl.glDepthFunc(GL.GL_LESS); 
gl.glEnable(GL.GL_DEPTH_TEST); 

其次,当相机转动部分的形状似乎变形,看起来像完全不同的形状,即立方体旋转枕状,两侧拉伸一个令人难以置信的量和它的制作我的整个物体看起来有点变形。有没有简单的方法来改变这一点?我试图搞乱gluPerspective,似乎并没有改变我想要的。有没有办法解决?

+0

发布[SSCCE](http://sscce.org/)。 – genpfault 2013-02-20 21:31:15

+0

添加了照明代码 – thrash 2013-02-20 21:35:38

回答

0

您已将漫反射光和镜面光添加到您的场景中,但这些光不会到达远离光源的表面。您可以添加一些环境光(目前在您的代码片段中设置为0,0,0),以便所有表面都可以接收一些照明。

至于变形的形状,这实际上是一个单独的问题,并没有足够的细节知道为什么发生这种情况。

相关问题