OpenGL入門
光源のパラメータ設定3
光源のパラメータ設定2では、
OpenGLにて光源を設定する際に最もよく利用する
「GL_POSITION(位置)」
「GL_DIFFUSE(拡散光)」
「GL_AMBIENT(環境光)」
「GL_SPECULAR(鏡面光)」、
光源のパラメータ設定3では、
「GL_LINEAR_ATTENUATION(線形減衰)」のパラメータを変更させて描画しました。
今回は、光源からの指向性を表すパラメータを指定します。
光源の設定
座標(50,0,100)にある光源から、 (-0.5,0,1.0)方向へスポットライトを当てる場合を想定します。
static GLfloat lightPosition[4] = { 50.0, 0.0, 100.0, 1.0 }; //光源の位置 static GLfloat lightDiffuse[3] = { 1.0, 1.0, 1.0 }; //拡散光 static GLfloat lightAmbient[3] = { 0.25, 0.25, 0.25 }; //環境光 static GLfloat lightSpecular[3] = { 1.0, 1.0, 1.0 }; //鏡面光 GLfloat spotDirrection[] = { -0.5, 0.0, -1.0 }; //スポットライトを向ける方向
光源の設定は次のように「glLightfv」関数を用いることで指定することができます。
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDiffuse);
glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmbient);
glLightfv(GL_LIGHT0, GL_SPECULAR, lightSpecular);
glLightf( GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.01);
glLightfv( GL_LIGHT0, GL_SPOT_DIRECTION, spotDirrection ); //スポットライトの向ける方向(デフォルト (0,0,-1.0))
glLightf( GL_LIGHT0, GL_SPOT_CUTOFF, 30.0 );// スポットライトの絞り(デフォルト 180.0)
glLightf( GL_LIGHT0, GL_SPOT_EXPONENT, 0.1 );// スポットライトの中心からの減衰の度合い(デフォルト 0)
「GL_SPOT_CUTOFF 」の値を変化させます。
スポットライトを向ける方向を変化させるこことで、次のような図もできます。