我试图从屏幕上的鼠标单击将光线追踪到 3D 空间。据我了解,默认位置和方向如下所示:
从此代码:
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY;
GLdouble near_x, near_y, near_z;
GLdouble far_x, far_y, far_z;
glGetDoublev( GL_MODELVIEW_MATRIX, modelview );
glGetDoublev( GL_PROJECTION_MATRIX, projection );
glGetIntegerv( GL_VIEWPORT, viewport );
winX = (float)mouse_x;
winY = (float)viewport[3] - (float)mouse_y;
gluUnProject(winX, winY, 0.0, modelview, projection, viewport, &near_x, &near_y, &near_z);
gluUnProject(winX, winY, 1.0, modelview, projection, viewport, &far_x, &far_y, &far_z);
我的问题是如何更改近平面和远平面的位置和角度,以使所有鼠标点击看起来都来自相机在 3D 空间中的位置和角度?
具体来说,我正在寻找一种方法将投影平面的中心定位在 Z 轴下方 65° 沿线 (0,0,1) -> (0,0,-tan(65°)) [-tan (65°) ~= -2.145],近平面和远平面都垂直于通过这些点的视线。