我觉得我理解模型视图矩阵和gluLookAt
的用法。也就是说,通过声明gluLookAt(ex,ey,ez,lx,ly,lz,ux,uy,uz)
,可以很容易地设置一种直接查看某个点的方式。gluLookAt和MODELVIEW MATRIX
我的问题是 - 因为gluLookAt
postmultiplies当前矩阵,假设你在调用gluLookAt
之前加载身份,当前matrixmode是modelview,如果你绘制一个立方体会发生什么?
因此,像这样:
glMatrixMode(GL_PERSPECTIVE);
glLoadIdentity();
glFrustum(-5, 5, -5, 5, 15, 150);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 16, 0, 0, 0, 0, 1, 0);
glutSolidCube(1.0);
哪里立方体世界呈现坐标?出于某种原因,在这种情况下,它会呈现在世界原点,并且您可以在视口中看到它 - 但为什么? gluLookAt
不应该用视图旋转和翻译修改模型视图矩阵吗?这个立方体是不是应该用相机内部的相机来渲染?
我可以把这解释为,从世界坐标系来看,gluLookAt就是相对于照相机翻译世界的渊源呢?你的情况是 – geogaddi 2013-03-08 14:27:28
。但总的来说,它可以是旋转+翻译。所以gluLookAt创建了一个ModelViewMatrix,它将模型坐标(基本上是世界坐标,即原点(0,0,0),查看dir(0,0,-1))转换(旋转+平移)到视图坐标(坐标系如从相机/眼睛看到的那样,即相机的观看方向上的凸轮位置的原点) – Dirk 2013-03-08 15:30:59
优秀!棘手的东西,但我想我现在明白了。 – geogaddi 2013-03-08 18:24:31