OpenGL如何使聚光灯效果类似手电筒?

3

我正在尝试在OpenGL中模拟手电筒。基本上,我希望聚光灯处于与相机相同的位置,并指向相机所指方向。

这是我的代码:

gluLookAt (xAt, yAt, zAt, xLookAt, yLookAt, zLookAt, 0, 1, 0);
light_pos [4] = {xAt, yAt, zAt, 1.0};
glLightfv (GL_LIGHT0, GL_POSITION, light_pos);

spotDir [] = {xLookAt - xAt, yLookAt - yAt, zLookAt - zAt};
glLightfv (GL_LIGHT0, GL_SPOT_DIRECTION, spotDir);

我已经调用了初始化光源的函数,并计算了所有物体表面的法向量。
现在上述代码基本可以使用,当摄像机移动时,聚光灯会跟随移动。然而,当我将摄像机靠近物体时,物体上照射的光线会变弱。当我将摄像机远离物体时,物体上的光线会变亮。
我希望出现相反的情况 - 当摄像机离物体越远,物体上照射的光线应该越少。这是怎么做到的?或者这不是OpenGL聚光灯的行为方式吗?
1个回答

1

所以我研究了一下,显然修改光的衰减会产生正确的结果。希望这能帮助其他遇到这个问题的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接