7.4 漫反射光

考虑图7.10所示的粗糙表面。当光线照射在这样一个表面上时,会在不同的随机方向上散开;我们将这种反射称为漫反射(diffuse reflection)。在我们的光照模型中模拟了灯光与表面之间的这种相互作用,我们约定线会在表面的各个方向上均匀散开;所以,无论观察点(眼睛的位置)在哪里,我们总能看到漫反射光。也就是,我们不需要考虑观察点的位置(即,漫反射光的计算与观察点的位置无关),无论观察点在哪里,我们总能看到表面上的点的颜色。

图7.10
图7.10  当照射一个漫反射表面时,入射光会在随机方向上散开。在显微镜下,很多物体表面都是粗糙的。

我们将漫反射光的计算过程分为两个部分。在第一部分中,我们指定一个入射光颜色和一个漫反射材质颜色。漫反射材质指定了表面所能反射和吸收的漫反射光的总量;它使用分量颜色乘法来实现。例如,表面反射50%的红光、100%的绿和 75%的蓝光,入射光是强度为80%的白光。那么,入射光颜色ld = (0.8, 0.8, 0.8),漫反射材质颜色md = (0.5, 1.0, 0.75);反射光的总量为:

D =ldmd = (0.8, 0.8, 0.8)⨂(0.5, 1.0, 0.75) = (0.4, 0.8, 0.6)

注意:表面上的漫反射材质可以变化;也就是,表面上的每个点可以有不同的漫反射材质颜色。例如,当渲染一个由沙滩、草地、土地和雪地构成的地形时,地形的每个部分反射和吸收的线数量是不一样的,所以材质颜色必须根据地形表面而变化。在本书的Direct3D光照实现中,我们为每个顶点指定一个不同的漫反射材质颜色。在光栅化阶段中,这些顶点属性会在三角形表面上的进行插值。通过一方式,三角形网格表面上的每个点都会得到一个漫反射材质颜色。我们直接引用兰伯特余弦定理(根据表面法线与光照向量之间的夹角来控制表面的受光强度)来实现漫反射光照计算。设ld入射光颜色,md为漫反射材质颜色,kd = max(Ln ,0),其中L是光线向量,n是表面法线。则,反射回来的漫反射光颜色为:

cd = kdldmd = kdD (公式7.1)

文件下载(已下载 602 次)

发布时间:2014/8/5 下午8:28:55  阅读次数:5043

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号