1.反射
2.镜面反射(高光反射)
3.环境反射
1.反射
我们通常说的反射有两种:
a.镜面反射(Specular Reflection)
b.环境反射(Environment Reflection)
2.镜面反射(高光反射)
高光反射光照模型中, 我们计算的是光线直接照射到物体表面后, 沿镜面反射方向进入眼睛的光线; 我们模拟的是光滑表面的
高光效果, 计算时, 使用光线的入射光线和表面法线计算出反射方向, 然后判断反射方向与视线方向的接近程度
注: 这里的关键是, 我们假设光线是从光源发出, 经过表面反射后进入眼睛
a.你打开一盏台灯(点光源), 照在苹果上
b.苹果表面会出现一个明亮的高光点
c.这个高光点是台灯灯光在苹果表面的直接镜面反射
d.镜面高光是为了计算"光源在表面形成的高光点在哪里"
3.环境反射
环境反射描述的是从环境(比如天空, 墙壁, 其他物体)来的光线, 照射到光滑物体表面, 然后根据镜面反射定律, 反射并进
入了我们的眼睛(环境反射将周围的环境贴在物体表面了)
这个过程分解:
a.光线来源: 不是某个特定的灯泡, 而是整个环境; unity中这个环境被反射探针拍成了一个全景图(Cubemap)
b.反射行为: 在光滑表面上, 光线会像镜子一样, 按照"入射角=反射角"的定律进行反射
c.最终接收: 反射后的光线进入眼睛(相机), 我们就能够看到物体表面映照的环境影像
a.你关掉台灯, 打开房间的顶光(环境光)
b.现在你看苹果, 看不到一个明显的高光点, 但能看到苹果表面映照出了整个房间的模糊影像
- 桌子, 窗户, 你的手等
c.这个映照出的影像就是环境反射
计算原理: 为了找到苹果表面某一点应该映照出环境的哪个部分, 我们需要知道
a.眼睛的视线(视野方向V)碰到这个点后, 会像镜子一样朝哪个方向反射出去
b.这个反射方向R的计算公式是: R = reflect(-V, N) (基于视野方向V和法线N)
c.然后我们沿着这个反射方向R, 去环境贴图(反射探针拍的"全景照片")里查找颜色