最終更新: mikk_ni3_92 2008年06月27日(金) 16:10:29履歴
現在地 >> メニュー >> 基本編03 >> 視野の設定
次は >> 視点の設定
視野を設定するという事は、
3次元空間上の物体が、2次元空間であるウィンドウのどの位置にうつるのか?
という、投影方法を決定する事でもある。
おもに以下の2つがある。
「left」、「right」:「左」、「右」の垂直座標を指定
「bottom」、「top」:「下」、「上」の水平座標を指定
「znear」、「zfar」:「手前」、「奥行き」を指定
これによって、見る空間の広さが決まる。
[ 例 ]
「fovy」:「y座標」、すなわち「縦方向の視野角」を指定
「sapect」:「視野角」に対する、「比率」で「水平方向の視野角」を決定
「zNear」、「zFar」:「手前」、「奥行き」を指定
[ 例 ]
この場合、
縦:160度
横:120度(4:3)
という設定をしている。
真横からみるような視点。視点に影響されず、常に正しいサイズで表示する。
「正射影行列」を使うには、「glOrtho()関数」を使う。
「引数」については、「glFrustum()関数」と同じである
[ 例 ]
次は >> 視点の設定
次は >> 視点の設定
視野を設定するという事は、
3次元空間上の物体が、2次元空間であるウィンドウのどの位置にうつるのか?
という、投影方法を決定する事でもある。
おもに以下の2つがある。
- 透視投影 (こちらが普通の見え方)
- 並行投影
glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble znear, GLdoble zfar)
「left」、「right」:「左」、「右」の垂直座標を指定
「bottom」、「top」:「下」、「上」の水平座標を指定
「znear」、「zfar」:「手前」、「奥行き」を指定
これによって、見る空間の広さが決まる。
[ 例 ]
glMatrixMode(GL_PROJECTION);//モード切替え glLoadIdentity(); ///行列リセット glFrustum(0,4,2,0,2,10); //「透視射影」の設定
gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
「fovy」:「y座標」、すなわち「縦方向の視野角」を指定
「sapect」:「視野角」に対する、「比率」で「水平方向の視野角」を決定
「zNear」、「zFar」:「手前」、「奥行き」を指定
[ 例 ]
glMatrixMode(GL_PROJECTION);//モード切替え glLoadIdentity(); ///行列リセット gluPerspective(160, 0.75,1,10); //「透視射影」の設定
この場合、
縦:160度
横:120度(4:3)
という設定をしている。
真横からみるような視点。視点に影響されず、常に正しいサイズで表示する。
「正射影行列」を使うには、「glOrtho()関数」を使う。
glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zbear, GLdoble zfar)
「引数」については、「glFrustum()関数」と同じである
[ 例 ]
glMatrixMode(GL_PROJECTION);//モード切替え glLoadIdentity(); ///行列リセット glOrtho(-1, 1, -1, 1, 2, 4); //「透視射影」の設定
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); //モードを元に戻す }
次は >> 視点の設定