HOME > natural science Laboratory > コンピュータ・シミュレーション講座 > OpenGL入門

OpenGL入門
平面に光をあてるときの注意点

文責:遠藤 理平 (2010年11月15日) カテゴリ:OpenGL入門(27)TIPS 集(107)

OpenGLで平面を用意し、光を当てたときに困ったことをメモします。
まずは、下の動画をご覧ください。光源を(0,0,50)から(0,0,0)へ移動させていくときの描画ですが、なにか変です。

そうです。下に敷いてある平面に光の反射がないことです。 この原因は、平面を大きな1枚で表現していたためです。 光が近づいたところから明るくなるようにするためには、 平面を分割することが必要となります。

次の動画は下に敷いている平面の一片を100分割した場合、つまり平面を10000個に分割した場合です。

違和感はなくなりました。

平面の描画関数

/////////////////////////////////////////////
// 平面の描画
void drowPlane(double a, double b, int sides, double x, double y, double z){
  glPushMatrix();
  glTranslated(x, y, z);
  for(int i=0; i<sides; i++){
    for(int j=0; j<sides; j++){
      double ax = -a/2.0 + a/double(sides) * double(i);
      double bx = -b/2.0 + b/double(sides) * double(j);
      glNormal3d( 0.0,0.0,1.0);
      glBegin(GL_QUADS);
      glVertex3d( ax,                 bx,                 0.0);
      glVertex3d( ax+a/double(sides), bx,                 0.0);
      glVertex3d( ax+a/double(sides), bx+b/double(sides), 0.0);
      glVertex3d( ax,                 bx+b/double(sides), 0.0);
      glEnd();
    }
  }
  glPopMatrix();
}


タグ: ,

▲このページのトップNPO法人 natural science トップ

関連記事

OpenGL入門







TIPS 集

▲このページのトップNPO法人 natural science トップ




Warning: mysqli_connect(): (28000/1045): Access denied for user 'xsvx1015071_ri'@'sv102.xserver.jp' (using password: YES) in /home/xsvx1015071/include/natural-science/include_counter-d.php on line 8
MySQL DBとの接続に失敗しました