“环境光遮挡”是一种阴影和渲染技术,用于计算场景中每个点在环境光下的暴露程度。

环境光与什么是环境光有关?:


...照明要恒定且与位置无关:这就是环境照明。


如果环境照明没有固定的位置,那么如何指向或多或少地暴露于其中吗?环境照明是“在各个方向上都保持恒定的亮度。”因此,如果光线来自各个方向,则每个点都应以相同的因子暴露于环境照明。

评论

我回答了类似的问题gamedev.stackexchange.com/questions/23/…

#1 楼

当作为一种近似技术应用于环境照明时,您的观点是正确的。这种粗略的方法确实确实为所有表面提供了相同的照明水平,而不管它们的周围环境如何。

但是,环境光遮挡是一种不同的方法(较少粗略的方法),可以模拟真实场景中的光照水平如何变化取决于有多少反射光可以到达表面。造成这种混淆的原因是,两种名称不同的方法截然不同。

环境光遮挡是对现实生活中被称为环境光的一种更好的近似方法-环境光是从背景而不是直接从


如果环境照明没有固定的位置,那么如何将点或多或少地暴露在光源上?


当用于在环境遮挡的上下文中,术语“环境照明”仍然表示在所有方向上近似相同的背景光,但是根据场景中的对象未遮挡其中的哪些方向来照亮表面。

与单级环境照明相比,它可以提供细微变化的照明度,从而提供逼真的图像。这样可以产生现实生活中的效果,例如房间的角落比其他地方稍暗。

评论


$ \ begingroup $
“表面上的照明是基于场景中的对象没有遮挡的那些方向。”我对此感到难以理解。但是问题是,光从何而来?起源在哪里?因为如果我有两个球,并且周围的照明源于这些球之间,那么就不会有任何遮挡,因为物体和光源之间什么也没有。但是,如果原点位于其中一个球的后面,则一个球会被另一个球遮挡。 -> i.imgur.com/IRDvCzF.png因此,源的位置对于确定将被遮挡的位置很重要。但是Amb.L.没有位置。
$ \ endgroup $
–乔伊
2015年9月1日,0:28



$ \ begingroup $
@Joey使用一个点光源时,曲面上的每个点都会点亮或不点亮。使用两个点光源时,表面上的一个点可以被零个,一个或两个光照亮,从而提供三种不同的光照水平。在许多点光源下,照明会逐渐变化。环境光遮挡假装在所有方向上的距离中都有无限数量的点光源。这在物理上不是现实的,但它近似于真实场景中的照明,在该场景中,场景中的对象反射了光线,因此它们全部被二手光照明。
$ \ endgroup $
– trichoplax
2015年9月1日9:05

$ \ begingroup $
指定环境光遮挡通常是模拟来自“天空”的光,这可能有助于理解,这将清除有关光源是什么的问题。
$ \ endgroup $
–porglezomp
2015年9月1日13:23



$ \ begingroup $
@porglezomp是一种有用的思考方式,可以帮助您理解它,但也可以在没有天空的封闭房间中使用,其中环境光的遮挡是墙壁多次反射光的遮挡。
$ \ endgroup $
– trichoplax
2015年9月1日于13:44

$ \ begingroup $
@trichoplax是的,这就是为什么我将其用引号引起来。
$ \ endgroup $
–porglezomp
2015年9月1日于13:48

#2 楼

如果我们不谈论宇宙学,就不会真正存在环境光。我们所说的环境只是许多次级反射产生的光。



图像1:无环境光(左)和环境光(右)。两者看起来都是人造的。

我们可以将恒定的因子近似为环境光。但这看起来有点褪色,因为环境光在场景中并不恒定。为了使环境看起来更好,我们可以使用技巧。如果我们对对象的覆盖范围(遮挡)做一个半球形的探测,我们将获得一个像素的估计值,该像素位于腔体内。您在空腔中生活的次数越少,环境光在此处发生的可能性就越大。



图像2:通过使用局部几何遮挡来调制环境光,我们得到了更好,更逼真的环境光。最终颜色和贡献也略有调整(右)。只是普通的环境(左)。

注意:环境光遮挡组件还被其他现象所使用,因此它也可以模拟灰尘堆积等。在任何情况下,您都不应该将环境光遮挡乘以一切。很多教程都犯了这个错误。您应该将环境光遮挡添加到现有图像中,也就是说,如果您仅用它来估计环境光。

评论


$ \ begingroup $
糟糕。红色,金属和绿色球的共享模型对环境光没有反应,但是对我的环境光有反应。希望您能理解。
$ \ endgroup $
– joojaa
2015年9月1日于11:40