关于镜面反射行为的问题?
为什么镜面反射光会呈现明亮的颜色(通常是白色),而物体的其他部分则反射感知的颜色波长?
Why Specular reflected light will be in bright color(usually white) while other parts of the object are reflecting the perceived color wavelength?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论
评论(2)
从物理角度来看,这是因为:
假设您有一块红色塑料,表面光滑。塑料是红色的,因为它含有红色染料或颜料。进入塑料的入射光如果是红色则容易被反射,如果不是则被吸收;这种红光在塑料内部反弹,并使其以或多或少随机的方向返回(这就是该组件被称为“漫反射”的原因)。
另一方面,一些入射光一开始就不会进入塑料:而是从表面反射。因为塑料表面是光滑的,所以它的方向不是随机的:它根据镜面反射角的方向反射(这就是它被称为“镜面”的原因)。由于它永远不会撞击塑料中的任何着色剂,因此它的颜色不会像漫射组件那样通过选择性吸收而改变;这就是为什么镜面反射通常是白色的。
我应该补充一点,以上是现实的高度简化版本:有很多情况不属于这两种可能性。然而,它们对于计算机图形工作来说足够常见并且普遍适用:漫反射+镜面模型可以为许多表面提供良好的可见近似,特别是与其他廉价近似(如凹凸贴图等)结合使用时。
编辑:响应的参考Ayappa 的评论 - 通常产生镜面高光的机制称为 菲涅尔反思。这是一种经典现象,仅取决于材料的折射率。
如果材料表面光学光滑(例如,高质量玻璃窗),菲涅尔反射将产生真正的镜面图像。如果材料只是部分光滑(如半光泽油漆),您将获得镜面高光,其可能窄或宽,具体取决于其在微观水平上的光滑程度。如果材料完全粗糙(无论是在微观水平还是在小于图像分辨率的更大尺度),那么菲涅耳反射就会变得有效漫反射,并且不能轻易与其他形式的漫反射区分开来。
From a physical perspective, this is because:
Say you have a piece of red plastic with a smooth surface. The plastic is red because it contains a red dye or pigment. Incoming light that enters the plastic tends to be reflected if red, or absorbed if it is not; this red light bounces around inside the plastic and makes it back out in a more or less random direction (which is why this component is called "diffuse").
On the other hand, some of the incoming light never makes it into the plastic to begin with: it bounces off the surface, instead. Because the surface of the plastic is smooth, its direction is not randomized: it reflects off in a direction based on the mirror reflection angle (which is why it is called "specular"). Since it never hits any of the colorant in the plastic, its color is not changed by selective absorption like the diffuse component; this is why specular reflection is usually white.
I should add that the above is a highly simplified version of reality: there are plenty of cases that are not covered by these two possibilities. However, they are common enough and generally applicable enough for computer graphics work: the diffuse+specular model can give a good visible approximation to many surfaces, especially when combined with other cheap approximation like bump mapping, etc.
Edit: a reference in response to Ayappa's comment -- the mechanism that generally gives rise to specular highlights is called Fresnel reflection. It is a classical phenomenon, depending solely on the refractive index of the material.
If the surface of the material is optically smooth (e.g., a high-quality glass window), the Fresnel reflection will produce a true mirror-like image. If the material is only partly smooth (like semigloss paint) you will get a specular highlight, which may be narrow or wide based on how smooth it is at the microscopic level. If the material is completely rough (either at a microscopic level or at some larger scale which is smaller than your image resolution), then the Fresnel reflection becomes effectively diffuse, and cannot be readily distinguished from other forms of diffuse reflection.
这是一个波长吸收与反射的问题。
首先,镜面反射在现实世界中不存在。您看到的所有东西大部分都是反射光(其余的是发射光或其他光),包括漫射光。实际上,漫反射照明和镜面反射照明之间没有真正的区别:都是反射。另请记住,现实世界的光照并不像像素那样限制在 0-1 范围内。
表面反射光的漫射是由表面的微观粗糙度(微面)引起的。想象一个表面由数百万个微观镜子组成。如果它们全部对齐,您将获得完美的抛光镜子。如果它们都是随机定向的,则光会向各个方向散射,并且产生的反射会“模糊”。计算机图形学中的许多公式都试图对这种微观表面粗糙度进行建模,例如 Oren–Nayar,但通常使用简单的兰伯特模型,因为它的计算成本低。
颜色是波长吸收与反射的结果。当光能撞击材料时,部分能量被该材料吸收。然而,并非所有波长的能量都以相同的速率被吸收。如果白光从吸收红色波长的表面反射,您将看到绿蓝色。表面吸收的光越多,颜色就会越深,因为返回的光能越来越少。大部分吸收的光能转化为热能,这就是为什么黑色材料在阳光下比白色材料加热得更快的原因。
计算机图形学中的镜面反射旨在模拟从表面反射的强烈直接光源,就像在现实世界中一样。但实际上,您必须以高范围照明和颜色深度来反射整个场景,而镜面反射将是光源比反射场景的其余部分亮得多的结果,并且在一次或多次反射后返回更多的光能。比场景中其他光线更多的反射。但这在计算上会非常痛苦!对于实时图形来说尚不可行。使用 HDR 环境贴图进行光照是正确模拟这一点的尝试。
其他参考和解释:
镜面反射:
镜面反射与漫反射的区别仅在于反射的粗糙度表面。它们之间没有本质区别,这两个术语均指反射光。另请注意,本文中的漫射仅意味着光的散射,漫反射不应与其他形式的光漫射相混淆,例如次表面漫射(通常称为次表面散射或 SSS)。镜面反射和漫反射可以用光的“锐利”反射和“模糊”反射等术语代替。
原子吸收电磁能:
原子寻求平衡的能量状态,因此如果你向原子添加能量,它就会寻求释放能量。当光等能量传递到原子时,一些能量被吸收,从而激发原子,导致热能(热量)增加,其余能量被反射或透射(“通过”)。原子将以不同的速率吸收不同波长的能量,并且每个波长的强度不同的反射光就是产生颜色的原因。原子可以吸收多少能量取决于它当前的能量状态和原子结构。
因此,在一个非常非常简单的模型中,忽略入射角和其他因素,假设我将 RGB(1,1,1) 照射在吸收 RGB(0.5,0,0.75) 的表面上,假设没有发生透射率,则您的反射光光值为RGB(0.5,1.0,0.25)。
现在假设您在同一表面上以 RGB(2,2,2) 照射光线。表面的属性没有改变。反射光为 RGB( 1.5 , 2.0 , 1.25 )。如果接收此反射光的传感器固定在 1.0,则感知光为 RGB(1,1,1) 或白色,即使材质是彩色的。
一些参考资料:
www.physicalsclassroom.com 页面
询问科学家页面
维基百科:原子
维基百科:能量水平
Its a question of wavelength absorption vs reflection.
First, specular reflections do not exist in the real world. Everything you see is mostly reflected light (the rest being emissive or other), including diffuse lighting. Realistically, there is no real difference between diffuse and specular lighting : its all a reflection. Also keep in mind that real world lighting is not clamped to the 0-1 range as pixels are.
Diffusion of light reflected off of a surface is caused by the microscopic roughness of the surface (microfacets). Imagine a surface is made up of millions of microscopic mirrors. If they are all aligned, you get a perfect polished mirror. If they are all randomly oriented, light is scattered in every direction and the resulting reflection is "blurred". Many formulas in computer graphics try to model this microscopic surface roughness, like Oren–Nayar, but usually the simple Lambert model is used because it is computationally cheap.
Colors are a result of wavelength absorption vs reflection. When light energy hits a material, some of that energy is absorbed by that material. Not all wavelengths of the energy are absorbed at the same rate however. If white light bounces off of a surface which absorbs red wavelengths, you will see a green-blue color. The more a surface absorbs light, the darker the color will appear as less and less light energy is returned. Most of the absorbed light energy is converted to thermal energy, and is why black materials will heat up in the sun faster than white materials.
Specular in computer graphics is meant to simulate a strong direct light source reflecting off of a surface like it may do in the real world. Realistically though, you would have to reflect the entire scene in high range lighting and color depth, and specular would be the result of light sources being much brighter than the rest of the reflected scene and returning a much higher amount of light energy after one or more reflections than the rest of the light from the scene. That would be quite computationally painful though! Not feasible for realtime graphics just yet. Lighting with HDR environment maps were an attempt to properly simulate this.
Additional references and explanations :
Specular Reflections :
Specular reflections only differ from diffuse reflections by the roughness of a reflective surface. There is no inherent difference between them, both terms refer to reflected light. Also note that diffusion in this context simply means the scattering of light, and diffuse reflection should not be confused with other forms of light diffusion such as subsurface diffusion (commonly called subsurface scattering or SSS). Specular and diffuse reflections could be replaced with terms like "sharp" reflections and "blurry" reflections of light.
Electromagnetic Energy Absorption by Atoms :
Atoms seek a balanced energy state, so if you add energy to an atom, it will seek to discharge it. When energy like light is passed to an atom, some of the energy is absorbed which excites the atom, causing a gain in thermal energy (heat), the rest is reflected or transmitted (passes "through"). Atoms will absorb energy at different wavelengths at different rates, and the reflected light with modified intensity per wavelength is what gives color. How much energy an atom can absorb depends on it's current energy state and atomic structure.
So, in a very very simple model, ignoring angle of incidence and other factors, say i shine RGB(1,1,1) on a surface which absorbs RGB(0.5,0,0.75), assuming no transmittance is occurring, your reflected light value is RGB(0.5,1.0,0.25).
Now say you shine a light at RGB(2,2,2) on the same surface. The surface's properties have not changed. Reflected light is RGB( 1.5 , 2.0 , 1.25 ). If the sensor receiving this reflected light clamps at 1.0, then perceived light is RGB(1,1,1), or white, even though the material is colored.
Some references :
page at www.physicsclassroom.com
page on ask a scientist
Wikipedia : Atoms
Wikipedia : Energy Levels