漫反射和镜面反射的区别是基于物理的?


34

实时计算机图形中对表面进行着色的经典方法是将(朗伯(Lambertian))扩散项和镜面项组合在一起,最有可能是Phong或Blinn-Phong。

图片来自维基百科

现在,随着基于物理渲染的趋势以及诸如FrostbiteUnreal EngineUnity 3D之类的引擎中的材质模型的趋势,这些BRDF已经发生了变化。例如(当时相当通用),最新的虚幻引擎仍使用Lambertian漫反射,但结合了Cook-Torrance微面模型进行镜面反射(特别是使用GGX / Trowbridge-Reitz和菲涅耳术语的修正的Slick近似) )。此外,“金属”值用于区分导体和电介质。

对于电介质,漫反射使用材料的反照率进行着色,而镜面反射始终是无色的。对于金属,不使用漫反射,镜面项与材料的反照率相乘。

关于现实世界的物理材料,是否存在漫反射和镜面反射之间的严格分隔,如果存在,分隔分隔是从何而来的?为什么一个是彩色的而另一个却没有呢?为什么导体表现不同?

Answers:


30

首先,我强烈建议您阅读Naty Hoffman的Siggraph 演示文稿,其中涉及渲染的物理原理。就是说,我将尝试借由他的演讲中的图像来回答您的特定问题。

查看单个轻粒子撞击材料表面上的一点,它可以做两件事:反射或折射。反射光会反射出表面,类似于镜子。折射的光在材料内部反射,并可能从材料进入的位置离开材料一定距离。最后,每次光与材料的分子相互作用时,它都会损失一些能量。如果失去足够的能量,我们认为它会被完全吸收。

引用纳蒂的话,“光是由电磁波组成的。因此,物质的光学性质与其电性质紧密相关。” 这就是为什么我们将材料归为金属或非金属的原因。

非金属将同时显示反射和折射。 非金属

金属材料仅具有反射作用。所有折射光都被吸收。 金属制品

尝试对光粒子与材料分子的相互作用进行建模将是非常昂贵的。相反,我们做一些假设和简化。

简化折射

如果像素大小或阴影区域与出入口距离相比较大,我们可以假设该距离实际上为零。为了方便起见,我们将光的相互作用分为两个不同的术语。我们将表面反射术语称为“镜面反射”,将由折射,吸收,散射和再折射产生的术语称为“漫射”。 分为漫反射和镜面反射

但是,这是一个很大的假设。对于大多数不透明的材料,此假设是可以的,与现实生活相差不大。但是,对于具有任何透明度的材料,该假设将失败。例如,牛奶,皮肤,肥皂等。

材料的观察到的颜色是未被吸收的光。这是反射光以及从材料出射的任何折射光的组合。例如,纯绿色材料将吸收所有不是绿色的光,因此到达我们的眼睛的唯一光就是绿色光。

因此,美术师通过给我们提供材料的衰减函数,即光如何被材料吸收,来对材料的颜色建模。在我们简化的漫反射/镜面反射模型中,这可以用两种颜色表示,即漫反射颜色和镜面反射颜色。在使用基于物理的材料之前,艺术家会随意选择每种颜色。但是,这两种颜色应该相关联似乎很明显。这是反照率颜色出现的地方。例如,在UE4中,它们按以下方式计算漫反射和镜面反射颜色:

DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)

其中Metallic(非金属)为0,金属为1。“镜面反射”参数控制对象的镜面反射(但对于99%的材料,通常为0.5)


1
为什么入射光线在反射/折射后会分裂?如果光是粒子,是否意味着该粒子递归分裂?如果光是波,那是否意味着按频率分割(但是在这种情况下,为什么在第二次/第三次/等击中后才分裂)?
nikitablack

5
粒子不会分裂。相反,这些图像显示了它可能采取的潜在路径。
RichieSams 2015年

2
许多粒子将从(几乎)相同的角度撞击(几乎)相同的点。对于每个出的粒子,通常都会有一个粒子进入。这意味着,从某个角度在某个点上的某个角度对粒子束进行平均后,会分成几次(很多)反射。
棘手怪胎

1
很好的答案可以说明我的大多数问题。为什么非金属的镜面部分无色且不受反照率影响?极化如何以及在何处发挥作用?
David Kuri

1
“材料观察到的颜色是未被吸收的光。” 在这一点上,可能值得参考。是否存在RGB无法很好地代表常见的材料?讨论,因为荧光材料浮现在脑海。
西蒙F

23

实际上,我几天前确实在想这个。在图形社区中找不到任何资源,我实际上走到我大学的物理系,并询问

事实证明,我们图形使用者相信很多谎言。


首先,当光线照射到表面时,菲涅耳方程式适用。反射/折射光的比例取决于它们。您可能知道这一点。

没有“镜面颜色”之类的东西

您可能不知道的是,菲涅耳方程根据波长而变化,因为折射率根据波长而变化。对于电介质(分散,有人吗?)而言,变化相对较小,但对于金属而言,变化可能很大(我认为这与这些材料的不同电结构有关)。

因此,菲涅耳反射项随波长而变化,因此不同的波长被优先反射。在广谱照明下看到,这就是导致镜面反射颜色的原因。但特别是,不会在表面发生神奇的吸收(其他颜色只是折射的)。

没有“漫反射”之类的东西

就像纳蒂·霍夫曼(Naty Hoffman)在与其他答案相关的谈话中所说的那样,这实际上是对分散的地下散射的近似估计。

金属确实会透射光

内蒂·霍夫曼(Naty Hoffman)是错误的(更确切地说,是简化)。光就不能得到由金属立即被吸收。实际上,它将很方便地穿过几纳米厚的材料。(例如,对于金,将587.6nm的光(黄色)衰减一半需要11.6633nm。)

像电介质一样,吸收是由于比尔-朗伯定律引起的。对于金属,吸收系数要大得多(α=4πκ/λ,其中κ是折射率的虚部(对于金属〜0.5及以上),而λ以米为单位)。

这种透射(或更准确地说,它产生的SSS)实际上是造成金属颜色很大一部分的原因(尽管的确,金属的外观受其镜面反射的支配)。


3
谢谢!我只知道这些简化。这些额外的细节很棒
RichieSams 2015年

1
这是一个有趣的答案。您能否澄清/链接缩写词SSS?
trichoplax

@trichoplax谢谢!SSS ==次表面散射。
malletett

谢谢:)如果您在问题中予以澄清,它将在删除注释后仍然存在(不能保证长期存在)。我已经在链接和悬停文本中进行了编辑,希望可以使您的演示文稿保持完整。
trichoplax

2
虽然我很欣赏这个答案的精妙之处。亚表面散射被认为是毫米尺度的效应,而其真正的意义是,在分子范围内,所有事物都会以某种程度通过表面。但是基本的限制是,我们通常要计算毫米尺度的效果,并尝试将较低的水平抽象为统计模型。因此,千分尺立即等于,因为大多数像素看到的面积要大得多。同样适用于颜色,它在物理上并没有像我们的眼睛和大脑那样有效地存在于颜色中
joojaa 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.