更新时间:2024-05-21 16:47
辐射度算法(Radiosity)是一种全局光照
辐射度在绘制过程中的引入经常对最后的场景带来更多一份的真实感,这是因为它模拟真实世界现象的方式。考虑一个在白色地板上的红球。
光打在球上,投射出一个阴影,还有将一小部分红光反射到周围的物体上 - 在这个例子中,也就是地板。该现象给白色地板靠近球的地方加上了一点红色的色调。该效应是很微妙的,但因为人类的眼睛对于其真实世界的对应现象很习惯,它可以增加真实感。
基本的辐射度算法方法其基础在于热辐射的理论,因为辐射度依赖于两个表面之间光能的传输。为了简化计算,辐射度算法假设该数值在整个面片上恒定(完全或理想漫射曲面);这意味着要计算精确的图像,场景表述的几何部分必须分解成更小的区域,或者说面片,然后把它们组合起来得到最后的图像。
在这个分解之后,光能传输的量可以通过使用已知的反射表面的反射率和两个面片的波形系数来计算。波形系数是一个无量纲量,它根据两个面片的几何朝向来计算,可以视为第一个面片所有可能发射区域的被第二个面片所覆盖的部分所占的比例。
更精确的讲,辐射度是每单位时间离开曲面片的能量,是发射和反射能量的组合:
其中:
Bi 是面片i的辐射度。
Ei 是发射的能量。
Ri 是面片的反射系数,和入射能量(从其他面片来的能量)相乘得到反射能量。
所有绘制环境中的j (j不等于i)对于BjFjidAj积分,得到离开每个面片j并到达面片i的能量。
Fji 是面片i和面片j的几何关系决定的常数波形系数。
对偶性:
给出:
作为简化,积分用每个面片上恒定的辐射度取代,上式简化为:
然后该方程可以应用到每个面片。这个方程是单色的,所以彩色辐射度需要对于每个所需的色彩进行计算。
常数Fji可以用几个计算方法。早期的方法采用半立方体 (一个假想的立方体中心位于第一个曲面,第二个曲面投影于其上,由Cohen 和Greenberg于1985年提出)以逼近波形系数,也解决了相交面片的问题。这在计算上耗费很大,因为理想的波形系数必须对一个可能的面片对导出,这导致了对于增加的几何复杂度在计算上的二次增长。