跳转到内容

计算机图形学/写实感/你的眼睛看到的

来自Wikibooks,开放书籍,开放世界

简单来说,你的眼睛看到的是光。也就是说,你的眼睛为了在大脑中构建图像而接收到的关于世界的唯一信息是光子,这些光子从你周围的物体上反射出来,进入你的眼睛。因此,构建写实图像(几乎)完全是关于模拟光照的。当没有光时,就没有光子与你的眼睛相互作用,因此很明显,你什么也看不到。

在日常生活中,我们周围到处都有光源提供光线,从我们家里的灯或街道上的灯,到白天太阳和晚上月亮(或者可能只是星星)。每个光源都有我们熟悉的特性;例如,太阳比我们经历的大多数其他光源都要亮得多,并且具有特定颜色的光(白色),并且在一天的不同时间占据天空中的某个位置,等等。

光源以天文速度发射光子(我们的眼睛接收它们);数量如此之大,以至于很难将其与我们日常经验中的数字联系起来。光源发出的每个光子都将永远沿直线传播,直到它与某些物质相互作用(事实上,当你仰望夜空中的星星时进入你眼睛的光子,与数百万年前离开恒星并穿越宇宙进入你眼睛的光子是相同的)。当光子确实与物质相互作用时,可能会发生几件事。

在最简单的情况下,光子撞击物质并反射出去。在这种情况下,光子通常会携带它撞击的物体颜色的信息,并继续沿反射方向传播。颜色的具体细节可能取决于环境。例如,如果白光从棕色桌子上反射出来,到达你眼睛的光子将携带关于桌子棕色颜色的信息,而不是白光。如果红光从白色桌子上反射出来,它可能会携带一些关于光源原始颜色的信息,并以红色阴影到达你的眼睛。

然而,光子并不总是反射出去。光子与物质相互作用时会做什么取决于物质的许多光学特性。例如,表面可以具有不同程度的反射率镜面反射率不透明度和表面光滑度(以及其他)。撞击高反射表面的光子更有可能沿可预测的方向反射(你从一定角度看镜子时所期望的方向),但如果它们撞击非反射表面,它们更有可能散射到各个方向,或者只是被吸收,从而光子不会从表面继续传播。类似地,撞击特别透明表面的光子可能不会反弹,而是继续前进,可能被偏转到稍微不同的方向(这种原始方向的变化称为折射,例如,当你将钢笔插入一杯水中时看到的扭曲现象)。

你可能会看看你所在的房间,它有所有精细的表面、许多错综复杂的物体和无数的光源,并想象所有光子在房间里四处飞舞,从物体上弹开,穿过物体,或者被吸收,或者可能从物体上弹开多次,所有这些都在最终到达你的眼睛之前。你大脑处理的最终图像是由大量光子构建的,所有这些光子在从光源到你的眼睛的旅程中都可能走过复杂的路径。

问题变得很明显。我们无法希望,即使在许多年后的未来计算机中,也希望将所有这些光相互作用模拟为单个光子离开光源并在场景中四处飞舞,然后再进入我们的虚拟相机镜头。相反,我们必须找到更易于计算的方法来近似我们上面描述的情况。最明显的技术称为光线追踪。

华夏公益教科书