计算机图形学—NDC归一化设备坐标

NDC(Normalized Device Coordinates)即归一化设备坐标,是计算机图形学中用于表示和处理图形的一个坐标系统。NDC 的坐标范围通常是从 [−1,1][−1,1] 在 x 和 y 轴上,z 轴上则是从 0 到 1。它是在将模型空间中的三维坐标转换为屏幕空间坐标之前的一个中间步骤。

Frustum:模型的可视范围

Canonical Cube:标准正方形

目的:将frustum压缩至以远点为中心,边长为2的立方体(即为Canonical Cube)。

假设初始Frustum:x轴范围[l,r],y轴范围[b,t],z轴范围[f,n]。

正交投影

只进行平移和缩放,并不满足近大远小。需要经过两次变化,

先将Frustum平移至原点(右侧矩阵)

后将Frustum压缩为标准立方体,将边长强制转为2(左边矩阵)

写成矩阵形式为:

M:\begin{pmatrix} \frac{2}{r-l}\ 0\ 0\ 0\\ 0\ \frac{2}{t-b}\ 0\ 0\\ 0\ 0\ \frac{2}{n-f}\ 0\\ 0\ 0\ 0\ 1\ \end{pmatrix}  \begin{pmatrix} 1\ 0\ 0\ -\frac{r+l}{2}\\ 0\ 1\ 0\ -\frac{t+b}{2}\\ 0\ 0\ 1\ -\frac{n+f}{2}\\ 0\ 0\ 0\ 1\ \end{pmatrix}

透视投影

符合近大远小的视觉效果,主要利用相似三角形的等比变换。

Frustum:前面小,后面大的横向放置的四棱台。

思路:将Frustum压缩为长方体,然后做正交投影。

对于Frustum中任意深度点的x,y的坐标为\frac{n}{z}x\frac{n}{z}y(n为Frustum的z轴上的最近端,z为任意深度点的z坐标)

可以认为(x,y,z,1)表示的点经过压缩之后,变为(nx/z,ny/z,unknown,1),

同时×z可得(nx,ny,unknow,z),那么可以推算代表压缩的矩阵:

\begin{pmatrix} n\ 0\ 0\ 0\ \\ 0\ n\ 0\ 0\\\ ?\ ?\ ?\ ?\\\ 0\ 0\ 1\ 0\ \end{pmatrix}

对于近平面上的点,z坐标不变所以

(x,y,n,1)——>(nx,ny,n方,n)

所以第三行应为(0,0,A,B)型,且An+B = n方

对于远平面的中心点,z坐标也并不会发生改变

(0,0,f,1)——>(0,0,f方,f),所以Af +B = f方

A=n+f,B=-nf

可以得出代表压缩的矩阵:

\begin{pmatrix} n\ 0\ 0\ 0\ \\ 0\ n\ 0\ 0\\\ 0\ 0\ n+f\ nf\\\ 0\ 0\ 1\ 0\ \end{pmatrix}

用压缩矩阵再左乘正交投影的变换矩阵就可以得到最终的透视投影矩阵:

\begin{pmatrix} nr\ 0\ 0\ 0\ \\ 0\ nt\ 0\ 0\ \\ 0\ 0\ \frac{n+f}{n-f}\ -\frac{2*nf}{n-f} \\ 0\ 0\ 1\ 0\ \end{pmatrix}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值