Games101-着色(插值、高级纹理映射)

本文详细解释了在三角形插值中的重心坐标概念,以及如何在纹理映射、纹理放大、Mipmap和法线贴图等方面进行平滑的过渡插值。文章还介绍了环境贴图、凹凸贴图、位移贴图等技术在3D图形中的应用,以及Blinn-Phongshader和displacementshader的实现细节。

三角形内部插值:重心坐标/Interpolation Across Triangles: Barycentric Coordinates

在这里插入图片描述

为什么要在三角形插值:我们有很多操作是在三角形的顶点完成的,希望在三角形内部有个平滑的过渡
插值什么内容:映射纹理uv,颜色,法线等。基本上可以对三角形顶点上任意的属性插值
如何做插值:重心坐标
在这里插入图片描述
在一个三角形ABC平面内所形成的任何一个点(x,y),都可以表示成三个顶点a、b、c坐标的线性组合,
只要满足线性组合的条件 α + β + γ = 1 \alpha+\beta+\gamma = 1 α+β+γ=1
虽然是三个系数,但有和为1的限定,实际上只是两个数。就像三角形的平面是二维的,二维只需要两个数。
如果点在三角形内部,还需满足三个系数都非负
在这里插入图片描述
A点的系数即为 (1,0,0)
在这里插入图片描述
点的重心坐标可以通过面积比求出:
一个点分别与三个顶点连线后。划分出顶点和它对面的三角形(即不相邻的三角形)。通过面积比可求出重心坐标
在这里插入图片描述
三角形的重心。重心可以把三角形均等面积划分出三份。通过上面的定义得出( 1 3 {1}\over{3} 31, 1 3 {1}\over{3} 31, 1 3 {1}\over{3} 31)
在这里插入图片描述
重心坐标最终的公式
在这里插入图片描述
任何一个点颜色的插值:可以通过重心坐标的系数求出

注意:重心坐标在投影变换下不能保证重心坐标不变:假如一个空间中的三角形,可以算出内部其中一个点的重心坐标,当三角形投影到某一平面时,会发生变化。根据投影后得到三角形坐标,重新算该点的重心坐标,会得到不一样的结果

因此需要用空间中的三角形坐标做插值,而不能用投影后的三角形坐标做插值

所以求深度时,需要把三角形的顶点值经过逆变换后,找到在三维空间中的坐标,再进行插值计算

应用纹理/Applying Textures

在这里插入图片描述
屏幕上任何一个采样点,有一个位置,即可知道在这个位置上插值出来的(u,v)在哪,在纹理上查询对应(u,v)的值。即对于纹理位置上的颜色。可以认为这个纹理的颜色就是漫反射系数

纹理的放大/Texture Magnification

如果纹理太小时,需要放大
在这里插入图片描述
Nearest
对任何墙上的一个点(一个像素),都可以找到其对齐纹理上的一个位置,可能不是整数,但把它四舍五入当做整数。这样相当于在一定范围内,我们要查找的是一个相同的纹理上的像素。
纹理上的像素叫texel
可能一个像素周围的3x3或5x5的像素都会映射到一个相同纹素。即找最近的纹素
在这里插入图片描述
双线性插值
如上图,一个高分辨率的像素映射到一个低分辨率的纹理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值