3D正交投影 - 1.左手系一般情况下的矩阵推导

3D正交投影

原创 3D透视投影 - 1.左手系一般情况下的矩阵推导

友情链接提示:可以参考透视投影进行对比

视锥体图示

3D正交投影 - 1.左手系一般情况下的矩阵推导

分析

PcamP_{cam} >>>投影>>> PfilmP_{film} >>>齐次除法>>> PcvvP_{cvv}
剪裁坐标:Pclip=(clipx,clipy,clipz,w)P_{clip} = (clip_x, clip_y, clip_z, w)
正交剪裁坐标: Pclip=(clipx,clipy,clipz,1)P_{clip} = (clip_x, clip_y, clip_z, 1)
CVV坐标: Pcvv=(cvvx,cvvy,cvvz,1)=(clipx,clipy,clipz,1)P_{cvv} = (cvv_x, cvv_y, cvv_z, 1) = (clip_x, clip_y, clip_z, 1)

分析x:
Pcamx[H2,+H2]P_{camx} \in [-\frac{H}{2},+\frac{H}{2}]
Pcvv[1,+1]P_{cvv} \in [-1, +1]
显然:
Pcvvx=W2Pcamx=zoomxPcamxP_{cvvx} = \frac{W}{2}P_{camx} = zoom_xP_{camx}

同理可得y:
Pcvvy=H2Pcamy=zoomyPcamyP_{cvvy} = \frac{H}{2}P_{camy} = zoom_yP_{camy}

分析z:
Pcamz[n,f]P_{camz} \in [n, f]
Pcvvz[1,1]P_{cvvz} \in [-1, 1]
线性插值计算:
Pcamznfn=Pcvvz+12\frac{P_{camz} - n}{f -n} = \frac{P_{cvvz} + 1}{2}
=>=>
Pcvvz=2fnPcamzf+nfnP_{cvvz} = \frac{2}{f-n}P_{camz} -\frac{f+n}{f-n}

构造矩阵:
将线性关系整理一下:
Pcvvx=zoomxPcamxP_{cvvx} = zoom_xP_{camx}
Pcvvy=zoomyPcamyP_{cvvy} = zoom_yP_{camy}
Pcvvz=2fnPcamzf+nfnP_{cvvz} = \frac{2}{f-n}P_{camz} -\frac{f+n}{f-n}
Pcvvw=1P_{cvvw} = 1
3D正交投影 - 1.左手系一般情况下的矩阵推导
下一篇:原创 3D正交投影 - 2.左手系DirectX的矩阵推导