Opengl es 如何计算注视时眼点的Z位置?
我画了一个矩形,并用图像的纹理将其绑定。然后我做了一些旋转,过渡和缩放。它与正交投影完美结合 现在我正在尝试透视投影Opengl es 如何计算注视时眼点的Z位置?,opengl-es,perspectivecamera,Opengl Es,Perspectivecamera,我画了一个矩形,并用图像的纹理将其绑定。然后我做了一些旋转,过渡和缩放。它与正交投影完美结合 现在我正在尝试透视投影 mat4 model = mTranslate(shiftX(), shiftY(), 0.0f)*mRotate(rX, rY, rZ)*mScale(this->kx(), this->ky(), 0.0f); mat4 MVP = projectionMatr(20.0f * (M_PI / 180), aspect, 0.1f, 10000.0f)*lookA
mat4 model = mTranslate(shiftX(), shiftY(), 0.0f)*mRotate(rX, rY, rZ)*mScale(this->kx(), this->ky(), 0.0f);
mat4 MVP = projectionMatr(20.0f * (M_PI / 180), aspect, 0.1f, 10000.0f)*lookAt(0,0,eyeZ,0,0,0,0,1,0)*model;
例如,我的图像等于200*300像素。我希望我的矩形在iPad屏幕上不超过200*300点。所以我需要正确地计算eyeZ
如何计算eyeZ?这是一个小信息,但是,如果使用模型矩阵变换矩形,则取(角点的)最小z值,并将其称为zmin。 取f为(20.0f*(M_PI/180))/2的余切。(假设projectionMatr使用等效矩阵作为透视图) 然后,如果取eyeZ=max(f+zmin,f/aspect+zmin)
矩形最近点的投影应为1:1(其余点较小),因此投影将是小于或等于原始矩形的最大投影(如果以相同单位测量)。最后一句话有点太粗体了:这是最大投影,没有像素投影大于原始矩形。