Games101-着色(光照与基本着色模型)

着色/Shading

在这里插入图片描述
着色:两件事情,一是引入明暗的不同,二是引入颜色的不同
这节课里把shader定义成对不同的物体应用不同的材质这一过程,不同的材质肯定和光线的相互作用有不同的方法

A Simple Shading Model(Blinn-Phong Reflectance Model)

布林冯反射模型
在这里插入图片描述
某个光源在右上的图片
镜面高光,漫反射,环境光
在这里插入图片描述
定义一些东西:n法线,v观测方向,l光照方向。物体表面的相关属性,有多亮shininess,颜色color
在这里插入图片描述
目前说的着色都是局部的,只考虑自己,不考虑是否在阴影内,不考虑其他物体的存在,不考虑光线是否会被别的地方的物体挡住。所以没有阴影

漫反射/diffuse

在这里插入图片描述
漫反射:一个光线打到物体的某个点时,光线会被均匀的反射到不同的方向上去
在这里插入图片描述
当物体表面的朝向和物体有一定夹角时,得到的明暗是不一样的
光是一种能量,考虑一个shading point接送了多少能量,就考虑周围一个单位面积接受了多少能量,单位面积始终是不变的
接受到的能量和光照方向与法线方向的夹角的余弦值是成正比的。当两个方向平行时接受了所有的能量,当几乎垂直时单位面积几乎接受不到多少光
在这里插入图片描述
光是一种点光源时,我们认为在任何一个时刻,光的能量一定集中在一个球壳上。根据能量守恒,当光传播的越来越远时,球壳越来越大,每个点上的能量越小。
假设球壳和点光源的距离是1时,我们定义光的强度是 I I I(光的各种物理量,在这里定义用强度其实不合理,这里先暂时这样解释),当传播到距离为 r r r时,光的强度是 I r 2 {I}\over{r^2} r2I
球的表面积是 4 π r 2 4πr^2 4πr2, 根据能量守恒 4 π I = 4 π r 2 × ? 4πI = 4πr^2\times ? 4πI=4πr2×?
因此单位面积接受到的光的能量,和光的传播距离是成平方反比的
在这里插入图片描述
假设一个点光源,距离shading point的距离是 r r r,到达点的能量是 I r 2 {I}\over{r^2} r2I,接受多少取决于余弦(两个单位向量点乘 n ⋅ l n{\cdot}l nl),可以求得最终能看到多少能量,即物体的明暗
注意,当两个向量点乘为负时,在这里没有物理意义,这是光线从物体下面打到点上,对于反射没有意义。
对于点来说,有颜色是因为反射出了不吸收的能量。
不同的点有不同的吸收率,因此形成不同的颜色,
定义一个系数 k d k_d kd表示了多少能量被吸收,为1时完全不吸收能量,为0时吸收所有能量。当把这个数量表示成一个三通道的向量rgb,就可以表示这个shading point的颜色
漫反射和观察角度 v v v完全没有关系
在这里插入图片描述
漫反射虽然是光被均匀的反射到四面八方各个方向,但不代表看到的结果完全是平的,而是跟各个位置的朝向有关系,只不过意味着,不管从哪个位置看某个点,如果光源位置不变,如果物体位置不变,看到的结果亮度是一样的

镜面反射/specular

在这里插入图片描述
比较光滑的物体,反射方向都非常接近镜面反射方向 R R R,观察方向 v v v和镜面反射接近时,能看到高光,其他时候看不到高光
在这里插入图片描述
当观察方向 v v v和镜面反射方向 R R R接近时,其实就是法线向量 n n n和半程向量 h h h很接近
l + v l+v l+v之后根据平行四边形法则,一定是角平分线方向,再做归一化获得 h h h
这样为了衡量能否看到高光,只需判断半程向量和法线是否接近
两个向量点乘 n ⋅ h n{\cdot}h nh,接近1离得近,接近0离得远,反向不考虑
通常情况下,高光都认为是白的,所以一般高光的镜面反射系数 k s k _s ks认为是白色
实际镜面反射项也要考虑多少能量被吸收 n n n l l l的点乘,但布林冯模型是经验模型,主要关注的是能否看见高光,把能量吸收简化掉了
直接用 R ⋅ v R{\cdot}v Rv判断镜面反射是冯反射模型,布林冯模型是个改进,因为半程向量 h h h更好算,反射向量 R R R不好算

在这里插入图片描述
点乘后需要加上右上角的指数 p p p,因为向量之间的余弦虽然能判断向量是否接近,但是容忍度太高了。例如当相隔45°的时候,已经离得较远,但余弦值仍然较大。如果直接用夹角余弦值生成算高光,会生成一个非常亮的高光
一般情况下,布林冯模型里,指数 p p p取值在100-200之间,基本在3°,5°之外就看不到高光
在这里插入图片描述
k s k_s ks系数从上往下增大,表示越亮, p p p指数从左往右增大,高光越来越小

环境光照/ambient

在这里插入图片描述
物体有些地方不直接被光源照到,但不是完全暗的,因为有很多光线弹射很多次后从四面八方照射到物体上
因此假设任何一个点,接收到来自环境的光永远都是相同的,强度叫 I a I_a Ia, k a k_a ka为环境光的颜色系数
环境光和实际光照方向 l l l无关,和观察方向 v v v也无关。环境光其实是一个常数。其实就是某一个物体任何一个地方它都有一个常数的颜色
布林冯模型这里的环境光这只是个假设,事实上要精确计算环境光要通过复杂的全局光照处理
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值