私は、y = -50平面上にクワッドを持っています。現時点では、私がしたいのは、クワッドのマウスクリックの座標を取得することだけです。私はこれを限られた範囲で行うことができました。問題は、クワッドを描画するときに適用した変換が考慮されていないことです。私はいくつかの定数を追加して動作させることができますが、glRotatef()を使ってx軸とy軸についてシーンを回転させて、回転が起こると直ちに座標が乱されるようにします。gluUnProject()でレイピッキング
ここで私が今やっているものです:二回、一回= 0 zの)私はgluUnProject(呼び出し
、一度Z = 1
gluUnProject(mouseX, WINDOW_HEIGHT - mouseY, 0, modelView, projection, viewport, &x1, &y1, &z1);
gluUnProject(mouseX, WINDOW_HEIGHT - mouseY, 1, modelView, projection, viewport, &x2, &y2, &z2);
正規化された光線ベクトルを持つ:
x = x2 - x1;
y = y2 - y1;
z = z2 - z1;
mag = sqrt(x*x + y*y + z*z);
x /= mag;
y /= mag;
z /= mag;
パラメトリック方程式:
float t = -(camY)/y;
planeX = camX + t*x;
planeY = camY + t*y;
planeZ = camZ + t*z;
ここで、(camX、camY、camZ)はgluLookAt()に渡されるカメラ位置です。
planeX、planeY、およびplaneZを、クワッドを描画するために使用したのと同じ座標系で、クワッドのクリックの座標にします。どうすればこれを達成できますか?
modelViewマトリックスはいつ取得しますか? 'glRotatef()'の前または後ろに? – genpfault