视图矩阵 视点,矩阵视点
知道视图矩阵viewMatix 和 投影矩阵projMatrix,怎么求世界坐标系下的视点?解决方案
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) l
根据最后一行展开是3个3元1次方程,很容易求出eye了吧哈。 基本上是这样的
GVector screen2world(int x, int y)
{
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glGetIntegerv(GL_VIEWPORT, viewport);
winX = (float)x;
winY = (float)viewport[3] - (float)y;
glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);
gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
GVector v(4, posX, posY, posZ, 1.0);
return v;
}
其实已经有很多帖子讨论了。楼主可以搜索一下 这里有讨论
http://topic.csdn.net/t/20041030/11/3505640.html
这个只表示相机坐标系,不能只利用这个来求世界坐标的位置
用户评论