在Google进行快速搜索之后,我发现了此博客文章,其中讨论了它的含义,基本概述和实现细节。但是我还是有些困惑。因此,根据我的收集,这是一种将漫射光照预先计算到光照贴图上以产生光反射幻觉的方法?有人可以在没有所有术语的情况下向我解释吗?该技术是与基于图像的照明和环境光遮挡等技术一起使用还是本身旨在成为完整的全局照明技术?
#1 楼
光能传递是一种计算漫反射GI的方法,即,假定每个表面都是没有镜面反射分量的朗伯曲面。在光能传递算法中,您将表面分成小块,然后计算两个块之间的“形状因数”,这定义了从一个块转移到另一块的能量。块之间的形状因数使用贴片之间的距离(贴片之间的距离越远意味着它们之间传递的能量越少),它们各自的方向(两个贴片彼此相对比彼此背对时传递更多的能量),可见性(如果贴片被遮挡,则不会)将能量转移到贴片上)及其尺寸(较大的表面会散发出更多的能量)。形状因数服从互易性,这意味着补丁A和B的因数可用于计算从A到B以及从B到A的能量传输。
到计算补丁的辐射度,然后遍历所有补丁,并使用其各自的形状因数和每个补丁的亮度来累积其他补丁的能量。这是光能传递算法的单次迭代,对于多次轻弹,您可以运行同一算法的多次迭代。例如,可以通过将每个补丁周围的场景渲染到一个半立方体并累积每个补丁的多维数据集的结果来实现此目的。
要回答您的问题,是否光能传递是完整的GI解决方案-不,不是。由于所有曲面都是朗伯曲面,因此没有镜面反射分量,因此,对于完整的照明解决方案,您还需要使用其他技术。通常将光能传递的结果也存储在分辨率有限的光照贴图中,因此您可能需要使用AO提供更高频率的光照细节。
评论
$ \ begingroup $
像UE4,Unity,Frostbite等大多数引擎是否将其与其他方法一起用作全局照明技术?我知道UE4具有Lightmass,而Unity使用Enlighten,它们基本上是光能传递的“引擎”吗?您还可以通过哪些其他方式实时烘烤光或计算间接照明?
$ \ endgroup $
– Arjan Singh
16-10-30在5:49
$ \ begingroup $
所有实时引擎都将某种间接照明近似值(基于辐射度或其他方法)与其他技术结合在一起,以获得更完整的渲染方程式。您关于不同技术近似间接照明的问题值得您自己回答,尽管它涉及的问题范围太广,无法在评论中回答。
$ \ endgroup $
–JarkkoL
16-10-30在16:38
$ \ begingroup $
您能推荐有关该主题的任何优秀教程吗?
$ \ endgroup $
– Arjan Singh
16年11月2日在8:23
评论
光能传递是一种在所有表面都是完美漫射(朗伯)的假设下计算全局照明的方法。