为什么镜面反射光会呈鲜艳的颜色(通常为白色),而物体的其他部分则会反射出感知的颜色波长?
答案 0 :(得分:6)
从物理角度来看,这是因为:
假设你有一块表面光滑的红色塑料。塑料是红色的,因为它含有红色染料或颜料。进入塑料的入射光如果是红色则会反射,如果不是则会被吸收;这种红光在塑料内部反弹并使其在一个或多或少随机的方向上退回(这就是为什么这个组件被称为“漫射”)。
另一方面,一些入射光从未进入塑料开始:它反而从表面反弹。因为塑料的表面是光滑的,所以它的方向不随机化:它在基于镜面反射角的方向上反射(这就是为什么它被称为“镜面反射”)。由于它从未击中塑料中的任何着色剂,因此其颜色不会像漫射成分那样通过选择性吸收而改变;这就是为什么镜面反射通常是白色的。
我应该补充一点,上面是现实的高度简化版本:有很多案例没有被这两种可能性所涵盖。然而,它们足够普遍并且通常适用于计算机图形工作:漫反射+镜面反射模型可以为许多表面提供良好的可见近似,特别是当与其他廉价逼近(如凹凸贴图等)结合使用时。
编辑:响应Ayappa评论的参考 - 通常引起镜面反射高光的机制称为Fresnel reflection。这是一种经典现象,仅取决于材料的折射率。
如果材料表面光学上光滑(例如,高质量的玻璃窗),菲涅耳反射将产生真正的镜像图像。如果材料只是部分光滑(如半光漆),你会得到一个镜面高光,根据它在微观层面的平滑程度,它可能是窄的或宽的。如果材料是完全粗糙的(无论是在微观层面还是在某个较大尺度上,小于图像分辨率),菲涅耳反射就会有效地扩散,并且不能轻易地与其他形式的漫反射区分开来。
答案 1 :(得分:2)
这是wavelength absorption与反思的问题。
首先,现实世界中不存在镜面反射。你看到的一切主要是反射光(其余的是发射光或其他光),包括漫射光。实际上,漫反射和镜面反射之间没有真正的区别:它都是反射。另外请记住,现实世界的光照不像像素那样被限制在0-1范围内。
表面反射的光的扩散是由表面的微观粗糙度(微平面)引起的。想象一下,表面由数百万个微镜组成。如果它们全部对齐,您将获得完美的抛光镜面。如果它们都是随机取向的,则光在每个方向上散射,并且所产生的反射被“模糊”。计算机图形学中的许多公式试图模拟这种微观表面粗糙度,如Oren–Nayar,但通常使用简单的Lambert模型,因为它在计算上很便宜。
颜色是波长吸收与反射的结果。当光能撞击材料时,一些能量被该材料吸收。然而,并非所有能量波长都以相同的速率被吸收。如果白光从吸收红色波长的表面反射,您将看到绿蓝色。表面吸收的光越多,颜色越暗,返回的光能越来越少。大多数吸收的光能转化为热能,这就是为什么黑色材料在阳光下比白色材料更快地加热的原因。
计算机图形学中的镜面反射意味着模拟一个强烈的直接光源,它可以像在现实世界中那样从表面反射出来。但实际上,您必须在高范围照明和颜色深度上反映整个场景,而镜面反射将是光源比其他反射场景更亮的结果,并且在一个或更高的光能量之后返回更高的光能量。比场景中其余光线更多的反射。虽然这在计算上会非常痛苦!目前还不适用于实时图形。使用HDR环境贴图进行照明是为了正确模拟这一点。
其他参考和解释:
镜面反射仅与反射表面粗糙度的漫反射不同。它们之间没有固有的区别,两个术语都指反射光。还要注意,在这种情况下的扩散仅仅意味着光的散射,并且漫反射不应该与其他形式的光扩散混淆,例如次表面扩散(通常称为次表面散射或SSS)。镜面和漫反射可以用诸如“锐利”反射和光的“模糊”反射之类的术语代替。
原子的电磁能量吸收:
原子寻求平衡的能量状态,所以如果你给原子增加能量,它会寻求释放它。当像光这样的能量传递到原子时,一些能量被吸收,激发原子,导致热能(热量)的增加,其余的被反射或传播(通过“通过”)。原子将以不同的速率吸收不同波长的能量,并且每波长具有改变的强度的反射光是产生颜色的。原子能吸收多少能量取决于它的当前能量状态和原子结构。
所以,在一个非常简单的模型中,忽略入射角和其他因素,假设我在吸收RGB(0.5,0,0.75)的表面上发光RGB(1,1,1),假设没有发生透射,你的反射光值是RGB(0.5,1.0,0.25)。
现在说你在同一个表面上发出RGB(2,2,2)光。表面的属性没有改变。反射光为RGB(1.5,2.0,1.25)。如果接收此反射光的传感器夹在1.0,则感知光是RGB(1,1,1)或白色,即使材料是彩色的。
一些参考文献: