y = -50면에 쿼드가 있습니다. 현재 내가 원하는 것은 쿼드에서 마우스 클릭의 좌표를 얻는 것입니다. 나는 이것을 제한된 정도로 할 수 있었다. 문제는 쿼드를 그릴 때 적용한 변형이 설명되지 않는다는 것입니다. 몇 가지 상수를 추가하여 작동 시키지만 사용자가 glRotatef()를 사용하여 x 및 y 축을 기준으로 장면을 회전하게하여 좌표가 회전이 발생하자마자 엉망이되게합니다. 한 번 Z = 0, 두 번)gluUnProject()로 광선 뽑기
내가 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