目录
1) 漫反射(Diffuse Reflection)和镜面反射(Specular Reflection)
Lecture 05
1) 漫反射(Diffuse Reflection)和镜面反射(Specular Reflection)
漫反射常被用在电影荧幕上,因为要保证电影院内不同位置的观众都能看到相同的画面;镜面反射则是不均匀的反射
![](https://img-blog.csdnimg.cn/img_convert/85eb4b467fe4e57dfa0c965615de0af9.webp?x-oss-process=image/format,png)
下面是一些英文缩写
![](https://img-blog.csdnimg.cn/img_convert/1798f72c195eab6800f36a398c16264d.webp?x-oss-process=image/format,png)
因为漫反射是均匀散射,所以反射亮度与我们的观察角度无关(即与vDir无关),当光照方向和法线方向重合时,反射的亮度最大
![](https://img-blog.csdnimg.cn/img_convert/5cf0d54ba8161882a040db416143b865.webp?x-oss-process=image/format,png)
镜面反射的范围是一个圆锥体,光照方向越靠近法线方向,反射亮度越低
- Phong模型:反射方向和观察方向夹角越大,反射亮度越低,当两者重合时亮度最高
- Blinn-Phong模型:法线方向和半角(光照方向和观察方向的夹角的一半)方向夹角越小,反射亮度越高,两者重合时,亮度最高
2) 实际操作
a) Phong模型
我们首先将光照方向反向,获得实际的光照方向,再将其与法线方向做一个反射,获得光照的反射方向,将反射方向与观察方向点积,并对负值进行处理就得到了镜面反射的高光,后面再使用Power节点进行处理相当于对高光进行了Photoshop中的正片叠底,Power取的次方值(Exponent)就是正片叠底的次数
![](https://img-blog.csdnimg.cn/img_convert/6b1503222b4c4f9aefac74d1ed6ce1e3.png)
上面的光照模型还有简单的实现方式,我们直接获取观察方向的反射方向与光照方向点积,根据光反射的性质,得到的效果与上面相同
b) Blinn-Phong模型
![](https://img-blog.csdnimg.cn/img_convert/a8c2410ebec9ee4e2bc7a4bb8e82976d.webp?x-oss-process=image/format,png)
两种镜面反射的模型在性能开销和效果上都是有一定的区别的
c) 代码实现
![](https://img-blog.csdnimg.cn/img_convert/5352c3dd1dbcdf6618c21aee4bd7dcf7.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/b6b2d69df4a1d9d396cc5e0289c2ddac.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/440914aa3c699ae617628fc9837db84e.webp?x-oss-process=image/format,png)
3) 作业
![](https://img-blog.csdnimg.cn/img_convert/521abfbbfc04640cede4ef454eedebfb.webp?x-oss-process=image/format,png)
Lecture 06
1) 作业点评
一组创意题中的葡萄后面会讲解
二组左下角给高光加了颜色,右下角有例子会讲
三组左下角做了一个类似透明的,但实际上是将主体颜色调成和背景色一样,同样有例子会讲
![](https://img-blog.csdnimg.cn/img_convert/c901d0714302086700b3ecd6a577f69b.webp?x-oss-process=image/format,png)
2) 作业批改
a) Lambert+Phong
连连看部分
![](https://img-blog.csdnimg.cn/img_convert/3fb80f2ce5c53df3cb4681d98bd281b9.webp?x-oss-process=image/format,png)
代码部分
b) 创意作业
首先是FakeEnvReflect
![](https://img-blog.csdnimg.cn/img_convert/04402cf78fef610610c6794c59967eee.png)
在Phong高光的基础上加了Remap节点,改变了高光的范围
然后对一个RampTexture进行采样,调整强度等参数,再加上一个普通的Phong高光就完成了
下面是葡萄
首先是Lambert模型,重映射到0->1(这里老师做了修改,后面贴图的颜色也要随着修改)后,和强度作为UV坐标去采样,并与基础的颜色进行插值减淡
![](https://img-blog.csdnimg.cn/img_convert/d8209937aea4d1208c809a3ef9f9c119.webp?x-oss-process=image/format,png)
下面是Phong高光模型
![](https://img-blog.csdnimg.cn/img_convert/f16f3fe4584b7eadb59fe9fc407ca9b6.png)
这里老师对贴图的绿通道进行了一个处理,再将贴图的G通道与两个明暗范围不同的高光进行插值
![](https://img-blog.csdnimg.cn/img_convert/997d25256f7ad41223dbbc0724d55d09.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/8f371a1e329f67b683ca863bd72e2de8.webp?x-oss-process=image/format,png)
将插值结果作为高光Power的幂,得到高光的结果,最后高光结果与上面Lambert部分的结果相加即可
~这次截图比较糊,只能凑合看了orz
最后是这只遍布斑纹的猴子
首先是Phong高光(这里用到的指数项会在下面获得)与一个菲涅尔相加
![](https://img-blog.csdnimg.cn/img_convert/a2e6f94008a81239497841432ea1f403.png)
下面使用了屏幕UV采样一个纹理并使用step节点对其进行一个二元遮罩,遮罩的结果用于插值两个Specular Power,然后将插值获得的指数用于Phong高光中
![](https://img-blog.csdnimg.cn/img_convert/84c8f3953372336b5c7dc94e10052962.png)
最后是Lambert漫反射部分,利用上面的插值结果分别对Lambert结果添加两个颜色
![](https://img-blog.csdnimg.cn/img_convert/8ec774bbcbbc3d5a678e15af2d39c357.png)
为Lambert的底色添加高光后,再与表面锈迹颜色根据二元遮罩进行插值就得到了最终效果
![](https://img-blog.csdnimg.cn/img_convert/55e06d03348be8baa314e0fcd10b2393.png)
![](https://img-blog.csdnimg.cn/img_convert/c255fc30ba960a0e9466d7ae1679cb7f.png)
3) 答疑
![](https://img-blog.csdnimg.cn/img_convert/c2b96b47d14a5c16ca38bf65bd6c3462.webp?x-oss-process=image/format,png)
4) BRDF(双向反射分布函数)
BRDF在104的笔记中有提到过
![](https://img-blog.csdnimg.cn/img_convert/1dae9a010a4e8326389bb71b1026f388.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/aee193595725d35f5595dde1929b7c83.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/f18b53ccbec37486758c49bf89331d60.webp?x-oss-process=image/format,png)