计算机图形学第五天

如何做插值:

运用重心坐标 比如我们要对颜色进行插值 A(1.0,0.0,0.0) B(0.0,1.0,0.0) C(0.0,0.0,1.0) 我们要给三角形内进行插值 这个时候三角形内部每一个点都可以用 aA+bB+cC表示 所以我们通过(x,y)算出重心坐标a,b,c然后(x,y)点的颜色值就等于a*(1.0,0.0,0.0)+b*(0.0,1.0,0.0)+c*(0.0,0.0,1.0) 其他的法线 纹理之类的也一样 其实重心坐标就有点像该坐标在三角形内部的相对于三个顶点的权重

但是有一点:

如果使用了投影的话 你在三维世界时计算的重心坐标和投影到二维平面时计算的重心坐标是不一样的(就拿最简单的平躺的一个三角形投影过来是一条线 就根本没办法计算了)所以一般是在三维空间计算重心坐标

重心坐标:

重心坐标是:(a,b,c)
(x,y) = aA+bB+cC
重心坐标要表示的坐标(x,y)一定要在三角形内部 如果a+b+c = 1 则三角形平面内任意坐标可以用 a个A坐标+b个B坐标+c个C坐标表示 也就是aA+bB+cC表示(a,b,c)不能小于0
在这里插入图片描述
重心坐标也可以通过面积比求出来
在这里插入图片描述
已知ABC坐标和(x,y)坐标求(x,y)的重心坐标除了用面积来求 也可也用这个标准式子

当出现被贴物体分辨率高于纹理图片分辨率时:

就会发生有的像素点的纹理坐标带小数 无法找到与之对应的纹理图片的纹素(纹理像素)这个时候最简单的办法就是四舍五入的方法
在这里插入图片描述
最左边那张图就是四舍五入的结果
而中间的结果就是双线性插值

双线性插值:

在这里插入图片描述
也是类似于权重的方法红色的点为像素在纹理中的对应位置 黑色的点为纹素
双线性插值就是用周围四个纹素点做插值
这个其实就是先进行模糊再进行采样

当出现被贴物体分辨率低于纹理图片分辨率时:

在这里插入图片描述
因为近大远小的缘故 近处的像素的纹理坐标可能带小数 而远处的像素可能会一下覆盖多个纹素产生出上面左边的那张图 近处产生锯齿状,远处产生摩尔纹
请添加图片描述
如果我们把左边那幅图奇数行和奇数列都去掉 再拼起来 再扩大成这样每一张图 就是有图 有摩尔纹
手机拍电子屏幕也是会产生摩尔纹

在这里插入图片描述

这个时候我们该怎么办:

我们有两种办法
1.使用以前的方法,增加取样点,进行超取样,但是计算很繁重
2.不进行取样,直接获取像素覆盖区域的平均值 所以使用Mipmap

Mipmap:

MipMap能做范围查询,能做的快,但是不准确,而且!!只能做方形的范围查询
Mipmap就是把一幅图不断地缩小一倍像素 最后到1*1的像素 形成一个像素金字塔 如下图
每个纹素是更高级别纹理的四个对应纹素加权平均得到的
在这里插入图片描述
第一张图就是第0层,第二张是第1层。。。。
我们如何运用呢,当一个像素覆盖区域很多个纹素的时候我们该如何确定这个像素覆盖了多大范围呢
在这里插入图片描述
在这里插入图片描述
左边的图是三角形中和像素,右边的图是要贴在三角形上面的纹理坐标
我们要算左图中一个像素在纹理中覆盖的纹素范围,就取该纹理和其周围三个点 将着四个点映射在纹理坐标中就然后取边长的最大值,就可以近似的看为该像素在纹理中覆盖的纹素范围
而当我们计算出了覆盖的纹素范围时,假设计算出该像1 * 1的素覆盖了4 * 4的纹素 那我们把4 * 4放在像素金字塔(Mipmap)的第0层 我们就可以发现在第2层会变成1 * 1 所以我们就选取第二层就行了
在这里插入图片描述
把金字塔层数显示出来了 越远的层数越大
但是图中很明显只能出现整数层 那我们就需要用到插值实现小数层
比如1.8层 那
在这里插入图片描述
第一层做一个双线性插值,再第二层也做一个 然后再这两层之间再做一个插值 也就是把第一层的这个插值当一个下限,第二层的插值做上限,在这个中间做一个插值

但是实际上Mipmap的效果不是很好 他的优点是他多开销的只有原来的三分之一
在这里插入图片描述
因为Mipmap他只能压缩为正方形的 但是实际图中会发现很多地方他并不是压成正方形
所以就有了

各向异性过滤:

多余的开销较大 是原来的三倍
在这里插入图片描述
上面那张有卫星的图就是各向异性过滤 他相对于Mipmap 他新增了单纯的横向压缩和竖向压缩(Mipmap是横竖一起同时压缩)也就是不再局限于方形
但是这还是只解决了矩形 像上上面的图中会发现有斜着压缩的 又没办法解决了 所以就有了EWA 不知道是啥 反正是更好的效果 可以解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值