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 スポットライトの動作ではありませんか?