反射(Reflect)和折射(Refract)

BRDF 双向反射分布函数

 

反射:

R = 2 * N·L * N - L

反射(Reflect)和折射(Refract)

 

已知量:

N:顶点的法向量

L:入射光向量,如果是平行光就直接用光的方向向量,如果是点光源,就通过光源位置顶点在世界空间的坐标进行计算。

未知量:

R:反射方向向量

总所周知,我们之所以能看见东西,是因为有光的照射,这说明所有我们所能看的到的颜色,都是来源于光的作用。光照射在像素上的时候,会产生多条光路,其中一种就是镜面反射。这里如果我们只考虑像素的镜面反射,则有:

像素的颜色 = 直接光照的镜面反射 + 场景的间接光照的镜面反射

1.直接光照的镜面反射:

反射(Reflect)和折射(Refract)

这里的V表示的是像素点到视点的方向向量,世界空间里面。我们知道,R是L的反射向量,代表着光线的反射后的路线。那是不是表示,我们只有从R的位置看像素点的时候才能看到呢?显然是不是的,如果是的话我们会看不见很多东西。这里的R表示的是,我们能够看到最强的光的位置,如果我们从V的位置看的话,光

会进行一次衰减:(R.V)^n 其实n(反射系数)表示的是物体的反射能力。

2.间接光照的镜面反射:

光照到物体上后,只要不被完全吸收,就会辐射一部分出来,而此时这个物体也就具备了光源的性质,只不过这个性质是光源赐予它的。

由此,我们想,空间的物体的每个像素点都是一个间接光源,应该都具备1的特性才是,那为何我们一般感受不到呢?这是因为间接光照的辐射本身有限,当最终反射到我们眼中的时候,我们基本已经感觉不到它所造成的视觉差异了。但是,有几种情况下,我们是可以感受的到的。那就是当反射系数非常高的时候,例如镜子,我们就能从镜子里面看到其他的东西,这就是间接光镜面反射的作用。在所有当中,镜面反射是最强的,所以如果我们考虑类似全局光照中间接光源对物体产生的影响的时候,我们可以只考虑它的反射光或者只考虑它对周围物体的影响。

再说细节,由1可知,如果不是R方向上看像素点,所看到的结果不是最亮的,因为有一次R*V的衰减。而间接光本身就是很弱的,衰减后的基本上可以忽略。所以,现在我们把视点到像素的方向当做R,然后通过反射定律来寻找,是那个间接光源照射了这个像素点,最终只考虑这一个间接光源对像素的影响。结果就乘了第一个图了。已知R和N,求L,基本上所有的镜面反射场景,都是根据这个来的。

总结:直接光照侧重的是点亮像素,我们通过直接光源照射后看到了这个像素应有的颜色。而间接光源侧重的是自己,我们从视角通过反射,找到了此视角下对此像素影响最大的那个间接光源,所以,我们看到了它。

 

折射:

n1sinα1=n2sinα2

反射(Reflect)和折射(Refract)

透射:光从一个介质穿过的时候,就叫做透射,它并不需要从一个介质进入到另外一个介质,光源存在于空气中并且在空气里传播就可以称做是透射了。它透过了某种介质了不是么,这个跟我们平常说的透过玻璃之类的理解不一样。透射,强调的是光在介质中传播会被吸收,或者被介质中的粒子发散,最终强度衰减为0.它强调的更多的是衰减的作用,我们使用pong光照模型的时候就强调了传播的距离对光的衰减。透射是基础,所有的反射,散射,折射都是透射,因为它们都存在衰减。

折射:强调的是光从一种介质传入到另一种介质的时候,所产生的影响。与反射一样,折射也有直接光源和间接光源的影响,直接光源让我们看到了这个物体。而我们又通过这个物体看到了物体后面的间接光源,这些间接光源因为折射的原因,位置还发生了偏移。

1.直接光折射:已知,L向量,N向量,n1介质系数,n2介质系数求Q向量。然后根据透射时的衰减,最终得到照射到像素时的亮度。这里跟反射一样,Q其实是你看到像素点最亮的方向,并非视角到像素的方向,还需要(Q.V)^n一下。

2.间接光折射:此时Q = V 成为已知量,N已知,n1和n2已知,求出L,然后通过L找出那个间接光源。

 

 

总结:

1.光只是一个能量,而光源就是这个能量的发源地,能量跋山涉水的进入到你的眼睛,眼睛的传感器会接受能量,通过神经传递给大脑,然后大脑对这个能量进行分析。突然强光入眼,会感觉很不适,这跟别人打你巴掌的效果是一样的。

2.光从光源辐射出来后,会在介质透射传播,传播的过程就是能量损耗的过程,之所以用能量来描述,是因为里面的力太多了,我们只需要关注衰竭后最终剩余的能量值就行了。不同的介质对光能的衰减能力不一样。比较弱的像气体,比较中等的如透明液体和大颗粒的灰尘,比较严重的就数固体了。

3.介质对光造成衰减的方式有很多,1.吸收,物体把光吸收后会提升自身的热量,这一部分光能转换成了热量不再传播。2.反射,光照到一个粒子上并不是只往一个方向上反射,而是向各个方向反射。只不过其中沿平面反射法线R方向的能量最高,它被单独分类为镜面反射,而其它的会相对镜面反射的能力衰减的很快,被称为散射。

4.当介质里面的粒子(所有小颗粒,包括灰尘,分子等的统称)很小且很少的时候,这个时候几乎可以对其忽略不计,等同于真空看待。

5.当介质里面的粒子比较少,且不是很小的时候,这些粒子会散射一部分光能,因为粒子比较小,镜面反射的影响被忽略。如果介质比较均匀,就是均匀介质散射,如果不均匀就是非均匀介质散射。

6.当介质比较小,但是比较多的时候,它们会明显的改变光路,产生折射效果。一般能产生折射的,都能产生散射效果。当然,出来产生折射效果以外,由于厚度的关系,有些位置的光穿不过,形成一种次表面散射的效果。

7.然后就是非常多分子,像液体,此时粒子的镜面反射作用明显,不可忽略,而又有折射和散射效果。所以说,液体是光照最复杂的模型,一点都不为过。

8.最后就是固体,要么吸收,要么反射,平面反射的影响比散射大。介质均匀的话介质中的每个粒子的法向量一致,就像玻璃一样的,可以忽略散射的影响。而介质非均匀的,粒子的平面反射方向不一致,最终把平面反射当做散射来看待。

9.pong光照模型:为了简化计算我们把那些影响有限的大多数光综合到一起,作为一个没有方向只有亮度的世界光来考虑。而介质吸收后反射的光的颜色用纹理进行描述,然后乘距离的衰减因子,反射,折射角的衰减,最终算出一个简单的光照模型。

 

你可能感兴趣的:(reflect)