GAMES101第九讲Shading 3笔记

一、重心坐标(Barycentric Coordinates)

(1)为什么我们想要做插值?
①已知三角形三个顶点的属性,想要获得三角形内部平滑变化的属性(如纹理坐标,颜色,法线等)。
②使用重心坐标可以实现插值。
(2)重心坐标是对一个三角形(α,β,γ)而言的。
重心坐标1
①不同的三角形对应不同的重心坐标系。
②α,β,γ均为非负且和为1时,该点在三角形内。
③三角形内任意一点均可以用重心坐标表示。如点A的重心坐标为(1,0,0),点B的重心坐标为(0,1,0)。
④进行投影之后,该三角形可能会变成形变,那么重心坐标就可能会发生变化。
(3)从几何的角度看
重心坐标2
①以α为例,α与A相关,α的值就是A顶点对面的三角形的面积AA与三角形ABC的面积之比。
(4)重心坐标的计算公式如下:
重心坐标3
(5)重心坐标的使用
重心坐标4
①已知三个顶点的属性和某个点的重心坐标,则可以计算得到该点的属性。
②三维空间里的属性应该在三维空间里进行差值获取。

二、纹理映射

(1)以漫反射为例子来映射纹理
①对于每个像素点(通常是像素中心)的坐标,都计算出对应的纹理坐标。
②应用到纹理坐标计算出对应的颜色。
③设置颜色。
纹理映射

三、纹理放大(Texture Magnification)

(1)纹理放大(案例1)
①如果纹理较小,那么图像可能会出现锯齿。
②这是因为一个小区域内的像素可能会映射到同一个纹素。
③使用双线性插值来获得更准确的属性。
小纹理的结果
(2)双线性插值(Bilinear Interpolation)
①找到目标位置周围四个像素点。
②先进行s方向上的插值,获得u1和u2的属性。
双线性插值1
②然后对u1和u2进行t方向上的插值,即可得到目标位置的属性。
双线性插值2
(3)纹理放大(案例2)
①如果纹理较大,那么图像可能会出现摩尔纹和锯齿。
②不同位置的像素覆盖的纹素多少不同,远处的像素可能会覆盖一大片纹素。
纹理较大的结果
(4)纹理放大(案例2)的解决方法
①可以采用超采样,但这种方案的开销大。
②使用平均范围查询(Range Query)的方法。

四、Mipmap

(1)Mipmap:将图片按比例缩小
mipmap1
①允许进行范围查询。
②查询速度快,但只能做近似且为正方形的查询。
③只额外多了1/3的存储空间。
(2)求像素点对应的mipmap层数
mipmap2
①将像素点映射到纹理坐标上,可以发现原来的方形像素区域会被映射成不规则的纹理。
mipmap3
②求出映射到纹理坐标系里,当前像素点与周围两个(也可以是更多个)像素点的最大距离L。
③使用一个边长为L的方形区域来近似这块不规则区域,从而获得纹理。
mipmap4
④根据边长L可以算出对应的是mipmap里的第几层,从而获取纹理。
(3)mipmap的效果
mipmap5
①有初步的效果,但可以看到有部分地方不连续。这是因为只计算了第0、1、2等层的属性,而没有计算中间如1.5层的属性。
②可以使用三线性插值来解决,在两层mipmap之间进行第三次插值,来获取更加连续的属性。
三线性插值
③使用三线性插值的结果如下。
三线性插值的结果
(4)mipmap存在的问题
mipmap的问题
①远处的图像会变模糊。
②使用各向异性过滤可以进行改善。

五、各向异性过滤(Anisotropic Filtering)

(1)ripmap
ripmap
①在两个方向上进行缩小。
②允许进行矩形区域的范围查询。
③对于斜的区域范围查询没有太大改善。
ripmap的缺点
④存储开销多了3倍。
(2)EWA filtering
EWA filtering
①进行圆形区域的范围查询。
②需要进行多次查询。

参考文献

课程视频链接: GAMES101 Lecture09 Shading 3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值