現在地 >> メニュー >> 基本編03 >> 視点の設定

次はこちら >> まとめコード::基本編03基本編04


<視点の設定>


「視点の位置設定」には、「gluLookAt()関数」がある。

gluLookAt(GLdouble ex,GLdouble ey,GLdouble ez,
     GLdouble cx,GLdouble cy,GLdouble cz,
     GLdouble ux,GLdouble uy,GLdouble uz,)


「(ex,ey,ez)」:「視点の位置」
「(cx,cy,cz)」:「見たいもの位置」
「(ux,uy,uz)」:画像のどこが「上」なのかを指定(ベクトル)



[ 例 ]

gluLookAt(3,4,5, 0,0,0, 0,-1,0)

この場合、
「(3,4,5)」の位置から、「(0,0,0)」を見ていて、「-y軸」方向が「上」となる視点。

メモ


視点の設定は、reshape()関数に設定する場合、display()関数に設定する場合などがある。

もし視点を動かすなどの変更処理がない場合は、reshape()関数内に記述してしまってもよい。

[例1]:reshape()関数内に記述

void reshape(int w, int h)
{
   glViewport(0, 0, w, h);  //ビューポートの設定
   
   glMatrixMode(GL_PROJECTION);  //行列モード切替
   glLoadIdentity();
   gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); //視野の設定
   
   glMatrixMode(GL_MODELVIEW); //行列モードを戻す
   glLoadIdentity();
   gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);  //視点の設定
}

void display()
{
      ... ...
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

      /* これ以降で描画 */
}



[例2]:display()関数内に記述

void reshape(int w, int h)
{
   glViewport(0, 0, w, h);  //ビューポートの設定
   
   glMatrixMode(GL_PROJECTION);  //行列モード切替
   glLoadIdentity();
   gluPerspective(30.0, (double)w / (double)h, 1.0, 100.0); //視野の設定
   
   glMatrixMode(GL_MODELVIEW); //行列モードを戻す

}
void display()
{
      ... ...
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glLoadIdentity();  //ここで、行列リセット
      gluLookAt(3.0, 4.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);  //視点の設定
      /* これ以降で描画 */
}


次はこちら >> まとめコード::基本編03基本編04
×

この広告は60日間更新がないwikiに表示されております。

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます