【GAMES101笔记速查——Lecture 07 Shading1(illumination,Shading and Graphics Pipeline) 】

目录

1. 着色(Shading)

1.1 着色(Shading)--是什么

        1.1.1 着色的定义

        1.1.2 一个简单的着色模型:Blinn-Phong Reflectance Model

(1)Blinn-Phong漫反射项

(2)Blinn-Phong高光项

(3)Blinn-Phong环境光照项

(4)Blinn-Phong反射模型

1.2 着色频率(Shading Frequencies)--怎么用

        1.2.1 flat Shading(每个三角形进行着色)

        1.2.2 Gouraud Shading(每个顶点进行着色)

        顶点法线的计算方法

        1.2.3 Phong Shading(每个像素进行着色)

        像素法线的计算方法

        1.2.4 三种着色方法/频率的区别


1. 着色(Shading)

在之前,我们已经学了这么几个事:

  1. 模型变换:将模型变换成我们需要的样子,比如机器人罗圈腿的姿势
  2. 视图变换:将摄像机放到规定好的位置
  3. 投影变换:将3D转换为2D图像
  4. 光栅化:在屏幕上显示相关信息

目前的工作可以得到的效果vs我们期待看到的效果

    

   目前能呈现的状态都是物体的固有色,没有真实世界的光影感和体积感

为了让图像显示出来更加真实,我们需要对结果进行进一步的处理:着色

1.1 着色(Shading)--是什么

        1.1.1 着色的定义

在韦氏英文辞典里:用平行线或色块使图有明暗变化或是添加颜色变化

在本课中:给一个物体添加材质的过程。

        1.1.2 一个简单的着色模型:Blinn-Phong Reflectance Model

让我们先观察一个现实中的场景,其中存在:

高光区域

漫反射区域

环境光照,间接反光

建立着色模型需要一些定义

·观察方向v  、法线方向n  、光照方向 、物体表面的属性(颜色、亮度等等)······

·只考虑单个物体表面,没有其他物体影响产生的阴影,也不会在其他物体的表面形成阴影。

(1)Blinn-Phong漫反射项

· 单位面积接受的光量

取决于法线方向与光源方向的夹角—即兰伯特模型

·光源强度

由光能量守恒 :I*4\pi *1^{2} = {I}'*4\pi * r^{2}

推出{I}' = \frac{1}{r^{2}} * I,即单位面积光强和其与光源的距离呈平方反比。

·漫反射模型计算公式:漫反射光强 = 漫反射系数 * 着色点实际接收到的光强

漫反射系数kd(常与材质颜色有关)变大的过程中,整体的颜色也越来越亮。

(2)Blinn-Phong高光项

高光强度取决于观察方向v,高光的反射方向会比较类似于镜面反射的方向R

观察方向v和镜面反射的方向R足够接近的时候,就会看到镜面反射。这种计算方法是Phong模型的高光计算方法。Blinn-Phong的计算方法如下所示。

Blinn-Phong为什么很妙?

·半程向量h的计算比较容易,将 l 和 v 相加后除以它们和的模即可。

·而反射方向R的计算相比而言会更难,计算量会更大。

Blinn-Phong的高光项中的指数P是干什么的?

·通常来说,高光区域都比较小。为了控制高光区域,所以给点积项(在0-1之间的一个值)乘方,让高光区域变小。在Blinn-Phong模型中,P值一般取100-200。

(3)Blinn-Phong环境光照项

由于环境光照比较复杂,我们假设环境光强永远相同设为I_{a},环境光的颜色等属性都抽象为K_{a}这个系数。那么环境光就等于这两个值相乘。

Blinn-Phong中的环境光和光方向和观察方向等都没关系,所以它带来的效果一般就是给物体加一层颜色,不让暗部死黑。但这是一种非常大胆简化,实际工作中会使用其他方案来优化。

(4)Blinn-Phong反射模型

Blinn-Phong反射模型 = 环境光 + 漫反射 + 高光

1.2 着色频率(Shading Frequencies)--怎么用

上述三个球使用的模型一样,但是因为着色频率不同,导致了不同的着色结果。

·每个平面做一次shading

·每个顶点对应一个法线,每个法线做一次shading,顶点组成的三角形内部进行插值填充

·每个顶点对应一个法线,这些法线的方向在三角形内进行插值,使得每个像素都对应一个法线,然后对每个像素上的法线进行shading。

        1.2.1 flat Shading(每个三角形进行着色)

·计算每个三角形对应的法线比较容易:边向量叉积。然后对这个法线进行一次着色即可。

·平面着色带来的问题是,每个三角形面内只有一种颜色,边缘过渡比较生硬。

        1.2.2 Gouraud Shading(每个顶点进行着色)

·顶点的法线方向是可以算出来的。

        顶点法线的计算方法

如果是球就好办,顶点的法线方向就是顶点减去圆心位置所得到的向量。

如果不是球呢?

那就先计算出与目标顶点相邻的三角形的面向量

然后啊,对这些面向量进行平均或者加权平均。

        1.2.3 Phong Shading(每个像素进行着色)

        像素法线的计算方法

假设已经得到了顶点法线,那么就需要用到重心坐标,来插值出中间位置的法线方向,然后进行归一化。重心坐标之后再讲。

        1.2.4 三种着色方法/频率的区别

当几何模型已经足够复杂,那么着色方法就可以使用简单点的平面着色。

反之,需要采用精细一些的着色方法,与此同时,计算量会更大一些。

要根据实际情况选择合适的方法。

  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值