|
当前投影矩阵为mtxProj,模型视图矩阵为mtxView,视口矩阵为mtxWindow,那么:
osg::Matrix mtxVPW = mtxView * mtxProj * mtxWindow;
osg::Matrix mtxInverseVPW = osg::Matrix::inverse(mtxVPW);
屏幕上的一个点,像素坐标假设为(0, 0),显然这个点是角点:
osg::Vec3 p1(0, 0, 0);
p1 = p1 * mtxInverseVPW;
osg::Vec3 p2(0, 0, 1);
p2 = p2 * mtxInverseVPW;
上面这代码,是我试图计算屏幕角点的坐标,对应到三维世界坐标的最近点和最远点。
结果大失所望,得到的p1和p2,它们的z值是同一个值,显然是错误的。
我上面的思路有没有错误?
已知当前投影矩阵是正交矩阵。 |
|