我试图模仿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 聚光灯的行为?
所以我对此进行了研究,显然修改光的衰减将产生正确的结果。希望这能帮助任何偶然发现这一点的人。