光线投射

光线投射(英文:ray casting)是彩现最基本的方法之一。概念是从眼睛处出发,对每个像素发射出一条光线,找到阻挡该光线路径的最近物体,即为眼睛通过该像素看到的物体。由于光线投射算法适用于任何可以被光线交叉的数学表面,因此相较于传统的扫描线算法,能更轻松地处理曲面和实体。

原理

光线投射采用了光线追踪的几何算法,从外部观察点开始建立几何模型,再逐点、逐线进行分析,将三维场景渲染为二维图像。具体的概念是将图像想像成一个屏风,每个屏风中的小方格代表一个像素。接着从眼睛处出发,对每个像素发射出一条光线,找到阻挡该光线路径的最近物体,即为眼睛通过该像素看到的物体。

当光线与物体交叉时,可以用几种不同的方法来计算交叉点的颜色。其中最简单的方法是用交叉点处物体的颜色表示该点的实际颜色;也可以用纹理对映的方法来确定;另一种更加复杂的方法是仅仅根据照明因数变更颜色值,而无需考虑与类比光源的关系。为了减少人为误差,可以对多条相邻方向的光线进行平均。

此外,也可以对光的特性进行大致的类比:简单计算从物体到观察点的光线。其他一些计算涉及到从光源到物体的入射角,以及根据光源的强度计算像素的亮度值。还有一些类比使用辐射着色算法绘制的照明结果,或者使用这两种资讯的组合。

应用

由于光线投射算法适用于任何可以被光线交叉的数学表面,能轻松处理曲面和实体,如锥体和球体,速度也更快。因此被广泛应用于对细节要求较低的即时类比场景,如三维电脑游戏和动画。