今天热门
热点:

视图矩阵 视点,矩阵视点


知道视图矩阵viewMatix 和 投影矩阵projMatrix,怎么求世界坐标系下的视点?

解决方案

d3d视矩阵是这样的

 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

引用
谢谢zhangci226

直接根据视图矩阵的第四行如下:(position.right表示两向量的点积)
-position.right -position.up -position.look 1.0f
而视图矩阵的前三行分别是:
Right.x  Up.x  Look.x  0.0f

Right.y  Up.y  Look.y  0.0f

Right.z  Up.z  Look.z  0.0f

列出三个方程就可以求出世界坐标系中的位置,对吗?


这个只表示相机坐标系,不能只利用这个来求世界坐标的位置

www.zrccd.nettrue/topics/20180124/125180.htmlTechArticle视图矩阵 视点,矩阵视点 知道视图矩阵viewMatix和投影矩阵projMatrix,怎么求世界坐标系下的视点? 解决方案 d3d视矩阵是这样的 xaxis.xyaxis.xzaxis.x0 xaxis.yyaxis.yzaxis.y0 xaxis.zyaxis.zzaxis.z0 -do...

相关文章

    暂无相关文章

用户评论

大家都在看