1

我在我的 JOGL 项目中添加了一个光源,当物体静止时它似乎工作得很好,当我移动相机时,它随着旋转而逐渐变暗,这是我所期望的,但一旦它旋转 90 度,屏幕就会消失完全黑,有谁知道这是为什么?我需要另一侧的另一个光源吗?我希望它会像太阳一样,即照亮整个场景,但当相机位于物体的另一侧时会稍微暗一些。

灯光

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这似乎也没有改变我想要的。有没有办法解决?

4

1 回答 1

0

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

至于变形的形状,这确实是一个单独的问题,并且没有足够的细节来了解为什么会发生这种情况。

于 2013-02-27T17:38:42.593 回答