光影跟踪
第一个全局照明法则叫做光影跟踪。它认为房间中可能有数十亿个光子,但是它只考虑进入眼中的那部分光子,它是根据追踪从屏幕像素到3D模型的光线来运算的。用光影跟踪创建图象按以下步骤进行:
1.从眼睛位置开始在光线后面追踪光线,穿过屏幕像素,直到与表面相交。
2.模型只提供表面的反射率,而不是光线到达表面的数量。整体照明效果是靠追踪光源发出的光线在环境中物体相交的交点得到。 如果追踪的光线不被场景中的物体阻挡,则用此光线计算表面颜色。
3.场景中的表面可能是有光泽或透明的,运算法则必须能够计算出透过该透明表面所看到的场景。
4.若后面的表面仍然是有光泽或透明的则重复上一步,直到达到最大反复次数或没有表面被碰到。 光影跟踪是一个非常通用的法则,它能够精确的计算出直接照明、阴影和镜面反射,其主要缺点之一就是对于中等复杂程度的模型运算速度显得较慢;之二则是不能计算非常重要的漫反射。
传统光影跟踪技术只能精确计算出从光源直接发出的光线所产生的效果。如下图所示,用光影跟踪房间中的桌子,可见桌子下面区域因不能得到光源直接发出的光线而出现黑暗效果。但再现实中桌子下面是能够得到来自墙面和地面的反射光的,不会是黑暗的。
光影跟踪 传统的光影跟踪技术通常是利用设置环境光参数来实现见接照明。 这个参数是人为随意设定的与客观世界毫无关系,这就致使光影跟踪渲染影像因不能真实反映不同表面的漫反射而显得十分呆板。
光能传递
因为光影跟踪存在一些重大缺陷,研究人员又在致力于另一种全局照明技术的研究。早在60年代初,热能工程师已经研究出了表面间热辐射的传递方法,这个理论很快就在熔炉、发动机上得到了应用。到80年代中叶,电脑图形研究者开始用这个方法模拟光传播,光能传递就因此应运而生。,光能传递计算环境中离散点的光强度,它与光影跟踪计算屏幕上像素点的颜色存在本质区别。光能传递运算时把表面分成称为网格元素的小块,然后计算各元素上的光线分布,并把光能传递值保存在各个网格元素中。
当光线分布被计算出后对任一视点通常都能实时的在屏幕上进行显示,这叫做视点不独立性,因为环境中的光线分布已被预先全部计算出来,所以对于各个不同视点都不用重新计算,所要作的仅仅是换角度显示。光影跟踪则正相反,它具有视点独立性,对于各个不同视点都需重新计算。
|