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

4

1 に答える 1

1

そこで、これを調べたところ、光の減衰を変更すると正しい結果が得られるようです。これが、これに出くわした他の誰かに役立つことを願っています。

于 2012-11-29T04:29:50.010 に答える