0

モデルビューマトリックスとの使い方を理解しているような気がしgluLookAtます。つまり、を宣言するgluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz)ことで、特定のポイントを直接見る方法を簡単に設定できます。

私の質問は-gluLookAtを呼び出す前にIDをロードしgluLookAt、現在のmatrixmodeがmodelviewであると仮定して、現在の行列をpostmultipliesするので、立方体を描画するとどうなりますか?

だからこのようなもの:

glMatrixMode(GL_PERSPECTIVE);
glLoadIdentity();
glFrustum(-5, 5, -5, 5, 15, 150);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 16, 0, 0, 0, 0, 1, 0);
glutSolidCube(1.0);

立方体はワールド座標でどこにレンダリングされますか?何らかの理由で、この場合、ワールド原点でレンダリングされ、ビューポートで表示できますが、なぜですか?gluLookAtビューの回転と平行移動を使用してmodelviewマトリックスを変更するべきではありませんか?立方体は基本的にカメラを内部に置いてレンダリングする必要がありますか?

4

1 に答える 1

2

glutSolidCube(1.0)は、世界の原点を中心とする辺の長さが1.0の立方体を描画します。

したがって、頂点は次のとおりです。

  • (-0.5、-0.5、-0.5)
  • (-0.5、+ 0.5、-0.5)
  • (-0.5、+ 0.5、+ 0.5)
  • (-0.5、-0.5、+ 0.5)
  • (+ 0.5、-0.5、-0.5)
  • (+ 0.5、+ 0.5、-0.5)
  • (+ 0.5、+ 0.5、+ 0.5)
  • (+ 0.5、-0.5、+ 0.5)

ここで、gluLookAt(0、0、16、0、0、0、0、1、0)は、これらの座標をカメラ座標に変換するmodeView行列を生成します。

カメラの位置はデフォルトのカメラの位置(0,0,0)に対して(0,0,16)だけ変換されるため、このmodelViewマトリックスは基本的に各頂点を(0,0、-16)によって変換します。

クリア?

于 2013-03-08T08:26:38.923 に答える