GAMES101课程学习笔记—Lec 09:着色(插值、高级纹理映射)

课程资源 GAMES101-现代计算机图形学入门-闫令琪

课件 GAMES101: 现代计算机图形学入门

重心坐标

什么是重心坐标:重心坐标是由单形(如三角形或四面体等)顶点定义的坐标。重心坐标是齐次坐标的一种。

为什么需要重心坐标:为了做三角形内部插值

为什么要在三角形内部插值:我们希望当我们知道顶点的属性时,能在三角形内部实现平滑的过渡,能够得到三角形内部任何一个点的值

我们插值什么内容:三角形顶点可以定义各种属性,材质、颜色、法线

如何插值:使用重心坐标

对于三角形abc,在三角形abc形成的这个平面内任何一个点(x,y)都可表示出三个顶点abc的线性组合,但是线性组合的系数之和要为1,且三个系数非负,这三个系数就是该点对应的重心坐标

如下图所示,对于三角形内一点的重心坐标,我们可以通过面积的方法来求取

根据上述公式,三角形重心的重心坐标应该是(1/3,1/3,1/3)

重心坐标的应用

重心坐标在投影后并不会保持不变,因此先做投影再做重心坐标和先做重心坐标再做投影的结果并不相同

在三维空间中的属性,建议先在三维空间中做插值,然后再投影

纹理应用

通过重心坐标找到采样点对应的uv,然后可以直接应用其材质,得到采样点对应的颜色等性质

双线性插值

对于低分辨率的纹理,如果简单地做个四舍五入,会得到最左边的结果,可以看到效果并不好

因此,我们可以引入双线性插值

对像素中心进行采样,可能会出现如下走样的情况

原因是在远处,一个像素点包含了多个网格,采样的频率不够

点查询:给出一个点的值

范围查询:不采样,给出一个区域的平均值

由此,我们可以引出Mipmap多级渐远纹理

Mipmap多级渐远纹理

从一张图生成一系列图,利用Mipmap做范围查询,可以得知该区域的平均值的大小

该方法快速,但是结果是近似的,并且只作用于方形

上图中,每多一层分辨率就变为原来的四分之一,最终需要的存储空间比原先要多三分之一

对于上图中的一个三角形,假如我们想要知道图中红色的点对应的Mipmap的值,我们可以先将其和其相邻像素的中心一起映射到uv图中计算距离L

计算出来的距离L可以等效为原像素映射到uv的边长,由此我们可以算出对应的近似正方形的面积

同时我们也可以通过求D来确定我们需要的是第几层的数

D的结果为L取2的对数,如果L=1,则D为0,因此我们需要取第0层Mipmap的值

如果L=4,则D为2,因此我们需要取第2层Mipmap的值

而对于不为整数层的情况,例如1.5层,可以通过对前后两层,即第1层和第2层进行双线性插值,然后再对这两层进行插值,即三线性插值

Mipmap的限制

可以看到远处变得过于模糊,因为Mipmap只是近似的,且只对方块区域生效

可以使用各向异性过滤解决该问题

各向异性过滤

各向异性过滤相较于Mipmap,可以作用于矩形的查询,不局限于方形区域,但是对于斜着的区域还是无能为力,开销是原本存储的三倍,加上原图,为4倍

EWA过滤,可以把任意不规则的形状拆成很多不同的圆形,去覆盖这个形状,但是开销很大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值