games101一些问题及思考

发布时间 2023-10-18 21:44:27作者: ZhangFirst1

games101一些问题及思考

1. 透视投影为什么z值变大

从透视投影矩阵可以看出z会变大,但从直观上怎么想呢。

想象一段向无穷远处延伸的铁轨,假设有100m,但照片中前一半明显不足50m,后一段明显多于50m,可以体会到近平面和远平面之间的点都会向远平面压缩,使得出现近大远小的情况。

2. 各个空间以及变换之间的关系

**模型空间(Model Space) => M矩阵 => 世界空间(World Space) => V矩阵 => 视觉空间(以摄像机为中心)(View Space) => P矩阵 => 裁剪空间 (Clip Space) => Vertex Shader结束 => 透视除法 => 标准化设备空间(NDC) => 视口变换 => 屏幕空间(Screen Space) => 进入Fragmen Shader **

3. 纹理过小与过大

过小:对于一个高分辨率的背景应用一个低分辨率的纹理,屏幕上的临近几个像素点可能会映射到同一个纹理(由于纹理太小导致映射的纹理坐标被四舍五入),此时使用双线性插值

过大:近处一个像素覆盖的纹理较小,而远处一个像素覆盖的纹理较大,纹理过大会导致走样(近处锯齿,远处摩尔纹),此时可使用超采样,但效率较低。引用Mipmap

Mipmap:允许快速、近似的正方形范围查询

image-20230811111800351

首先存储类似以上的纹理图片,多使用1/3的存储空间,在一个屏幕像素覆盖纹理较大时既可查询在哪层图片时是一个像素(先用当前点与上右两个点映射计算出当前像素覆盖的大致范围,层数=log2L),对于非整数层,对D层与D+1层做双线性插值,再在层与层之间做线性插值(即三线性插值)。

image-20230811112913860

但由于可能对应的是一个较不规则的图形,正方形的近似效果不佳,会产生模糊的效果,此时可采用各向异性过滤,在Mipmap的基础上多存储了只拉伸长和只拉伸宽的纹理,这样可以查询矩形区域而不止是正方形。

image-20230811114224099