MCPLive > 杂志文章 > 3D未来争夺战 光线追踪算法浅析

3D未来争夺战 光线追踪算法浅析

2010-01-28刘泽申《微型计算机》2010年1月上

光线追踪是什么?

光线追踪技术实际上是由几何光学通用技术衍生而来。它通过追踪光线与物体表面发生的交互作用,得到光线经过路径的模型。简单地说,3D技术里的光线追踪算法,就是先假设屏幕内的世界是真实的,显示器是个透明的玻璃,只要找到屏幕内能透过人眼的光线,加以追踪就能构建出完成的3D画面。

在真实世界里,光线投射到物体表面的时候,会出现三种情况。这就是光线的吸收、反射、折射。光线被反射到不同地方被选择性地吸收后,光谱就会随之改变。经过多次的折射和反射,光线就会进入我们的眼睛,然后被我们感知。光线追踪技术就是要计算出光线发出后经过一系列衰减再进入人眼时的情况。


光线追踪原理

在实际算法中,渲染引擎会为每个像素赋予一束光线,光线沿着直线传播,然后与场景中的各个物体交汇,根据开发者赋予这些物体的属性,光线的传播路径、颜色、强度都会发生变化,终所有的光线会在屏幕视点上汇聚,从而构建出我们所看到的3D世界。在光线追踪计算中,光线还被分门别类,其中主光线和光栅化系统中的Z-Buffer一样,是用来判断物体是否可见的。如果主光线不可见,那光线追踪引擎就会直接抛弃整条光线路径。如果主光线被判断为可见,那接下来光线追踪引擎还会计算其余的辅助光线。根据光线性质不同,辅助光线被分成了Shadow Rays(阴影光线)、Reflection Rays(反射光线)、Refraction Rays(折射光线)三大类别。在主光线完成可见度判别后,这三类光线就将完成剩下的包括色彩、透明度等操作。


典型的光线追踪渲染场景

值得一提的是,光线追踪算法虽然和真实世界的光线传递原理一致,但在光路上却是完全相反的。在现实世界中我们之所以看到物体,并非是我们眼睛发出光线,而是光线经由发光体,如灯泡发出的光线经过一系列的折射、反射后进入我们的眼睛。而光线追踪算法则是逆向追踪光线,模拟光线从我们的眼睛中反向发出,计算实际像素的显示情况。

分享到:

用户评论

用户名:

密码: